在Groovy中Vim错误的语法突出显示

tle*_*tko 5 vim groovy syntax-highlighting vim-syntax-highlighting

当我/在键入一些算术表达式(如val1 / val2)时执行单斜杠()时,我的vim将其视为多行(/*)的注释.结果如下:

在此输入图像描述

我现在可以通过键入;/该行的末尾(它关闭注释)来逃避它,但它仍然很烦人,我希望我的vim行为正常:).

我已经尝试使用另一个vim语法突出显示groovy包,我已经:filetype plugin off在我的.vimrc中尝试过,我已经尝试用我的设置清除vim并重新安装它,问题仍然存在.

tle*_*tko 11

解:

正如@cfrick所指出的那样,vim(我的版本:7.4)将'/'视为groovy中正则表达式的开头.解决方案是编辑

/usr/share/vim/vim74/syntax/groovy.vim
Run Code Online (Sandbox Code Playgroud)

在260-261线附近

syn region groovyString           start='/[^/]'  end='/' contains=groovySpecialChar,groovyRegexChar,groovyELExpr
Run Code Online (Sandbox Code Playgroud)

只需将开头改为

start='/[^*/]'
Run Code Online (Sandbox Code Playgroud)

编辑:将正则表达式中的空格更改为*,如以下评论中建议的@calid

start ='/ [^ /]'

(那是在那里添加空间.)

现在看起来好多了.另一方面,它现在不会突出以空格开头的正则表达式,但对我来说没关系.至少它比它好多了.

这有助于找到我的解决方案: 在Vim 7.4中使用Groovy语法高亮显示

  • `/ <space>`对于一个groovy slashy字符串是完全有效的,实际上这应该改为`'/ [^*/]'`因为`/*`是当前中断的多行注释开始,并且`/*`作为正则表达式的开头毫无意义. (2认同)