Лучшая подсветка синтаксиса для Java в Vim?


16

Я обнаружил, что у Vim фантастическая подсветка синтаксиса с моими предпочтительными цветовыми схемами для Ruby и Python, но всякий раз, когда мне нужно написать код на Java, я вообще даже не включаю подсветку.

Как видите, ключевые слова подсвечиваются, но для скобок или методов подсветка отсутствует. В Sublime Text (гораздо менее любимом мной редакторе) я вижу гораздо лучшую подсветку. Есть курсив для имен классов и выделение для математических операторов. Vim выглядит скудно в сравнении.

Есть ли какой-нибудь способ, каким-либо образом получить эту сочную Sublime Text-style подсветку на Vim?


Вы пробовали использовать винтажный режим в Sublime Text? Он изменяет все привязки клавиш к тем, которые использует vi (m), но все же допускает мощные функции ST2, такие как улучшенная подсветка синтаксиса и редактирование множественного выбора.
MattDMo

2
У меня действительно включен Vintage Mode в ST2, но я все же предпочитаю Vim, потому что я могу использовать его в терминале с несколькими открытыми панелями tmux, чтобы я мог одновременно подключиться к моей удаленной машине ssh, не выходя из редактора более чем на секунду.
kunaicode

да, есть небольшая проблема с использованием графического редактора ...
MattDMo

Ответы:


0

Взгляните на плагин cSyntaxAfter . Это выдвигает на первый план операторов и так далее.

Другой вариант - отредактировать syntax/java.vimскрипт и добавить подсветку для Operatorгруппы. Посмотрите в syntax/pascal.vimкачестве примера.

Если вы хотите использовать курсив для имен классов, это должно быть возможно, если файл синтаксиса Java распознает их как группу, и я думаю, что это так. Кажется, что имена классов в JavaTypedefгруппе.

Затем вам нужно будет определить новое выделение для этой группы. Это будет означать удаление линии

JavaHiLink javaTypedef                Typedef

из файла синтаксиса, и добавление нового. Ниже я повторно использую объявление hightlight для Type, с которым связан Typedef. Я изменил termс underlineна italic.

Вы должны поместить следующее в ваш java.vimсинтаксический файл.

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

Спасибо за помощь, но есть ли плагин или плагины для заглавных букв имен классов?
kunaicode

@ kunaicode: Не то, что я знаю. Подсветка синтаксиса не меняет смысла кода. Капитализация делает. Лично я бы сразу удалил плагин, который бы автоматически менял код, который я написал.
Роланд Смит

Я прошу прощения за путаницу - я имел в виду, курсив имена классов. Не использовать. Сожалею.
kunaicode

@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

Я использую цветовую схему base16-default в Vim, и по какой-то причине она плохо определяет цвета для 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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.