【问题标题】:Extending Javascript syntax highlighting in vim在 vim 中扩展 Javascript 语法高亮显示
【发布时间】:2013-04-25 20:48:17
【问题描述】:

我想扩展我的 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 时,它已经有了语法,所以它退出了。

【问题讨论】:

  • 您能否检查:syn list chinoKeywords 是否输出任何内容。如果不是,则意味着您的同步匹配没有生效。
  • 是的,它说No such highlight group name: chinoKeywords。我也尝试过syn keyword chinoKeywords ChinoView,但这也不起作用。
  • 您可以尝试将syn match chinoKeywords "ChinoView"hi def link chinoKeywords Function 添加到s:DetectJS() 而不是您的syntax/chino.vim。 (在setfiletype javascript 之后)

标签: javascript vim syntax-highlighting


【解决方案1】:

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

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

syn match chinoKeywords "ChinoView"
hi def link chinoKeywords Function

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

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

【讨论】:

  • 我已经在使用插件来扩展我的 javascript 突出显示。有没有在不编辑该插件的.vim 文件的情况下添加额外的突出显示?
  • 正如我所说,~/.vim/after/syntax/javascript.vim 源自原始语法脚本。试着把你的补充放在那里。
  • 因为我使用的是 Janus,所以我所要做的就是在我的 vim-chino 文件夹中创建一个语法文件夹,名称为 javascript.vim,然后在其中添加:syn match chinoKeywords "ChinoView"hi def link chinoKeywords Function。感谢您的帮助!
  • 很高兴您找到了解决方案!许多人不喜欢像 Janus 这样的发行版,因为它增加了复杂性。
猜你喜欢
  • 2010-09-08
  • 2016-05-07
  • 2016-08-16
  • 2015-04-24
  • 2023-03-05
  • 1970-01-01
  • 2019-01-25
  • 2012-12-04
  • 2011-06-03
相关资源
最近更新 更多