Мені б хотілося, щоб у моєму терміналі vim був гарний і милий показ пробілу пробілу. Це дозволить мені видалити їх перед закриттям файлу.
Я знаю, що це питання досить популярне, і я вже знайшов десятки відповідей на ТА. На жаль, я ще не знайшов задоволення ...
Тому я спробую узагальнити зібрану інформацію та знайдені рішення.
Рішення 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
.