vimscript中的`syntax on`和`syntax enable`之间有区别吗?

时间:2015-10-27 23:41:52

标签: vim

在我的.vimrc文件中,我使用:

syntax on

今天,我正在浏览其他开发人员的一些.vimrc文件,我注意到一些使用:

syntax enabled

有区别吗?这些都只是使用不同的locution来实现相同的目标吗?

1 个答案:

答案 0 :(得分:35)

Vim声称

对于syntax on vs syntax enable,帮助文件声明

The ":syntax enable" command will keep your current color settings.  This
allows using ":highlight" commands to set your preferred colors before or
after using this command.  If you want Vim to overrule your settings with the
defaults, use: >
    :syntax on

我无法验证这些声明

我在Vim中看到的行为似乎与上述帮助声明不符。

在使用一些空的.vimrc进行本地测试并尝试使用onenable以及突出显示命令的位置后,我无法弄清楚Vim实际在做什么(我测试过了)使用highlight ColorColumn guibg=#331111set colorcolumn=80)。突出显示有时会被覆盖,有时不会。

只让Vim设置语法一次

我不再信任Vim,所以我只让语法设置一次,永远。这是我在.vimrc中的内容:

if !exists("g:syntax_on")
    syntax enable
endif

由于上述声明,我使用enable它不会覆盖您的设置,但启动Vim时似乎没有任何区别。

更多细节

您可以看到h g:syntax_on显示onenable来源同一个文件:

Details:
The ":syntax" commands are implemented by sourcing a file.  To see exactly how
this works, look in the file:
    command     file ~
    :syntax enable  $VIMRUNTIME/syntax/syntax.vim
    :syntax on      $VIMRUNTIME/syntax/syntax.vim

如果您感到好奇,g:syntax_on设置了$VIMRUNTIME/syntax/synload.vim

在没有插件/设置vim -u NONE的情况下运行Vim也不会加载任何语法文件。