Groovy中的Vim错误语法高亮显示

Groovy中的Vim错误语法高亮显示,vim,groovy,syntax-highlighting,vim-syntax-highlighting,Vim,Groovy,Syntax Highlighting,Vim Syntax Highlighting,当我在键入一些算术表达式(如val1/val2)时使用单斜杠(/)时,我的vim将其视为多行注释(/*)。结果如下: 我现在可以通过键入来逃避它/在该行的末尾(关闭注释),但它仍然很烦人,我希望我的vim能够正常工作:) 我尝试过为groovy使用另一个vim语法突出显示包,我尝试过在my.vimrc中关闭文件类型插件,我尝试过用我的设置清除vim并重新安装,但问题仍然存在。解决方案: 正如@cfrick所指出的,vim(我的版本:7.4)将“/”视为groovy中正则表达式的开头。解决办法是

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

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


我尝试过为groovy使用另一个vim语法突出显示包,我尝试过在my.vimrc中关闭文件类型插件,我尝试过用我的设置清除vim并重新安装,但问题仍然存在。

解决方案:

正如@cfrick所指出的,vim(我的版本:7.4)将“/”视为groovy中正则表达式的开头。解决办法是编辑

/usr/share/vim/vim74/syntax/groovy.vim
在260-261线附近有

syn region groovyString           start='/[^/]'  end='/' contains=groovySpecialChar,groovyRegexChar,groovyELExpr
把开始改成

start='/[^*/]'
编辑:将regexp中的空格改为*作为@calid在下面的注释中的建议

开始='/[^/]'

(即在此处添加空格。)

现在看起来好多了。另一方面,它现在不会突出显示以空格开头的regexp,但对我来说没关系。至少比以前好多了

这对mi找到我的解决方案有很大帮助:

我刚刚签入了vim 7.3.762,一切正常。可能有一些插件中断突出显示。您希望在vimrc中的
:filetype plugin indent on
。这是否发生在
vim-u NONE
?我可以用7.4.273确认-因此这可能是一个regeression,您应该报告它。乍一看,它可能是
4339:22fa3049e934
,并更改为
groovyELExpr
,所以vim现在认为
启动了一个regexp。@cfrick您是对的:)。这就是解决办法。但是,我不知道如何投票支持你:(FDinoff,vim-u NONE确实阻止了这个bug,但它也阻止了任何语法突出显示:)。正如参考问题中已经提到的,你是否愿意报告这个问题?由于其他语言(如perl)对regexp也有类似的语法,所以可能会有希望。是的,我报告过,其余的现在由vim_dev决定,也许在未来的版本中,它将在默认情况下解决。更新-我向groovy.vim语法文件的维护者发送了一封电子邮件,因此,希望在下一个版本中可以解决这一问题。
/
对于groovy slashy字符串是完全有效的,实际上应该改为
'/[^*/]'
,因为
/*
是当前中断的多行注释开头,
/*
作为正则表达式的开头毫无意义。
'/[^\*/]'
最适合我。它不仅修复了OP给出的划分示例,还修复了文档注释中由HTML结束标记引起的划分示例。它还突出显示正则表达式字符串。