删除特定模式而不删除整行

时间:2014-04-05 08:03:41

标签: vim vi

假设我想删除源代码中的所有注释块而不删除它们所在的整行。 可以使用

实现这一目标
:%s/\/\*.*\*\//

命令。我在想,是否有针对此的特定删除命令,或者正在替换匹配模式的最佳方法?差异很可能不会很大,我只是好奇。

1 个答案:

答案 0 :(得分:1)

取而代之的确实是惯用的'删除这种模式'操作

:%s/pattern//g

如果要删除包含模式的所有行,就像在示例中一样,显而易见的解决方案是在模式周围添加通配符匹配。

:%s/.*pattern.*//

另一种方法是使用:global和普通模式或Ex命令。这两个实现了同样的目标:

:g/pattern/normal! S
:g/pattern/delete|put! _

顺便说一下,虽然我不建议在脚本或其他人可能看到的代码中使用缩写的命令名称,但我认为以交互方式使用它们是可以的。因此,我倾向于将这些命令缩写为:g/pattern/norm! S:g/pattern/d|pu!_