Vim自定义语法突出显示:如何突出显示存储函数的变量(CoffeeScript)?

时间:2015-01-03 02:12:21

标签: vim coffeescript syntax-highlighting

我想在CoffeeScript代码中突出显示函数名称:

hightlight = ->

hightlight = (args) ->

不包括以下内容:

noHighlight ->

noHighlight =
  key:

如何使用自定义Vim语法声明实现此目的?

2 个答案:

答案 0 :(得分:2)

我是这样做的。假设你有vim-coffee-script,你应该编辑它syntax/coffee.vim(例如~/.vim/bundle/vim-coffee-script/syntax/coffee.vim如果你正在使用病原体)。

添加:

syn region coffeeFunction start=/\S\s*[a-zA-Z0-9_]\+ = \((.*) \)\?->/ end=// oneline transparent
syn match coffeeFunctionName /\S\s*[a-zA-Z0-9]\+ / contained containedin=coffeeFunction
hi def link coffeeFunctionName Identifier

这突出显示了函数定义,与突出显示类方法的方式相同。

绝对不完美,因为这是我第一次使用Vim的语法高亮,但它对我有用。大黑客正在使用syn region而不是syn match,因为后者会覆盖现有语法,我不知道如何防止这种情况。

答案 1 :(得分:1)

您需要找出导致突出显示的语法组。 :syn list显示所有活动组,但在安装SyntaxAttr.vim - Show syntax highlighting attributes of character under cursor插件时更容易。

如果您使用的语法脚本提供专用语法组(名为coffeeFunction),则更改突出显示就像放置

一样简单
:highlight link coffeeFunction Function

进入~/.vimrc。如果没有专用组,则必须扩展语法脚本(或要求脚本的作者执行)。面临的挑战是新定义必须与其他定义相适应(特别是关于contained=...关系。您也可以搜索不同的语法脚本.AFAIK,目前没有与Vim一起提供的CoffeeScript语法脚本,所以可能是那里的几个竞争版本。