2013-11-23 59 views
-2

代碼確定的部分,我有這個問題,我調整我做了一個代碼,我有這樣的結構:如何快速編輯內部不同類似的路線

Apple1 = Fruit("ss","ss",[0.1,0.4],'w') 
PineApple = Fruit("ss","ss",[0.315,0.4],'w') 
Banana = Fruit("ss","ss",[0.315,0.280],'w') 
... 
... 

而不是"ss"我想輸入更多信息,如"Golden Delicious"。目前我只是刪除"ss"點擊它,然後用我想插入的信息替換它。我確信有一個更快的方法來做到這一點,我嘗試了一些VIM宏,但我無法弄清楚如何「原始輸入」我的數據。 我試着簡單地用Spyder代替它,但速度很慢,因爲我必須每次單擊替換,而VIM對於我嘗試的內容都是一樣的。 然後,我不知道如何'w'後插入別的東西...... 這只是爲了更好地瞭解這個問題的最終輸出結果的例子:

Apple1 = Fruit("Golden Delicous","red",[0.1,0.4],'w') 
    PineApple = Fruit("Ananas comosus","green",[0.315,0.4],'w') 
    Banana = Fruit(" Cavendish banana","yellow",[0.315,0.280],'w') 
    ... 
    ... 

我重新制定了一個問題:這是改變"ss"更快的方式,目前我點擊「ss」delate「ss」並寫出例如「Golden Delicous」,但速度很慢。我想要的是,每一個ss編輯要求我插入一些東西來取代單個ss

例如第一行ss在第一行:我想替換它輸入其他內容,例如「Golden Delicous」second ss在第一行我想替換它輸入somethingelse例如red。第一行ss我想用s.e替換它。例如Ananas comosus第二行ss我想用s.e替換第二行。例如​​等。

我確定這裏有一個答案,但我找不到它! 請如果你投票解釋我爲什麼這樣可以改善它!

+0

你在vim試過':%s/ss/Golden Delicious/g'嗎? – thefourtheye

+0

@thefourtheye用「金冠」替代所有的「ss」,所以香蕉也是一個「金色美味」!不過謝謝! –

+0

香蕉甚至沒有單一的... – thefourtheye

回答

3

據我所知,你想替換「ss」的數據沒有規律的結構,所以你需要手工輸入。

在Vim中你會做這樣的:

  1. 將光標置於第一個「SS」,然後按*然後N
  2. ce,輸入新數據(例如「Golden Delicious」),然後按Escape離開插入模式。
  3. n跳轉到下一個「ss」實例。

隨意重複步驟2和3。

查閱:h *:h n瞭解更多信息。

+0

您可以將這些步驟記錄在寄存器中,並執行'999 @@'或任何大數字以同時替換所有這些步驟。 – Birei

+0

+1,但我會用'/ ss '替換第1步,以便不離開主頁。 –

+0

@Birei - 每次更換都有所不同。 (afaik)宏不停地要求輸入。 –

1

您可以使用搜索整個文件從填充有替代數據陣列替換其值全部"ss"字符串的函數:

function! ChangeSS() 
    let ss1 = ['Golden Delicous', 'Ananas comosus', 'Cavendish banana'] 
    let ss2 = ['red', 'green', 'yellow'] 

    call cursor(1, 1) 
    let l = "ss2" 
    while search('"ss"', 'W') > 0 
     if l == "ss1" 
      let l = "ss2" 
     else 
      let l = "ss1" 
     endif 
     execute 'normal ci"' . remove({l}, 0) 
    endwhile 
endfunction 

它使用的參考變量(l),該交換機,用以數組要從中提取數據。ss1第一次出現"ss",第二次出現ss2

運行它想:

:call ChangeSS() 

這(在我的測試)產量:

Apple1 = Fruit("Golden Delicous","red",[0.1,0.4],'w') 
PineApple = Fruit("Ananas comosus","green",[0.315,0.4],'w') 
Banana = Fruit("Cavendish banana","yellow",[0.315,0.280],'w') 
+0

非常感謝!我唯一的問題是,我必須查看上下文(例如,「水果」的名稱)才能理解插入的信息!也許我可以在另一個窗口中打開文件的副本,以便在編譯ss1和ss2列表時向下滾動它。謝謝! –

+0

@GM:但是你想達到什麼並不遵循任何指導原則,這是非常隨意的。計算機還不夠聰明,無法閱讀你的大腦,對不起。這是我解決問題的最佳方法。 – Birei

+0

請不要覺得不安我只是在尋求解決一個以最好的方式發生在我身上的問題。我肯定不像看起來那麼武斷。我希望你的答案投票足以證明我是如何感謝你的幫助! –

3

我會做這樣的:

:%s/ss/\=input('Replacement: ')/gc 

此查詢你每次出現。使用/c標誌,顯示甚至在循環過程中更新(以每次發生額外回答y爲代價);沒有國旗,你需要跟蹤你自己的位置。

+0

+1感謝這是目前我找到2步解決方案的最佳答案,spyder看到[此視頻](http://www.youtube。 com/watch?v = urMXHljlTl8&feature = youtu.be),但我認爲在VIM中,您的解決方案效率更高。 –