Vim set color для вкладок и пробелов listchars
Используя концепцию кода ниже в VIM
Как сделать вкладки светло-серым фоном и пробелами синим фоном
" part of ~/.vimrc
" highlight tabs and trailing spaces
set listchars=tab:>-,trail:-
set list
Ответы
Ответ 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/