2012-02-27 57 views
2

命令我的文本東西塊像以下 -VIM宏未記錄運動在端

blah blah 1 blah blah 
blah 1 blah 1 blah 

欲每個I粘貼時間複製的n倍數量,但遞增整數(1以上) 。喜歡的東西 -

blah blah 1 blah blah 
blah 1 blah 1 blah 

blah blah 2 blah blah 
blah 2 blah 2 blah 

blah blah 3 blah blah 
blah 3 blah 3 blah 

我把光標放在塊的開始,並開始錄製到Reg一個與 '質量保證' 和類型「y2jp ^A J0宏^AW¯¯^A k0'。在英語中 - 複製並粘貼塊,遞增每個數字並返回到新粘貼塊的開頭,以便可以再次運行宏。

除了最後的'k0'部分外,一切都正常,它不會將光標移動到新粘貼塊的開始位置。任何人都可以指出我做錯了什麼?

編輯

當我運行提出了宏觀的你@sehe我獲得以下 -

等等等等1等等等等等等 1等等等等1 等等等等等等1 blahj0.w.yk0 等等1等等1等等

看起來vim在^ A之後仍然處於插入模式。
: -/

回答

4

我認爲有更好的方法來實現你正在做的事情,而且我沒有真正看過你的錯誤的細節,只是這裏是一個適用於我的宏:

2Yjp ^A j0.w.yk0

我覺得你在倒車正在做的事情(在頂部插入?) - 問題威力一直光標couldn別動了重新第一行(?沒有測試過)。

不管怎麼說,[email protected]後我得到:

blah blah 1 blah blah 
blah 1 blah 1 blah 
blah blah 2 blah blah 
blah 2 blah 2 blah 
blah blah 3 blah blah 
blah 3 blah 3 blah 
blah blah 4 blah blah 
blah 4 blah 4 blah 
blah blah 5 blah blah 
blah 5 blah 5 blah 
blah blah 6 blah blah 
blah 6 blah 6 blah 
blah blah 7 blah blah 
blah 7 blah 7 blah 
blah blah 8 blah blah 
blah 8 blah 8 blah 
blah blah 9 blah blah 
blah 9 blah 9 blah 
blah blah 10 blah blah 
blah 10 blah 10 blah 
blah blah 11 blah blah 
blah 11 blah 11 blah 
blah blah 12 blah blah 
blah 12 blah 12 blah 
blah blah 13 blah blah 
blah 13 blah 13 blah 
blah blah 14 blah blah 
blah 14 blah 14 blah 
blah blah 15 blah blah 
blah 15 blah 15 blah 
blah blah 16 blah blah 
blah 16 blah 16 blah 
blah blah 17 blah blah 
blah 17 blah 17 blah 
blah blah 18 blah blah 
blah 18 blah 18 blah 
blah blah 19 blah blah 
blah 19 blah 19 blah 
blah blah 20 blah blah 
blah 20 blah 20 blah 
blah blah 21 blah blah 
blah 21 blah 21 blah 
2

我不知道什麼是您使用的k0去錯了,但要得到光標回去,你可能會發現它更容易使用標記。例如:

2Yjpma ^A J0 ^AW¯¯^A`一個

+0

再次在粘貼文本的第一行之後顯示文本j0^AW^A'a。 – Raminder 2012-02-27 13:53:35

+0

@Raminder:難道你是複製/粘貼宏,並獲得「^」和「A」作爲單獨的字符,而不是Ctrl-a?然後「A」會讓你進入插入模式。 – kyoto 2012-02-27 13:59:07

+0

你說得對。有用 :) – Raminder 2012-02-29 13:14:57

0

爲什麼不:

p 
:,+2s/\d\+/\=1+submatch(0)/g "replaces digits by 1+value on all occurences till line + 2 
:-2,y "yanks from line - 2 till current line (=last line with replacement)