1

我想通过突出显示我的程序中常用的某些功能来扩展我的 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()

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

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

4

1 回答 1

6

ftplugin/chino.vim将语法设置为javascript,但您定义的额外突出显示用于新的chino语法。那不适合在一起。

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

syn match chinoKeywords "ChinoView"
hi def link chinoKeywords Function

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

runtime! syntax/javascript.vim syntax/javascript/*.vim
于 2013-04-26T06:39:27.450 回答