Java 8的一项新功能是lambda支持,从而创建了箭头运算符
->
。 Vim在* .java文件中不能将其识别为有效的运算符。这样,它以亮红色突出显示此运算符,以引起对“语法错误”的注意。 (当然,这确实是有效的语法。)有没有办法更新Vim允许的运算符的“字典”和/或修复语法突出显示以避免此问题?
:version
的前两行状态:VIM-Vi IMproved 7.4(2013年8月10日,2014年1月2日19:39:32编译)
包含的修补程序:1-52
#1 楼
2016年更新Vim语法文件已在v7.4.649中进行了更新(2015年3月);因此,如果有此修补程序,则无需执行此操作。
解决此问题的最简单方法是下载较新的
syntax/java.vim
文件并将其放在~/.vim/syntax/java.vim
中,这样它将覆盖默认的$VIMRUNTIME/syntax/java.vim
。您还需要符号链接html.vim
才能使它正常工作,因为java.vim
取决于以下内容:是否具有:ln -s /usr/share/vim/vim74/syntax/html.vim ~/.vim/syntax/
请参阅
/usr/share/vim/vim74/syntax/java.vim
部分?这会导致错误突出显示。您可以通过添加
[^-]->
文件(,该文件具有相同的模式减去lambda语法)来覆盖此规则:
syn match javaError "<<<\|\.\.\|=>\|||=\|&&=\|[^-]->\|\*\/"
为了获得奖励积分,我们可以添加以下行来突出显示此功能:
syn clear javaError
syn match javaError "<<<\|\.\.\|=>\|||=\|&&=\|\*\/"
考虑提交错误报告。
~/.vim/after/syntax/java.vim
解释了如何。似乎有更多(新?)结构被突出显示为错误,例如:help bug-reports
中的...
。#2 楼
无需编辑默认语法文件。 vim-java插件对此提供了支持。像其他任何插件一样进行安装,lambda运算符将正确突出显示。评论
你确定吗?因为我看不到任何代码,而且我看到的唯一提交仅从javaError中删除了->消息,消息为“如果它是lambda符号则不匹配javaError”(但不会将突出显示添加为函数) 。
–马丁·图尔诺伊(Martin Tournoij)
16-3-22在18:56
@Caspetsmoker你是对的。只需删除错误消息。但是我更喜欢这样。
–adelarsq
16 Mar 23 '16 at 14:10
我看到运行时文件已于2015年3月更新,并且您链接到的存储库没有该更新引入的许多修复程序。仅供参考:-)
–马丁·图尔诺伊(Martin Tournoij)
16 Mar 23 '16 at 14:18
@Carpetsmoker不错。确实按预期工作。谢谢=)
–adelarsq
16 Mar 23 '16 at 14:28
评论
奖励积分的匹配不检查是否启用了java_highlight_functions。如果您对一致性不满意,则可能应该在syn match调用之前进行检查:if exist(“ java_highlight_functions”)| syn匹配javaFuncDef“ [^-]->” |万一
–扎卡里·默里(Zachary Murray)
15年7月14日在23:25