2013-05-01 56 views
2

說我有兩個文本塊。一個是我的剪貼板:如何在vim的同一行數前插入多行?

one 
two 
three 

,另一種是在一個文件中我編輯在vim:

AAA 
BBB 
CCC 

我如何能在第二塊的前面插入第一個塊得到這個:

oneAAA 
twoBBB 
threeCCC 

我希望有辦法做到這一點在vim(一些涉及到可視塊模式?),但如果我能做到這一點與其他(* nix中)工具,我感興趣的是這一點。

當我寫完這個問題後,我意識到我可以通過使用谷歌電子表格並將塊粘貼爲相鄰列,然後將其粘貼回我的文件中來實現我正在尋找的內容。我仍然想知道vim是否可以使用。

+1

你可以使用我在這裏展示的功能:http://stackoverflow.com/questions/14860844/how-to-paste-a-block-while-creating-the-necessary-lines-to-give-room- for-the-blo/14861984#14861984 – 2013-05-01 18:09:20

回答

4

首先你只是在你的剪貼板中的東西粘貼到該文件,使文件的樣子:

AAA 
BBB 
CCC 

one 
two 
three 

然後ctrl-v列塊選擇一個,二生三,按xd

最後將光標移至第一個A,按P

我沒測試,但應該工作

+0

完美。我幾乎在那裏,但我選擇了我想要在可視模式下插入的塊,而不是可視塊模式,然後嘗試通過在可視塊中選擇目標塊的每一行的開始來插入。從像你說的視覺塊選擇開始,效果很好。謝謝。 – tubes 2013-05-01 18:08:02

+1

使用shift + i而不是x/d/p在每個選定行的前面插入某個文本。經常派上用場。 – 2013-05-01 18:30:25

2

使用我的UnconditionalPaste plugin,您可以簡單地將光標置於文本中的第一個A上,然後通過"+gbP從剪貼板("+)進行粘貼; gbP是插件提供的特殊映射之一,它強制粘貼源爲,塊狀爲,就好像您從Vogue中以<C-V>的視覺塊選擇一樣。

+0

你用7分鐘擊敗了我的帖子!我甚至給你的插件留言。我應該更清楚地知道我不能在這樣的主題上發佈Ingo Karkat。 – 2013-05-01 18:28:38

+0

@PeterRincker好吧,我很幸運,和往常一樣,你提供了大量有用的背景信息,而我只是無恥地宣傳我的插件:-)保持良好的工作! – 2013-05-01 18:36:36

+0

非常感謝您使用UnconditionalPaste插件的客氣話和值得我使用的功能。我發現它非常方便。 – 2013-05-01 18:53:00

3

寄存器中的文本的類型爲:line-wise,character-wiseblock-wise。當你將文本放入一個寄存器然後粘貼它時,它會保持它的「類型」。所以,如果你用yy取出一行,然後做一個粘貼,p,文本將按行顯示。這通常是完美的,但有一段時間,將寄存器類型更改爲其他內容變得很方便。在你的例子中,我想你已經按照行方式複製了文本,但是你想以塊的方式粘貼它。您可以通過setreg()函數「重新投射」寄存器。鑄造

實例註冊a阻止明智

:call setreg('a', @a, "b") 

例鑄造無名寄存器逐塊

:call setreg('"', @@, "b") 

重新鑄造的寄存器中之後的可以做一個正常的pP。您可以使用l作爲行式,c作爲字符式使用,b作爲塊式使用。

但是如果你只是要粘貼東西線明智的,如果你發現自己做很多寄存器在你的日常工作流程鑄造它可能會有所幫助使用英戈Karkat的UnconditionalPaste插件往往是比較容易,只需使用:put

相關問題