vim에 후행 공백 표시


11

터미널 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은 구성 할 수 없습니다. 다른 listchar와 동일해야합니다.

해결 방법 3 : 은폐 기능 사용

syn match WhiteSpace "\s\+$" containedin=ALL conceal cchar=◦
set conceallevel=2 
set concealcursor=nv
highlight Conceal ctermfg=red

여기에 이미지 설명을 입력하십시오 여기에 이미지 설명을 입력하십시오

장점 :

  • 첫 번째 솔루션보다 더 예쁘다

단점 :

  • 배경이 커서 배경과 동일하지 않습니다
  • 다른 은닉 규칙을 방해 할 수 있음
  • 선택한 색이 항상 색 구성표와 호환되지는 않습니다.
  • 이전 버전의 Vim과 호환되지 않습니다

내 질문

열거 된 솔루션 중 성능 및 호환성 측면에서 가장 적합한 솔루션은 무엇이며 어떻게 모든 장점을 얻을 수 있습니까?

다른 말로하면, 나는 다음과 같은 해결책을 찾고 싶습니다.

  • 하이라이트 후행 색상은 선택한 색상 구성표와 일치합니다
  • 이 색은 눈에 잘 띄지 만 눈에 너무 공격적이지는 않습니다.
  • cursorline(배경 및 전경)과 호환 가능 `
  • 은폐를 사용하는 다른 플러그인과 호환
  • 후행 문자는 모든 유니 코드 문자로 설정할 수 있습니다

빨간색이 마음에 들지 않으면 다른 색상을 선택하십시오. 색상이 다른 색상 구성표와 호환되도록하려면 특정 색상 (예 :)을 사용하는 대신 색상 그룹 이름에 연결하십시오 :hi link ExtraWhitespace CursorLine. 참조하십시오 :help hi-link.
garyjohn

답변:


4

성능면에서 이들 중 어느 것도 차이를 만들지 않습니다. Vim은 대부분 복잡한 구문 패턴에 의해 혼란스러워집니다. 여기서 패턴은 매우 간단합니다.

강조 표시 색상이 선택한 색상 표와 일치 :hi link하도록하려면 기존 그룹에 사용하십시오. 일반적으로 Error. 물론, 색상을 자주 바꾸는 경우에만 중요합니다. 그렇지 않으면 (솔루션 1에서와 같이) 적절한 색상을 직접 사용하는 것도 좋습니다.

해결 방법 1 : 후행 공백을 수동으로 강조 표시

나는 이것을 위해 갈 것이지만 matchadd()대신에 :match; 후자는 사용자 정의 강조 표시로 남습니다. 또한 clearmatches()너무 거칠다. 모든 일치 항목을 삭제 하므로 플러그인에 영향을 줄 수 있습니다. 깨끗하고 강력한 구현을 위해 ShowTrailingWhitespace 플러그인 을 사용하거나 볼 수 있습니다 (특정 파일 유형에 대한 예외도 포함). 예, 훨씬 더 큰 솔루션이지만 아직 아무런 영향을 미치지 않았습니다.

해결 방법 2 : 목록 기능 사용

이것은 그 자체로 유용한 기능이며, 계속 유지하면 탭 문자의 커서 위치에 영향을 미치므로 권장하지 않습니다.

해결 방법 3 : 은폐 기능 사용

그것은 기능을 사용하여 일부 구문과 플러그인을 방해합니다. 나쁜 생각.


따라서 귀하의 답변에서 사용자 정의 유니 코드 문자를 사용하여 추가 공백을 표시 할 수있는 솔루션이 있음을 이해합니다. 이 질문은 실제로 처음에 생각했던 것보다 더 까다 롭습니다.
nowox 님

맞습니다. 맞춤 문자는와 만 작동합니다 'listchars'. 나에게 강조 표시는 충분합니다 (특히 공격적인 색상).
Ingo Karkat
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.