Vim中Java的语法突出显示更好吗?


16

我发现Vim可以使用我喜欢的Ruby和Python配色方案来突出显示语法,但是每当我需要编写Java代码时,就好像我一开始都没有打开突出显示功能。

如您所见,关键字突出显示,但括号或方法未突出显示。在Sublime Text(我不太喜欢的编辑器)中,突出显示的要好得多。类名以斜体显示,数学运算符以高亮显示。相比之下,Vim显得稀疏。

是否有任何方法可以在Vim上获得甜美的Sublime Text样式突出显示?


您是否尝试过在Sublime Text中使用Vintage模式?它将所有键绑定更改为vi(m)的用法,但仍允许ST2强大的功能,例如更好的语法突出显示和多选编辑。
MattDMo

2
我确实在ST2中启用了老式模式,但是我仍然更喜欢Vim,因为我可以在终端中使用它,同时打开多个tmux窗格,这样我就可以同时放入远程机器,而不必离开编辑器一秒钟以上。
kunaicode 2013年

是的,使用GUI编辑器会有一点挫折...
MattDMo

Answers:


0

看看cSyntaxAfter插件。它突出显示了操作员等。

另一个选项是编辑syntax/java.vim脚本并为Operator组添加突出显示。看syntax/pascal.vim一个例子。

您想对类名使用斜体,如果java语法文件将它们识别为一个组,那应该是可能的,而我认为可以。类别名称似乎在JavaTypedef组中。

然后,您必须为该组定义一个新的突出显示。那将意味着删除线

JavaHiLink javaTypedef                Typedef

从语法文件中添加一个新的。下面,我为Type重新使用了hightlight声明,这是Typedef链接到的。我term从更改underlineitalic

您应该将以下内容放在您的java.vim语法文件中。

hi javaTypedef term=italic cterm=NONE ctermfg=LightGreen ctermbg=NONE gui=bold guifg=#60ff60 guibg=NONE

感谢您的帮助,但是是否有任何一个或多个用于大写类名的插件?
kunaicode

@kunaicode:我不知道。语法高亮不会改变代码的含义。大写确实。我个人会立即删除一个插件,该插件会自动更改我编写的代码。
罗兰·史密斯

我的意思了confusion--我,道歉斜体类名。不大写。抱歉。
2013年

@kunaicode:请参阅更新的答案。
罗兰·史密斯

2

似乎根本就没有丰富的语法文件。

但是我们可以从绑定的语法文件中挤出更多一点:

let java_highlight_functions = 1
let java_highlight_all = 1
" If you are trying this at runtime, you need to reload the syntax file
set filetype=java

" Some more highlights, in addition to those suggested by cmcginty
highlight link javaScopeDecl Statement
highlight link javaType Type
highlight link javaDocTags PreProc

第一个把戏来自这里

如果有人制作了更丰富的Java语法文件,我们应该将其添加到vim-polyglot


1

我在Vim中使用base16-default配色方案,由于某种原因,它在为Java定义颜色方面做得不好。添加以下行将有助于部分解决该问题:

" Java: 'new', 'instanceof'
highlight Operator ctermfg=5  guifg=#d175bc
" Java: 'this', 'super'
highlight Typedef ctermfg=5  guifg=#d175bc
" Java: 'void', 'int', 'double'
highlight Type ctermfg=4  guifg=#69b7d3
" literal numbers
highlight Number term=bold ctermfg=16 gui=bold guifg=#d2d22d
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.