2016-12-15 17 views
0

我使用vim替換文本的第二塊,我試圖從這樣的文件更改:複製的文本塊,並用它使用vim

Block 1                
2.41257378185832E+000 T 2.41257378189357E+000 
5.195589598713250E-002 T 5.195589598548488E-002 
-4.492502140894707E-002 T -4.492502141060845E-002 
3.875548288763534E-002 T 3.875548288654486E-002 
Block 2                
0.000000000000000E+000 F 0.000000000000000E+000 
0.000000000000000E+000 F 0.000000000000000E+000 
0.000000000000000E+000 F 0.000000000000000E+000 
0.000000000000000E+000 F 0.000000000000000E+000 

到這樣的文件一個:

Block 1 
0.000000000000000E+000 F 0.000000000000000E+000 
0.000000000000000E+000 F 0.000000000000000E+000 
0.000000000000000E+000 F 0.000000000000000E+000 
0.000000000000000E+000 F 0.000000000000000E+000 
Block 2                
0.000000000000000E+000 F 0.000000000000000E+000 
0.000000000000000E+000 F 0.000000000000000E+000 
0.000000000000000E+000 F 0.000000000000000E+000 
0.000000000000000E+000 F 0.000000000000000E+000 

我一直在尋找問題的答案,但我沒有找到一個簡單的方法。 我發現什麼是我可以:

  • 選擇第一個塊:CTRL-V移動 「唉
  • 選擇第二塊:CTRL-V動çCTRL-O」 AP

但是這種方法有點慢,因爲我必須在很多塊中完成這個操作,而不僅僅是一個。 有沒有辦法粘貼文本,同時將它替換爲下面的文本,而不必選擇將要被廢棄的文本以及將被替換的文本?

+0

「 ? – Kent

+0

在我的例子中,塊是包含字母T或F的4行組。 – Ivan

+0

Block1.2文本也在我的文件中。 – Ivan

回答

0
  • 移動到要CP塊的第一線,按"a4Y
  • :let @q='4dd"ap'
  • 移動到要替換塊的第一行,按@q
0

你問題不是很精確,所以這裏有一些一般提示:

  • If followi ng塊的大小與最初選擇的大小相同,則可以在新塊的開始處使用1v來選擇它。
  • 貼滿選擇有失去粘貼內容的副作用;即如果您再次需要這個,您必須重新選擇原件並再次抽出。我的ReplaceWithRegister提供了一個二合一的gr命令,用於將{運動} /文本對象覆蓋的文本,整行或當前選擇的內容替換爲寄存器的內容;舊文本被刪除到黑洞寄存器中,即它已經消失。它透明地處理許多轉角情況,並允許通過標準.命令快速重複。
  • 如果您有多個此類塊要處理,可能會有用。以這樣一種方式記錄它,作爲最後一個動作,光標移動到下一個塊。這種方式,可以反覆調用它(或者甚至把它變成遞歸宏其自身重複直到緩衝器的末尾。
  • 或者,:global命令可以用來搜索(例如,塊的開始),然後在那裏執行命令;也可以通過:normal執行正常模式下的命令
相關問題