如何避免Vim错误消息"不是编辑器命令"

时间:2014-03-20 11:19:07

标签: vim

让我说我的.vimrc中有以下内容:

au bufenter * RainbowParenthesesToggle

但是我在一台不熟悉的机器上,我还没有安装所有的插件。这意味着当我启动Vim时,我收到以下错误消息:

E492: Not an editor command: RainbowParenthesesToggle

我如何防范这种情况,或者我希望将这些调用包装起来以避免在启动Vim时收到此错误消息?

2 个答案:

答案 0 :(得分:7)

抑制

最简单的方法是通过: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将是一个很好的地方。

答案 1 :(得分:1)

您可以使用exists()检查命令:

au bufenter * if exists(":RainbowParenthesesToggle") | RainbowParenthesesToggle | endif

(我自己没有定义这样的命令,所以我可以验证这是否有效。:))