:%s/one/two/
將two
取代one
的第一發生。有沒有一種簡單的方法來代替最後發生呢?替換最後一次出現在一行
我不能假設它的旁邊結束行,並沒有什麼圍繞最後出現的獨特的「搶」來使用,與此類似:
one two three one two three one two one two one two ...
:%s/one/two/
將two
取代one
的第一發生。有沒有一種簡單的方法來代替最後發生呢?替換最後一次出現在一行
我不能假設它的旁邊結束行,並沒有什麼圍繞最後出現的獨特的「搶」來使用,與此類似:
one two three one two three one two one two one two ...
最簡單的方法是,允許在比賽的前任意文本,並指定使用\zs
匹配的區域:
:%s/.*\zsone/two/
因爲*是貪婪,這應該工作:
:%s/\(.*\)one/\1two/
漂亮整潔:) – Amir 2017-03-15 19:46:01
有時貪婪可以被利用。 – 2018-02-17 00:25:25
如果你想在一行替換詞,你還可以說:
$?one<CR>cetwo<ESC>
哪會去行($
)的結束和找到向後字one
(?one<CR>
)。然後,它會變化(c
)一切都交給這個詞的年底(e
)以字符串two
。當然你也可以用E
,f
,F
等變化e
。你甚至可以說c17l
改變接下來的17個字符。
我喜歡這個解決方案的簡單性。我一直在敲打我的腦袋試圖使用負前瞻在vim最後兩個小時,但這個工作馬上!謝謝!! – flangofas 2014-07-30 13:07:29