Выделение CursorLine в ViM, выделение только номера строки и пробелов / табуляций в начале / конце строки - PullRequest
2 голосов
/ 05 мая 2010

Я использую ViM: выделите CursorLine, чтобы изменить цвет bg на текущей строке. Но иногда текст не читается.

Мне бы хотелось, чтобы подсветка могла изменять цвет фона только для всей строки, кроме текста (считая пробелы / табуляции между символами как текст).

Это выполнимо? Если да, то как?

Ответы [ 2 ]

2 голосов
/ 05 мая 2010

Насколько я знаю, не может быть прямой поддержки установки того, как линия курсора подсвечивается.

Но у меня есть хитрость для того, чтобы делать то, что вы хотите. То есть после того, как мы выделим линию курсора, мы можем изменить настройки цвета заголовка / заднего пробела в строке как текущие «фон» и «передний план».

:match NoHighLight /^\s\+|\s\+$/ 
:highlight NoHighLight guibg=background guifg=foreground

Очевидным недостатком является то, что часть от «конца линии» до «границы окна vim» будет по-прежнему окрашиваться в цвет установки курсора. Если вам это некрасиво, вы можете просто изменить настройку подсветки линии курсора, только установив ее guifg, например:

:highlight CursorLine guifg=red guibg=background 

Может быть, были и другие аккуратные решения, но это то, что я могу придумать сейчас. :)

Надеюсь, это немного поможет.

1 голос
/ 06 мая 2010

Я нашел решение -

Что касается ответа @ Zhaojun: это не то, что я хотел (также /^\s\+|\s\+$/ мало что делает, может быть, должно быть /^\s\+\|\s\+$/)

Решение, которое я нашел (просто пример цвета для цветовой схемы elflord)

:highlight CursorLine gui=none guibg=grey10
:set CursorLine

:highlight NoHighLight guibg=background 
:match NoHighLight /\S\+\(\s\+\|$\)/

однако он плохо работает для конечных пробелов в конце строки, но я обычно их удаляю

чтобы сделать их видимыми, я использую следующее

:highlight EndSpaces guibg=green
:match EndSpaces /\s\+$/
...