2013-05-22 25 views
0

我有在Ubuntu 12.04我的〜/ vim的/语法夹中custom JavaScript语法文件,但是当我打开.js文件Vim是使用系统的语法来代替:Vim在加载系统的语法我的自定义语法之后,因此不被应用我的自定义语法

的输出:输出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文件?

+0

是什么让你相信,自定义语法不被设置正常吗? – FDinoff

回答

1

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

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

所以要让vim应用自定义语法规则,你不需要做任何事情,因为所有的文件都在正确的位置。

+0

你是对的。这两种语法的使用几乎完全相同的配色方案,所以我认为它不起作用 – Atomix

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 
+0

这是我使用的自定义语法文件:http://www.vim.org/scripts/script.php?script_id=1491 ,它有。我是否需要重新启动服务器或使其生效? – Atomix

+0

不,你不需要重新启动。你确定你的自定义语法没有被实际使用吗?你仍然会看到它载入最后一个,即使它所做的一切都是立即完成的。假设你有根,我会尝试移动最后一个,以确认没有它的情况下会发生不同的事情。 –