我想在一個打開的緩衝區的每一行,從我的光標到緩衝區結尾,在vim中運行一個我剛剛記錄在寄存器「x
」中的宏。我怎麼做?重播一個vim宏,直到緩衝區結束
我知道我可以重播宏n次:
[email protected]
...或只需按住@
,直到我到達的最後一行,但我想剛打了幾個按鍵,並完成它。
在此先感謝。
我想在一個打開的緩衝區的每一行,從我的光標到緩衝區結尾,在vim中運行一個我剛剛記錄在寄存器「x
」中的宏。我怎麼做?重播一個vim宏,直到緩衝區結束
我知道我可以重播宏n次:
[email protected]
...或只需按住@
,直到我到達的最後一行,但我想剛打了幾個按鍵,並完成它。
在此先感謝。
[email protected]
,除非你有一個非常大的緩衝...
爲什麼不'%:正常@ x'或'1,$:normal @ x'? – 2010-01-04 13:11:12
這絕對是更優雅的解決方案 - 我猜'99999 @ x'只是當你匆忙時想出的東西:) – Peter 2010-01-04 20:44:32
9999999 @ x不會在最後一行運行很多次,除非你有999999行嗎? – 2010-10-29 15:14:33
優秀。這種方法比'%:normal'方法更有用,因爲它支持宏內的任何行移動,所以在行的形式不同時非常有用。我發現創建宏'a'來定義動作更容易,然後讓宏'b'做遞歸位,即qb @ a @ bq。 – 2014-09-24 09:46:13
如果您的宏涉及搜索,請避免此操作,因爲它將從頂部繼續。 'ctrl-c'停止,如果發生的話! – 2014-11-20 15:55:30
@IainBallard,':set nowrapscan'使它失敗並在到達文件末尾時停止。 – ericbn 2016-08-18 21:51:07
你可以這樣做(在命令模式)
:%normal @x
15 @ X在Windows GVIM不工作 – 2013-04-28 04:55:47