2

我正在尝试使用 ex 脚本(针对 vim 的 ex 实现)执行搜索/替换,如下所示:

ex -qc 'g/^[#][[:space:]]*$/d|x' file.txt

但是,当file.txt已经不包含匹配的内容时,脚本会挂起;当没有运行时-q,它还会显示以下错误:

E486: Pattern not found: ^[#][[:space:]]*$

如何构建此脚本以在失败时继续(或者更好地中止并立即退出),而不是等待用户输入?

由于可移植性限制,我正在使用ex支持sed -i(就地编辑支持是 sed 的 GNU 扩展,并非在所有平台上都可用)。

4

1 回答 1

3

向 vim 发送一个单独的退出命令-c 'q',它将在搜索/替换之后执行(适用于我的 vim 版本7.3.315):

ex -c 'g/^[#][[:space:]]*$/d|x' -c 'q' file.txt

还要注意ex似乎按照它们在 ARGV 中出现的顺序执行命令,所以:

ex -c 'q' -c 'g/^[#][[:space:]]*$/d|x' file.txt

在进行搜索/替换之前退出。

于 2013-05-13T16:09:07.350 回答