如何在不等待用户输入的情况下处理ex脚本中的错误?

时间:2013-05-13 15:48:48

标签: vim vi ex

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

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

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

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

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

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

1 个答案:

答案 0 :(得分: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

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