vim: 防止 :exe 在出错后退出
vim: Prevent :exe from quitting after error
我有一个单行错误检查 vim 命令,如下所示。它不是问题的直接部分,而是作为一个例子,所以请随意忽略它:
:'<,'>g/foo{.*}/exe "norm! mxf{lvt}y/\(foo{\)\@!\<C-R>\"\<enter>yy'xP"
解释如下:
:'<,'>g/foo{.*}/
- 运行 在所有带有 foo{...}
的突出显示行上执行以下命令
exe "norm!
- 开始在每行上执行普通模式命令
mx
- 记录当前行
f{lvt}y
- 复制 foo{...}
大括号内的所有内容
/\(foo{\)\@!\<C-R>\"\<enter>
- 向前搜索到 foo{...}
花括号内的字符串在 foo
[=50 内的 not 的实例=]
yy'xP"
- 复制该行,返回 x
,然后粘贴到上面。
这基本上是一个错误检查命令,用于查看每次一个术语被 foo{
包裹时,总是 被 foo 包裹。但是,exe
在 /
(正向搜索)没有找到任何东西的第一种情况下退出。我不希望发生这种情况。
如何使 exe
和 :g
即使在 exe
命令中出现错误也能继续? 我试过 :silent
,但这并不能保存它。
我宁愿将其保留为一行,但函数是我可以接受的第二个选项。
仅 :silent
是不够的。您需要使用 :silent!
。来自 :help :silent
(强调我的):
When [!] is added, error messages will also be
skipped, and commands and mappings will not be aborted
when an error is detected.
我有一个单行错误检查 vim 命令,如下所示。它不是问题的直接部分,而是作为一个例子,所以请随意忽略它:
:'<,'>g/foo{.*}/exe "norm! mxf{lvt}y/\(foo{\)\@!\<C-R>\"\<enter>yy'xP"
解释如下:
:'<,'>g/foo{.*}/
- 运行 在所有带有foo{...}
的突出显示行上执行以下命令
exe "norm!
- 开始在每行上执行普通模式命令mx
- 记录当前行f{lvt}y
- 复制foo{...}
大括号内的所有内容
/\(foo{\)\@!\<C-R>\"\<enter>
- 向前搜索到foo{...}
花括号内的字符串在foo
[=50 内的 not 的实例=]yy'xP"
- 复制该行,返回x
,然后粘贴到上面。
这基本上是一个错误检查命令,用于查看每次一个术语被 foo{
包裹时,总是 被 foo 包裹。但是,exe
在 /
(正向搜索)没有找到任何东西的第一种情况下退出。我不希望发生这种情况。
如何使 exe
和 :g
即使在 exe
命令中出现错误也能继续? 我试过 :silent
,但这并不能保存它。
我宁愿将其保留为一行,但函数是我可以接受的第二个选项。
:silent
是不够的。您需要使用 :silent!
。来自 :help :silent
(强调我的):
When [!] is added, error messages will also be skipped, and commands and mappings will not be aborted when an error is detected.