Как определить мои собственные цвета подсветки для использования с matchadd () в vim?


Недавно я нашел Этот маленький кусочек кода для моего .vimrc

if has("autocmd")
  " Highlight TODO, FIXME, NOTE, etc.
  if v:version > 701
    autocmd Syntax * call matchadd('Todo',  'Wzs(TODO|FIXME|CHANGED|XXX|BUG|HACK)')
    autocmd Syntax * call matchadd('Debug', 'Wzs(NOTE|INFO|IDEA)')
  endif
endif

В основном, это позволяет мне определять ключевые слова, которые соответствуют различным выделениям (Todo и Debug-имена цветов).

Есть ли способ, которым я могу определить свои собственные схемы окраски и дать им имена? В частности, я хочу иметь 3 метки: TODO1, TODO2 и TODO3. Идея заключается в том, что TODO3 имеет более низкий приоритет, чем TODO1, и поэтому выделяется более светлым оттенком.

Если Я не могу определить свою собственную окраску, где я могу найти список названий цветов, которые я могу использовать?

1 3

1 ответ:

Если вы не хотите использовать цвета темы по умолчанию, вот решение:

" Define autocmd for some highlighting *before* the colorscheme is loaded
augroup VimrcColors
au!
  autocmd ColorScheme * highlight ExtraWhitespace ctermbg=darkgreen guibg=#444444
  autocmd ColorScheme * highlight Tab             ctermbg=darkblue  guibg=darkblue
augroup END

И далее (это должно быть после):

" Load color scheme
colorscheme yourscheme

Определения цвета следуют формату:

autocmd ColorScheme * highlight <ColorName> ctermbg=<TerminalBackgroundColour> guibg=<GuiBackgroundColour> ctermfg=<TerminalFontColor> guifg=<GuiFontColour>

, где цвета cterm должны исходить из предопределенного списка (Подробнее см. :help cterm-colors). Цвета графического интерфейса могут быть любыми шестнадцатеричными.