在vim中扩展Javascript语法高亮显示

Extending Javascript syntax highlighting in vim

本文关键字:语法 高亮 显示 Javascript 扩展 vim      更新时间:2023-09-26

我想扩展我的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的语法高亮要么覆盖它,要么没有被读取。

EDIT:如果我不得不猜测发生的事情是,当它看着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文件类型,则需要在ftplugin/chino.vim中添加:setfiletype chino,然后在syntax/chino.vim中包含默认的javascript语法(在初始检查之后,在设置b:current_syntax之前):

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