Vim在我的自定义语法之后加载系统语法,因此我的自定义语法没有被应用

时间:2013-05-22 03:47:56

标签: vim vim-plugin

我在ubuntu 12.04上的〜/ .vim / syntax文件夹中有一个custom javascript语法文件,但是当我在vim中打开一个.js文件时,使用的是系统语法:

输出:scriptnames

  1: /usr/share/vim/vimrc
  2: /usr/share/vim/vim73/debian.vim
  3: /usr/share/vim/vim73/syntax/syntax.vim
  4: /usr/share/vim/vim73/syntax/synload.vim
  5: /usr/share/vim/vim73/syntax/syncolor.vim
  6: ~/.vim/filetype.vim
  7: /usr/share/vim/vim73/filetype.vim
  8: /usr/share/vim/vim73/plugin/getscriptPlugin.vim
  9: /usr/share/vim/vim73/plugin/gzip.vim
 10: /usr/share/vim/vim73/plugin/matchparen.vim
 11: /usr/share/vim/vim73/plugin/netrwPlugin.vim
 12: /usr/share/vim/vim73/plugin/rrhelper.vim
 13: /usr/share/vim/vim73/plugin/spellfile.vim
 14: /usr/share/vim/vim73/plugin/tarPlugin.vim
 15: /usr/share/vim/vim73/plugin/tohtml.vim
 16: /usr/share/vim/vim73/plugin/vimballPlugin.vim
 17: /usr/share/vim/vim73/plugin/zipPlugin.vim
 18: ~/.vim/syntax/javascript.vim
 19: /usr/share/vim/vim73/syntax/javascript.vim

如何将自定义语法应用于* .js文件?

2 个答案:

答案 0 :(得分:1)

您将语法文件放在~/.vim/syntax/javascript.vim的适当位置。系统语法文件显示其来源的原因。但是,文件中的前几行检查是否有其他语法文件来源。由于已设置了当前语法,因此系统语法文件将退出而不执行任何操作。

因此首先获取自定义的(并且应用了所有突出显示)。然后系统一个来源。这就是为什么你在:scriptnames

的输出中都看到了这两个原因

因此,为了让vim应用自定义语法规则,您无需执行任何操作,因为所有文件都在正确的位置。

答案 1 :(得分:1)

在我的.../vim73/syntax/javascript.vim中,我在开头看到以下代码:

if !exists("main_syntax")
  if version < 600
    syntax clear
  elseif exists("b:current_syntax")
    finish
  endif
  let main_syntax = 'javascript'
endif

最后:

let b:current_syntax = "javascript"
if main_syntax == 'javascript'
  unlet main_syntax
endif

我建议将let b:current_syntax = "javascript"添加到自定义语法文件的末尾。事实上,我在语法目录中的许多文件中检查exists("b:current_syntax"),所以你可能应该在你的开头添加一个检查:

if exists("b:current_syntax")
    finish
endif