假设我的 .vimrc 中有以下内容:

au bufenter * RainbowParenthesesToggle

然而,我在一台陌生的机器上,我还没有安装我所有的插件。这意味着当我启动 Vim 时,我会收到以下错误消息:
E492: Not an editor command: RainbowParenthesesToggle

我如何防止这种情况发生,或者我想用 if 语句包装这些调用以避免在启动 Vim 时收到此错误消息?

最佳答案

压制

最简单的方法是通过 :silent! 抑制错误消息(注意 ! ):

:au bufenter * silent! RainbowParenthesesToggle

每次检查

它更干净(特别是对于在每个 BufEnter 上运行的 autocmd )以避免调用。可以使用 exists(':RainbowParenthesesToggle') == 2 检查命令是否存在。
:au bufenter * if exists(':RainbowParenthesesToggle') == 2 | RainbowParenthesesToggle | endif

避免定义

最好只检查一次,并完全避免定义 autocmd。问题是你的 ~/.vimrc 是在插件之前获得的!有两种方法可以解决这个问题:

1)在检查之前明确获取插件:
runtime! plugin/rainbowparentheses.vim
if exists(':RainbowParenthesesToggle') == 2
    au bufenter * RainbowParenthesesToggle
endif

2)将定义和条件移动到插件之后的位置。 ~/.vim/after/plugin/rainbowparentheses.vim 将是一个好地方。

关于vim - 如何避免 Vim 错误信息 "Not an editor command",我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22531336/

10-12 20:57
查看更多