2
我失去了一些微妙的和愚蠢的這一點。我有一個簡短的vim腳本。在這裏面,我試圖做的事:替代Vimscript中失敗
s/.*_____.*/\=repeat('=', 78)/
(這是確切的代碼。)
當我在正常模式下做/\v.*____.*
,我能順利找到模式(不止一次)。當我在正常模式下執行這個替換時,它會成功。
我敢肯定,我失去了一些東西,只要某處逸出字符。請賜教!
我失去了一些微妙的和愚蠢的這一點。我有一個簡短的vim腳本。在這裏面,我試圖做的事:替代Vimscript中失敗
s/.*_____.*/\=repeat('=', 78)/
(這是確切的代碼。)
當我在正常模式下做/\v.*____.*
,我能順利找到模式(不止一次)。當我在正常模式下執行這個替換時,它會成功。
我敢肯定,我失去了一些東西,只要某處逸出字符。請賜教!
甲s/
命令僅覆蓋當前行;這不是你通常想要的。
的最簡單的方法是使用%s/...
處理整個緩衝器。但是,您的映射/命令可能需要支持任意範圍。爲此,:call
通常會爲每行調用一次用戶定義的函數,除非您定義了它自己處理範圍的函數。詳細信息請參見:help function-range-example
。
您是否知道您的替代僅覆蓋了當前行;你需要使用'%s ...'將其應用到整個緩衝區(或者將你的函數單獨應用到所有行)。 –
OMG ...我是個白癡。不,完全錯過了我以某種方式放棄了%。你想回答這個問題,我可以接受嗎? – Mike
不客氣,可能會發生。很高興我能幫上忙。在此背景下,我添加了一些更多背景信息的答案。 –