Недавно я видел эту демонстрацию. Мой вопрос: как возможно в vim отображать пробельные символы под курсором в виде точек (например, красным).
Пробел под курсором в vim
Ответы (2)
Выделить пробелы до и после курсора
highlight FooBar guibg=#80a0ff au CursorMoved * :match FooBar /\s*\%#.\s*/
Это работает в обычном режиме с gvim. Чтобы он работал в терминале vim, измените guibg на ctermbg. Если вы хотите, чтобы он также был в режиме вставки, измените au CursorMoved на
au CursorMoved,CursorMovedI,InsertEnter
Хотя в этом случае вам нужно будет настроить регулярное выражение, поскольку оно ошибочно соответствует непробельным символам справа от курсора при входе в режим вставки.
В регулярном выражении \%# соответствует текущей позиции курсора. Мне пришлось использовать . после него, так как без него он не соответствовал бы пробелу справа от курсора.
Я не думаю, что это показывает место под курсором; Я думаю, что он показывает конечные пробелы. Это контролируется параметром listchars, который управляет поведением list. Чтобы включить его, используйте:
set list
set listchars=trail:·
Цвет определяется группой hl-SpecialKey; вы можете изменить его следующим образом:
hi SpecialKey ctermfg=Red
listchars состоит в том, чтобы позволить вам различать типы пробелов — вы можете отображать конец строки, табуляцию, завершающие пробелы, индикаторы дополнительного текста слева и справа от экрана и неразрывные пробелы. Простые пробелы остаются пустыми, потому что они распространены, а при выделении всех остальных элементов все пустое является пробелом. Вывод: нет возможности показать пустые места везде, и уж точно нет возможности применить list только рядом с курсором.
- person Cascabel; 20.04.2010