2014-02-13 63 views
7

我現在偶爾遇到Vim中這種類型的編輯問題。在Vim中,如何在塊模式下切換,但在正常模式下粘貼,插入爲新行?

我有一個表格中的文本格式,我想變成一個列表。

前:

AAA BBB 
AAA BBB 
AAA BBB 

CCC DDD 
CCC DDD 
CCC DDD 

後:

AAA 
AAA 
AAA 

BBB 
BBB 
BBB 

CCC 
CCC 
CCC 

DDD 
DDD 
DDD 

當然不是微不足道作爲本例。該塊可以多毛的內容,更大的和不一致的行數等

我現在就這樣做似乎是這樣一個黑客位的:

  1. 從塊右列中選擇一個塊模式: CTRL-q在Windows版本中選擇左上角。
    d切塊。
  2. 請注意塊中有多少行,然後手動添加多條空行。
  3. 轉到我創建的新空白區域的左上角。 SHIFT+p將塊粘貼到此區域。

步驟是粗略的部分。

做一個正常的非塊剪切或複製將始終粘貼到「新」行。一種「插入」或「追加」操作。做塊剪切或複製通常會以一種「覆蓋」模式粘貼。

有沒有更好的方法來複制或切入「塊模式」,但粘貼在「插入/附加模式」?

回答

6

ex command:put將總是粘貼寄存器行明智。

用可視塊模式剪切文本塊,就像以前一樣,然後執行:put而不是p

如果您想以更多方式「粘貼」粘貼,請使用@Ingo Karkat的插件。

欲瞭解更多信息,請參閱:

:h pu 
+0

這看起來是最簡潔的,並且對我所做的事情完美無缺。 – hippietrail

1

UnconditionalPaste pluginglp去面向行粘貼)命令,將粘貼寄存器的內容爲新的生產線,不管他們是如何抽出(例如,在逐塊模式)。

它還有其他一些有用的命令會影響寄存器的粘貼方式。

2

可以阻止明智選擇BBB一部分,你是怎麼做到,並通過d例如切斷後,運行此命令:

call setreg('"',@",'V') 

,那麼你可以粘貼到目標線,它會變成你的塊「向下」逐行排列。

如果您確實需要經常這樣做,您可以創建映射。

+0

是反向也可以? 'setr​​eg'很神祕。 – hippietrail

相關問題