我想用突出显示程序中常用的某些功能来扩展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
时已经具有语法,因此退出。 最佳答案
您的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
中包含默认的javascript语法(在进行初步检查之后,设置b:current_syntax
):runtime! syntax/javascript.vim syntax/javascript/*.vim