Мне бы хотелось, чтобы в моем терминальном vim было хорошее и приятное отображение пробела. Это позволило бы мне удалить их перед закрытием файла.
Я знаю, что этот вопрос довольно популярен, и я уже нашел десятки ответов на SO. К сожалению, я не нашел удовлетворительного еще ...
Поэтому я постараюсь обобщить собранную информацию и найденные решения.
Решение 1. Вручную выделите конечные пробелы
highlight ExtraWhitespace ctermbg=red guibg=red
match ExtraWhitespace /\s\+$/
autocmd BufWinEnter * match ExtraWhitespace /\s\+$/
autocmd InsertEnter * match ExtraWhitespace /\s\+\%#\@<!$/
autocmd InsertLeave * match ExtraWhitespace /\s\+$/
autocmd BufWinLeave * call clearmatches()
Плюсы:
- Легко использовать
- Быстрый
- Совместим с
cursorline
Минусы:
- Выбранный цвет не совместим с другими цветовыми схемами, поскольку для цвета вручную установлено значение
red
- Большие красные фоновые блоки не очень эстетичны
Решение 2. Использование функции списка
set list
set listchars+=trail:◦
Плюсы:
- Легко использовать
- Быстрый
Минусы:
- Проблема, если
:set cursorline
включена - Выделенный цвет для
list/trail
не настраивается. Должен быть таким же, как и другие списки
Решение 3. Использование функции скрытия
syn match WhiteSpace "\s\+$" containedin=ALL conceal cchar=◦
set conceallevel=2
set concealcursor=nv
highlight Conceal ctermfg=red
Плюсы:
- Красивее, чем первое решение
Минусы:
- Фон не совпадает с фоном курсора
- Может мешать другим скрытым правилам
- Выбранный цвет не всегда совместим с цветовой схемой
- Не совместим со старой версией Vim
Мой вопрос
Какое из перечисленных решений является наиболее подходящим с точки зрения производительности и совместимости, и как я могу получить все плюсы и ни одного из минусов?
Другими словами, я хотел бы найти решение, где:
- Выделение цвета в конце соответствует выбранной схеме цветов
- Этот цвет хорошо виден, но не слишком агрессивен для глаз
- Совместим с
cursorline
(фоном и передним планом) `- Совместим с другими плагинами, которые могут использовать скрытый
- Конечный символ может быть установлен на любой символ Unicode
:hi link ExtraWhitespace CursorLine
. См:help hi-link
.