2013-05-30 20 views
0

我在vim中獲得了3行不同長度的文本塊。我從另一個外部應用程序(如word或notepad)獲得另外3行數據塊,我想在所有這3行上添加粘貼。我在這個問題上發現了一些帖子https://superuser.com/questions/300362/vim-how-to-paste-a-block-of-text-at-the-end-of-multiple-linescut and paste multiple lines in vim(也Paste multiple times),但只有當內容最初從vim中抽出時才起作用。 clipboard=unnamed已設置。gvim從外部應用程序粘貼到多行上

這裏是我想達到什麼樣的一個例子(從第一篇文章;-D被盜):從外部應用程序

//Comment1 
//Comment2 
//Comment3 

數據塊

foo = 1; 
bar = 2; 
baz = 3; 

原始數據

foo = 1; //Comment1 
bar = 2; //Comment2 
baz = 3; //Comment3 

結果

回答

1

您可以使用我的UnconditionalPaste plugin。它提供了一個gbp映射,強制粘貼爲分段,無論寄存器被抽出的模式如何。 (它還具有其他與字符和線條粘貼相關的映射,以及更多!)

使用它,將光標置於第一行的末尾,並使用"+gbp

+0

謝謝你的另一個偉大的插件。第二次嘗試。重要提示:不能設置'clipboard = unnamed'。否則它不會工作! – Sensei

+0

當線條有不同的長度並且第一條線條不是最長的時候,我需要做些什麼才能使其工作?而從MS Word粘貼的FYI不起作用。我想行結局是搞砸了或什麼的。 – Sensei

+0

我對'clipboard = unnamed'沒有任何問題;因此,我甚至不必使用'「+」前綴! –

2

在Vim中,被抽出的文本可以是三種:「characterwise」,「linewise」或「blockwise」。儘管Vimscript可以改變寄存器內容的種類,但它肯定不是很實用(:help setreg())。

最簡單的將是:

  • 粘貼的地方高於或低於原始數據
  • <C-v>進入可視塊模式和選擇的意見是塊
  • d刪除這些評論它
  • 將光標移動到原始數據的第一行
  • 點擊p粘貼「塊狀」
+0

這也適用非常感謝您不使用插件,只需要額外兩個步驟即可。還有+1提醒我註冊格式。 – Sensei

0

這件事我會做(<CR> =輸入密鑰,<ctrl-v>控制+ V):

e: external_application.c<CR> 
<ctrl-v>G$"py 
e original_data.c<CR> 
gg$"pp 
+0

第一行和第三行做了什麼? – Sensei

相關問題