在vim搜索中使用OR替换多个可能的模式

时间:2014-08-12 18:56:57

标签: vim

我经常发现自己使用的东西是:

sed -ri 's/<\/(abc|def ghi|j klm)>//g' someFile.html

对多个可能的模式执行替换,在这种情况下,是一个要删除的关闭html标记,这样可以节省三次我想删除的三个结束标记的时间和精力。

有没有办法在vim的cli上使用替换?我还没有找到办法做到这一点,但是如果能够以原生方式完成,那么去vim或从vim内部运行sed会更有效率。

2 个答案:

答案 0 :(得分:4)

是的,您根本不需要使用外部程序:

:%s@</\(foo\|bar\|baz\)>@@g

答案 1 :(得分:3)

您可以使用silent !命令从vim内部静默执行shell命令:

:silent !sed -ri 's/<\/(abc|def ghi|j klm)>//g' %

这将在shell中静默执行命令(它不会让你离开vim看到任何shell输出)。 %表示当前缓冲区名称。然后Vim会通知您正在编辑的文件已被更改,并会询问您是否要加载更改,按l加载并显示sed shell命令的新更改。