Подтвердить что ты не робот

Vim set color для вкладок и пробелов listchars

Используя концепцию кода ниже в VIM Как сделать вкладки светло-серым фоном и пробелами синим фоном

" part of ~/.vimrc
" highlight tabs and trailing spaces
set listchars=tab:>-,trail:-
set list
4b9b3361

Ответ 1

Если вы используете эти параметры в своем ~/.vimrc, вы наверняка прочитали :help 'list' и :help 'listchars', но из вашего вопроса это не совсем понятно, если вы заметили последние две строки :help 'listchars':

The "NonText" highlighting will be used for "eol", "extends" and
"precedes".  "SpecialKey" for "nbsp", "tab" and "trail".

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

Ответ 2

Вы не можете, по крайней мере, не так просто, что на 100% правильно.

Как сказал @romainl, Vim предлагает только одну выделенную группу для всех типов listchar, представляющих символы, а именно: SpecialKey.

Обходная реализация @Kent имеет несколько недостатков:

  • Он работает только для первого/текущего окна; вам понадобится :autocmd, чтобы определить его для новых окон.
  • Он не учитывает, действительно ли 'list' установлено; привязка к его изменениям напрямую не возможна.
  • Он сжимает слоты :match; это можно предотвратить с помощью matchadd(), но его использование более сложное.

Итак, подумайте, действительно ли эта функция стоит того.

Ответ 3

это один из способов:

сначала создайте две hi-группы:

:hi GroupA ctermbg=blue ctermfg=.. guibg=...
:hi GroupB ctermbg=gray ctermfg=.. guibg=..

затем

:match GroupA / \+$/
:2match GroupB /\t/