我正在尝试在vim上实现简单的替换,但是做不对。我需要删除整个文件中与模式匹配的所有行。该模式为“something*”,意思是“something”后跟任何字符直到行末。
我尝试过
有什么想法吗?
干杯!
我尝试过
:%s/pattern*\n//g
和:%s/pattern*$//g
,但都没有成功。有什么想法吗?
干杯!
:g
代替:substitute
。:g/pattern/d
将删除所有与模式匹配的行。
至于模式,您的模式将匹配 patter
、pattern
、patternn
等等。使用通配符 .
来匹配任何字符。因此,您的正则表达式应该是 pattern.*$
--- 但如果您希望完全删除这些行,则 :g/pattern/d
就可以很好地完成任务。
:g
是 ex
魔法的另一半。 :) 它是一个真正的隐藏强大工具,可以做出有趣的技巧。 - mike3996g/pattern/d _
(注意下划线)的作用与s/.*pattern.*\n\=//g
完全相同,而您的版本将破坏未命名、编号(1-9)和可能一些其他寄存器中的值。 - ZyX根据您使用的vim
版本,您可能会遇到我要提出的问题:
:%s/pattern.*^V^M//g
对于^V
,直接按下ctrl-v
,然后再按ENTER
(^M)键。 ^V
可以让你输入一个字面上的字符而不被解释。