Пользовательское Выделение Vim (только работает с определенными типами файлов),

У меня есть это в моем vimrc:

"on will override defaults set.  Enable will allow you to set defaults."
syntax enable

...

"attempting to highlight specific keywords so it is easy to see in code."
"see help e410 for more info."
syn keyword JakeKeywords        Question TODO Answer JAKEHTTPS
highlight JakeKeywords cterm=bold term=bold ctermbg=black ctermfg=Blue

(Примечание: ради удобочитаемости я закончил все кавычки),

Я попытался вставить JAKEHTTPS ключевое слово в:

  • .java файлы
    • в комментариях
    • в коде
  • .xml файлы
    • в комментариях
    • в коде
  • .jak файлы (пользовательский формат, который я создал, посмотрите ниже),

Единственное место, что ключевое слово выделяется, находится в .jak.

Вопрос: Почему эти ключевые слова НЕ выделяют в коде Java или коде XML (и вероятно другой код также?

~/.vim/ftdetect/jak.vim:

syn region JakeSubtitle start=+==+ end=+==+
highlight JakeSubtitle ctermbg=black ctermfg=DarkMagenta

syn region JakeTitle start=+===+ end=+===+
highlight JakeTitle ctermbg=black ctermfg=yellow

Примечание: Я создал этот поток, но это стало слишком нарушенным, чтобы быть полезным.

1
задан 20.03.2017, 12:17

3 ответа

Для стандартных типов файлов теги синтаксиса очищены прежде, чем загрузить filetype.vim файл синтаксиса
Вы видите команду,

syntax clear
в начале java.vim и xml.vim файлов синтаксиса
Просто измените строки в vimrc следующим образом,
au bufread * syn keyword JakeKeywords        Question TODO Answer JAKEHTTPS
au bufread * highlight JakeKeywords cterm=bold term=bold ctermbg=black ctermfg=Blue
Это должно хорошо работать...
3
ответ дан 12.12.2019, 09:22

То, как Вы устанавливаете выделение, зависит от того, как Вы выполняете энергию. Мое предположение - Вы, работают gvim в gui.

Ваши настройки работают при выполнении энергии в терминале, но если Вы выполняете gvim, затем необходимо использовать guibg и guifg. Когда я использую настройки, Вы имеете выше и запускаете тест выделения в gvim, :so $VIMRUNTIME/syntax/hitest.vim, JakeKeywords не имеет никакого специального примененного форматирования. Когда я повторно выполняю тест, но вызываю энергию из командной строки (я нахожусь в WindowsXP cmd оболочка прямо сейчас), Ваш пример, который работает отлично пример JakeKeywords.

Когда я изменяюсь

highlight JakeKeywords cterm=bold term=bold ctermbg=black ctermfg=Blue

кому:

highlight JakeKeywords gui=bold guibg=black guifg=Blue

затем я получаю синий текст на черном фоне в gvim.

Если Вы хотите, чтобы это выделение было применено оба цветных терминала (как разделитель или наутилус) и gvim, необходимо установить выделение оба:

highlight JakeKeywords gui=bold cterm=bold term=bold ctermbg=black \
                       ctermfg=Blue guibg=black guifg=Blue
0
ответ дан 12.12.2019, 09:22

Это может быть вопросом ключевых слов, содержавших во всеобъемлющем регионе, или соответствовать области, которая обрабатывает все выделение. Например, если эти ключевые слова, которые Вы хотите выделенный, в регионе комментария, затем связанный файл синтаксиса настраивает выделение, которое относится ко всей строке комментария и не становится переопределенным ключевым словом, выделяющимся в рамках комментария. Вы уже знаете это, потому что строки комментария являются однородным цветом, и регулярное выделение ключевого слова не применяется в рамках комментариев.

Для решения проблемы выше, если это или что-то как он - проблема, необходимо искать java.vim файл синтаксиса и удостоверяется ключевое слово, которое Вы пытаетесь выделить, находится в, 'Содержит' пункт определений региона комментария (и/или все другие всеобъемлющие определения региона, в рамках которых Вы хотите выделенное ключевое слово).

Например, один регион комментария в моем файле синтаксиса для Java (java.vim) это:

syn region  javaComment      start="/\*"  end="\*/" contains=@javaCommentSpecial,javaTodo,@Spell

Необходимо было бы добавить ключевое слово JakeKeyWords к содержит пункт выше, если Вы хотите, чтобы те ключевые слова были выделены в регионах комментария. Или просто добавьте свои новые ключевые слова к javaToDo группа, которая уже создана для разоблачения со специальным выделением в рамках комментариев.

Не уверенный, что Вы делаете с JakeSubTitle и JakeTitle регионы Вы пытаетесь определить. Та же проблема с содержит, может относиться к ним. Кроме того, 'команда' соответствия синтаксиса - то, что Вы хотите использовать для выделения регионов, которые могут быть подобраны единственным шаблоном, 'регион' необходим только для более сложных областей (обычно мультилиния), который не может быть подобран единственным шаблоном.

1
ответ дан 12.12.2019, 09:22

Теги

Похожие вопросы