Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vim 如何在不等待用户输入的情况下处理ex脚本中的错误?_Vim_Vi_Ex - Fatal编程技术网

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发送一个单独的退出命

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

但是,当
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