Vim 如何在不等待用户输入的情况下处理ex脚本中的错误?
我正在尝试使用ex脚本执行搜索/替换(针对vim的ex实现),如下所示: 但是,当Vim 如何在不等待用户输入的情况下处理ex脚本中的错误?,vim,vi,ex,Vim,Vi,Ex,我正在尝试使用ex脚本执行搜索/替换(针对vim的ex实现),如下所示: 但是,当file.txt已经不包含匹配的内容时,脚本将挂起;在没有-q的情况下运行时,它还显示以下错误: E486: Pattern not found: ^[#][[:space:]]*$ 如何构建此脚本以在出现故障时继续(或者更好地说,中止并立即退出),而不是等待用户输入 由于可移植性限制,我使用ex支持sed-I(就地编辑支持是sed的GNU扩展,并非在所有平台上都可用)。使用-c'q'向vim发送一个单独的退出命
file.txt
已经不包含匹配的内容时,脚本将挂起;在没有-q
的情况下运行时,它还显示以下错误:
E486: Pattern not found: ^[#][[:space:]]*$
如何构建此脚本以在出现故障时继续(或者更好地说,中止并立即退出),而不是等待用户输入
由于可移植性限制,我使用
ex
支持sed-I
(就地编辑支持是sed的GNU扩展,并非在所有平台上都可用)。使用-c'q'
向vim发送一个单独的退出命令,它将在搜索/替换后执行(适用于我的vim版本7.3.315
):
另请注意,ex
会按照命令在ARGV中出现的顺序执行命令,因此:
ex -c 'q' -c 'g/^[#][[:space:]]*$/d|x' file.txt
在执行搜索/替换之前退出 您可以尝试对整行执行替换,而不是
d
。它将允许您使用/e
标志。
ex -c 'g/^[#][[:space:]]*$/d|x' -c 'q' file.txt
ex -c 'q' -c 'g/^[#][[:space:]]*$/d|x' file.txt