Vim搜索匹配的模式并删除至行尾

47

我想在一个文本文件中搜索特定的模式。如果出现了这个模式,那么这一行后面的内容就不再需要,可以删除。

我尝试使用以下命令,但目前为止都没有成功。

:%s/{pattern}/d$

:g/{pattern}/d$

如果有任何建议,将不胜感激。

4个回答

81

你觉得:%s/{pattern}.*//这个命令会生效吗?


我尝试了以下内容来删除整个文件中以下行中“\”后面的所有内容。示例行包含:test black brown blue \c\d\k - - :%s/\.*// - Stryker
难道不应该是 :%s/\\\\.*//(反斜杠需要转义)吗? - mirod
这也是我的想法,但有趣的是它确实有效。你的解决方案也行。已经测试过了。 - Stryker
1
你的版本会在单个反斜杠后删除所有内容,所以它可以用来删除双反斜杠后的所有内容。但是它可能会删除你不想删除的东西。 - mirod
我正在重新尝试使用vim,这简直让我大开眼界。 - Andres Felipe

39

或者,以下内容也可以工作

:g/{pattern}/normal nd$

对于你想要的,我会选择mirod的建议。我发表的内容稍微更加灵活,但在类似情况下可能会很有用。

解释:

对于每一行,匹配模式后执行以下普通模式命令'nd$'。将光标移到该行开头,'n'跳转到匹配的模式上,'d$'删除至该行末尾。


4
您也可以使用norm nD,因为 Dd$ 同义。 - Conner

3

要替换一个模式和其他任何东西,请使用正则表达式通配符.*

:1,$s/pattern.*//g

-1
%s/\\(replay-pattern-later\\) pattern2/\1/gc

这将重复 pattern1 但排除 pattern2。使用 "/gc" 全局应用(继续保持)并提示每个出现。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接