我正試圖在vim上實現一個簡單的替換,但不能正確使用它。我需要刪除整個文件中與模式匹配的所有行。模式是「某事*」,意思是「某事」,隨後任何東西直到行尾。 我試過:%s/pattern*\n//g
和:%s/pattern*$//g
沒有成功。 任何想法?vim:用no行代替行模式
乾杯!
我正試圖在vim上實現一個簡單的替換,但不能正確使用它。我需要刪除整個文件中與模式匹配的所有行。模式是「某事*」,意思是「某事」,隨後任何東西直到行尾。 我試過:%s/pattern*\n//g
和:%s/pattern*$//g
沒有成功。 任何想法?vim:用no行代替行模式
乾杯!
使用:g
而不是:substitute
。
:g/pattern/d
將刪除所有與模式匹配的行。
至於模式,你的將匹配patter
,pattern
,patternn
等。使用通配符.
來匹配任何字符。所以你的正則表達式應該是pattern.*$
---但是如果你想完全刪除這些行,那麼:g/pattern/d
就行了。
取決於vim
版本你使用,你可能有什麼,我要提出的麻煩:
:%s/pattern.*^V^M//g
對於^V
,硬是打ctrl-v
,其次是ENTER
(^ M)鍵。 ^V
可讓您在不解釋角色的情況下輸入文字。
點的意思是「除了換行符之外的任何符號」,所以不需要使用這樣的集合。 – ZyX 2011-05-05 17:39:20
好點。把它改回到我以前的樣子。 – 2011-05-05 18:38:24
僅供參考:*適用於您模式中的前一個字符,因此在您的情況下,它將匹配零個或多個n。 – 2011-05-05 08:51:48
對,我總是對shell擴展字符感到困惑:/ – brafales 2011-10-18 07:11:13