1

几乎每个 VIM 配色方案中都有这个片段:

if exists("syntax_on")
  syntax reset
endif

这也被列为在各种教程等中放入颜色方案的“推荐”事物。

但是,我已经对两者之间的区别进行了很多实验,并且只是简单的:

syntax reset

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

如果真是这样,那if exists("syntax_on")守卫的目的是什么?是不是因为以前版本的 VIM 需要这样做,但至少在 7.3 中不再需要?还是我缺少一些微妙的角落案例?

4

1 回答 1

3

syntax_on未定义时,我们不需要运行syntax reset它与:

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

它使vim速度更快。

于 2012-10-21T03:59:43.930 回答