0

我在 ubuntu 12.04 上的 ~/.vim/syntax 文件夹中有一个自定义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 文件?

4

2 回答 2

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
于 2013-05-22T03:56:30.230 回答
1

您已将语法文件放置在正确的位置,即~/.vim/syntax/javascript.vim. 系统语法文件显示其来源的原因。然而,文件中的前几行检查是否有其他语法文件来源。由于已经设置了当前语法,系统语法文件不做任何事情就退出。

因此,首先获取自定义的(并应用了所有突出显示)。然后系统一采购。这就是为什么您在输出中看到两者的原因:scriptnames

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

于 2013-05-22T03:51:12.983 回答