2012-09-19 36 views
2

我失去了一些微妙的和愚蠢的這一點。我有一個簡短的vim腳本。在這裏面,我試圖做的事:替代Vimscript中失敗

s/.*_____.*/\=repeat('=', 78)/ 

(這是確切的代碼。)

當我在正常模式下做/\v.*____.*,我能順利找到模式(不止一次)。當我在正常模式下執行這個替換時,它會成功。

我敢肯定,我失去了一些東西,只要某處逸出字符。請賜教!

+4

您是否知道您的替代僅覆蓋了當前行;你需要使用'%s ...'將其應用到整個緩衝區(或者將你的函數單獨應用到所有行)。 –

+0

OMG ...我是個白癡。不,完全錯過了我以某種方式放棄了%。你想回答這個問題,我可以接受嗎? – Mike

+0

不客氣,可能會發生。很高興我能幫上忙。在此背景下,我添加了一些更多背景信息的答案。 –

回答

1

s/命令僅覆蓋當前行;這不是你通常想要的。

的最簡單的方法是使用%s/...處理整個緩衝器。但是,您的映射/命令可能需要支持任意範圍。爲此,:call通常會爲每行調用一次用戶定義的函數,除非您定義了它自己處理範圍的函數。詳細信息請參見:help function-range-example