2014-08-28 69 views
1

我有超過40000點的記錄是這樣的:VIM:如何複製一個記錄

------ 
18 
1,5,0.33 
6,10,0.34 
11,15,0.36 
16,20,0.37 
21,25,0.40 
26,30,0.44 
------ 

而且我想改變這樣的:

------ 
18 1,5,0.33 
18 6,10,0.34 
18 11,15,0.36 
18 16,20,0.37 
18 21,25,0.40 
18 26,30,0.44 
------ 

知道了:

  • 第一個數字之後的行數是可變的,但是總是> 1
  • 我知道錄製宏,所以我想錄制一個並播放它40000次。我只是想從用戶的角度來看我必須鍵入
+1

你嘗試過什麼?你會如何手動解決這個問題?這樣,你幾乎在那裏;這對於一個可靠的宏而言只是一小步。 – 2014-08-28 08:57:54

+0

我只是不知道如何通過''(是'Ctrl + r')粘貼像LK解釋他的回答 – 2014-08-28 09:10:14

回答

1

下列順序應該做的伎倆

dd<cr> 
:%norm I<c-r>*<bck> <cr> 

其中<cr>是回車和<c-r>是Ctrl + R

哪個鍵就知道

細分如下

  • dd刪除包含字符的第一行acter你想插入
  • :%norm對文件的其餘部分執行正常的命令
  • I負責插入行的前面。
  • <c-r>*粘貼刪除的第一行內容,包括換行符。
  • <bck> <cr>清理換行,並添加一個空格

如果要鍵入它,然後:

  • 向下vey向下
  • Ctrl鍵v
  • /^-最多
  • I按Ctrlr*Backspace鍵

說明:

  • 轉到第一個數字:向下v:選擇模式; e去到單詞的末尾
  • 複製:y
  • 可視模式逐塊:按Ctrlv
  • 搜索與-然後年初增長第一行:/^-最多
  • 插入模式複製到所有行並粘貼當前緩衝區:ICtrlr*
+0

謝謝,完美! – 2014-08-28 09:09:02

1

另一種選擇:

DJ 
:%s/^/<c-r>"/
+0

+1啊,這回答了我關於'dd'包括換行符的問題。 tx – 2014-08-28 09:27:51

+0

我編輯了LK的答案,以添加我剛剛應用於記錄的解決方案。感謝您的解決方案! – 2014-08-28 09:29:10

+0

@OlivierPons - 我的回覆中的'dd'可以被'DJ'取代,所以你不需要退格。 – 2014-08-28 09:32:19

相關問題