Пробел под курсором в vim

Недавно я видел эту демонстрацию. Мой вопрос: как возможно в vim отображать пробельные символы под курсором в виде точек (например, красным).


person akosch    schedule 19.04.2010    source источник


Ответы (2)


Выделить пробелы до и после курсора

highlight FooBar guibg=#80a0ff
au CursorMoved * :match FooBar /\s*\%#.\s*/

Это работает в обычном режиме с gvim. Чтобы он работал в терминале vim, измените guibg на ctermbg. Если вы хотите, чтобы он также был в режиме вставки, измените au CursorMoved на

au CursorMoved,CursorMovedI,InsertEnter

Хотя в этом случае вам нужно будет настроить регулярное выражение, поскольку оно ошибочно соответствует непробельным символам справа от курсора при входе в режим вставки.

В регулярном выражении \%# соответствует текущей позиции курсора. Мне пришлось использовать . после него, так как без него он не соответствовал бы пробелу справа от курсора.

person Heikki Naski    schedule 02.05.2010

Я не думаю, что это показывает место под курсором; Я думаю, что он показывает конечные пробелы. Это контролируется параметром listchars, который управляет поведением list. Чтобы включить его, используйте:

set list
set listchars=trail:·

Цвет определяется группой hl-SpecialKey; вы можете изменить его следующим образом:

hi SpecialKey ctermfg=Red
person Cascabel    schedule 19.04.2010
comment
Назначение listchars состоит в том, чтобы позволить вам различать типы пробелов — вы можете отображать конец строки, табуляцию, завершающие пробелы, индикаторы дополнительного текста слева и справа от экрана и неразрывные пробелы. Простые пробелы остаются пустыми, потому что они распространены, а при выделении всех остальных элементов все пустое является пробелом. Вывод: нет возможности показать пустые места везде, и уж точно нет возможности применить list только рядом с курсором. - person Cascabel; 20.04.2010