2010-05-04 3 views
2

ViM을 사용합니다. CursorLine을 강조 표시하면 현재 행의 bg 색상이 변경됩니다. 그러나 때로는 텍스트가 읽을 수 없습니다.ViM에서 CursorLine 강조 표시, 행의 시작/끝 부분에서 행 번호 및 공백/탭만 강조 표시합니다.

텍스트 (문자 사이의 공백/탭 수를 텍스트로 계산)를 제외한 전체 줄의 배경색 만 변경할 수있는 강조 표시를 원합니다.

가능합니까? 그렇다면 어떻게?

답변

2

내가 아는 한, 커서 라인이 어떻게 강조 표시되는지 설정하는 직접적인 지원이 없을 수도 있습니다.

하지만, 원하는 것을하기위한 트릭이 있습니다. 즉, 커서 라인을 강조 표시 한 후 현재 "배경"및 "전경"으로 한 줄의 제목/후행 공백의 색상 설정을 변경할 수 있습니다.

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

명백한 단점은 "Vim은 윈도우의 경계"에서 "줄의 끝"에서 일부 여전히 cursorline의 설정의 색상으로 페인트됩니다. 당신을 위해 추한 경우, 당신은 단지처럼 그 guifg를 설정하여 cursorline의 하이라이트 설정을 변경할 수 있습니다

:highlight CursorLine guifg=red guibg=background 

아마 다른 깔끔한 솔루션은 존재가 있습니다,하지만 그건 내가 지금 가지고 올 수있는 것입니다. :)

희망이 조금 있습니다.

1

가 나는 해결책 발견 -

@ Zhaojun의 대답에 관하여를 : 그것은 내가 발견 한 솔루션입니다

(도 /^\s\+|\s\+$/ 많은, 어쩌면 /^\s\+\|\s\+$/해야하지 않음) 원하는 것을 아니다 (elflord 색상 단지 예를 들어 컬러)

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

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

는 그러나 라인의 그 말에 후행 공백을 잘 작동하지 않습니다,하지만 나는 보통 그들에게

삭제 6,

는 다음과 내가 사용하는 그들을 볼 수 있도록

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

/^ \ s의 \ + | \ S \ + $ /는 선행 공백과 후행 공백 모두 일치하는 것을 의미한다. "|" "OR"이므로 "\ |"로 이스케이프 처리 할 수 ​​없습니다. 솔루션을 게시하기 전에 몇 가지 기본 테스트를 수행했으며 이는 선행 공백과 후미 공백 모두를 잘 맞 춥니 다. 그래서 왜 그것이 당신을 위해 작동하지 않습니다 모르겠어요. 어쩌면 여기에 텍스트 일부만 붙여 넣을 수 있기 때문에 이유를 알아낼 수 있습니다. – Zhaojun

+0

'|' (예 : help regex,/|,/\\ |) 일부 예제 코드 : "os.environ.keys()에서 e에 대해 os \ – pingi

+0

"|"에 대한 잘못된 진술을 한 것을 유감스럽게 생각합니다. 귀하의 질문에 대한 좀 더 간단한 해결책은 "guifg"를 다른 색으로 설정하고 "guibg"를 손대지 않게 할 수 있습니다. like : : highlight CursorLine guifg = red guibg = background 이 솔루션에서는 모든 공백이 배경색으로 표시되므로 모든 공백이 무시되므로 공백은 전혀 일치하지 않습니다. – Zhaojun

관련 문제