我想在一個寄存器中抽出一行:"{register}y
但不覆蓋寄存器中的內容。我經常需要在寄存器中複製不連續的行,並且我希望有時使用像堆棧這樣的寄存器。如何將行添加到vim寄存器而不覆蓋它
例子:
line1
line2
line3
我想複製line1
,通過將其上的光標,並進入"ay
,那麼回事line3
做"ay
。然後,當我將要做"ap
,BOTH line1
AND line3
將被粘貼。
這可能沒有插件?有插件?
我想在一個寄存器中抽出一行:"{register}y
但不覆蓋寄存器中的內容。我經常需要在寄存器中複製不連續的行,並且我希望有時使用像堆棧這樣的寄存器。如何將行添加到vim寄存器而不覆蓋它
例子:
line1
line2
line3
我想複製line1
,通過將其上的光標,並進入"ay
,那麼回事line3
做"ay
。然後,當我將要做"ap
,BOTH line1
AND line3
將被粘貼。
這可能沒有插件?有插件?
只是爲了擴大MarkB的反應,你知道,你也可以使用標記來選擇文本塊爲你猛拉?
轉到要插入的塊的第一行,並在選擇一個字母作爲標記後輸入標記命令。
ma (entered in command mode, i.e. no colon)
然後去要抽出並輸入命令塊的底部:
:'a,.ya A
這個命令的意思採取從包含我的標記行的文本塊稱爲達當前行並將其放入緩衝區a中。與MarkB提及的規則相同,使用小寫緩衝區名稱來覆蓋緩衝區。使用大寫緩衝區名稱追加到緩衝區。所以在這種情況下,這將附加到緩衝區a的內容。
N.B.用於標記的「a」與用於選擇註冊的「a」無關。 (AFAIK,但YMMV)
順便說一句'a(撇號a)是指包含標記a的行。 `a(反引號a)是指當你輸入ma時光標下的字符。
`ad`b (also entered in command mode)
是有用的,因爲它會刪除打上標記一到字符只是之前,你已經打上標記B的字符的字符之間的文本。
非常適合製作文件頂部定義的快速列表。 – 2011-11-24 06:40:16