在vim中扩展Javascript语法突出显示

时间:2013-04-25 20:48:17

标签: javascript vim syntax-highlighting

我想扩展我的JS语法高亮,突出显示我的程序中常用的某些函数。我正在使用janus来保持我的所有插件的顺序。现在我有一个名为vim-chino的文件,然后在那里我有一个syntax文件夹和一个ftdetect文件夹。我都有一个chino.vim文件。这是我的syntax/chino.vim文件:

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


syn match chinoKeywords "ChinoView"
hi def link chinoKeywords Function


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

在我的ftdetect/chino.vim我有:

function! s:DetectJS()
    if getline(1) =~# '^#!.*/bin/env\s\+node\>'
        setfiletype javascript
    endif
endfunction
autocmd BufNewFile,BufRead * call s:DetectJS()

我希望在任何javascript文件中突出显示ChinoView。我觉得JS的语法突出显示要么覆盖它,要么就是没有读取它。

编辑:如果我不得不猜测发生了什么事情,当它看到b:current_syntax时,它已经有了语法,所以它退出了。

1 个答案:

答案 0 :(得分:4)

您的ftplugin/chino.vim将语法设置为javascript,但您定义的额外突出显示是针对新的 chino 语法。这不合适。

如果您只想在所有 Javascript中突出显示额外的关键字,您可以让默认的Vim检测发生,并将这些行添加到after/syntax/javascript.vim

syn match chinoKeywords "ChinoView"
hi def link chinoKeywords Function

但是,如果要根据文件的shebang行定义不同的 chino 文件类型,则需要在:setfiletype chinoftplugin/chino.vim,然后包含默认的javascript syntax/chino.vim中的语法(在初始检查之后,在设置b:current_syntax之前):

runtime! syntax/javascript.vim syntax/javascript/*.vim