在VIM colorschemes中`if exists(“syntax_on”)`守卫的原因是什么?

时间:2012-10-21 03:41:34

标签: vim color-scheme

几乎每个VIM colorscheme都有这个片段:

if exists("syntax_on")
  syntax reset
endif

这也被列为“推荐”的东西,可以在各种教程等中加入colorschemes。

然而,我已经尝试了相当多的区别,只是一个简单的:

syntax reset

我找不到任何区别。如果启用了语法,则此命令正确执行通常的语法重置魔术,但如果语法关闭,则它似乎没有任何效果,或者给出任何错误。更重要的是,阅读VIM手册关于语法高亮和颜色方案的整个部分,如果没有设置“syntax_on”,我看不出任何原因,为什么普通的,无人看守的syntax reset会有害。

如果确实如此,if exists("syntax_on")后卫的目的是什么?是因为以前版本的VIM曾经需要它,但至少7.3不再需要它吗?或者是否有一些我遗漏的微妙角落?

1 个答案:

答案 0 :(得分:3)

如果未定义syntax_on,我们无需运行syntax reset,它与以下内容相同:

g:syntax_cmd = 'reset'
runtime! syntax/syncolor.vim

它使vim更快。