1

У меня есть это в моем 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

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

3 ответа3

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
Это должно работать нормально ...
1

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

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

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

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

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

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

0

То, как вы устанавливаете выделение, зависит от того, как вы используете vim. Я думаю, вы запускаете gvim в графическом интерфейсе.

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

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

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

в

highlight JakeKeywords gui=bold guibg=black guifg=Blue

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

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

highlight JakeKeywords gui=bold cterm=bold term=bold ctermbg=black \
                       ctermfg=Blue guibg=black guifg=Blue

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .