vim에 후행 공백 표시

vim에 후행 공백 표시

나는 내 터미널 vim에 후행 공백을 멋지고 멋지게 표시하고 싶습니다. 이렇게 하면 파일을 닫기 전에 해당 항목을 제거할 수 있습니다.

나는 이 질문이 매우 인기가 있다는 것을 알고 있으며 이미 SO에 대해 수십 개의 답변을 찾았습니다. 아쉽게도 아직 만족할만한 제품을 찾지 못했어요...

그래서 수집된 정보와 제가 찾은 해결책을 정리해 보도록 하겠습니다.

해결 방법 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구성할 수 없습니다. 다른 목록 문자와 동일해야 합니다.

해결 방법 3: 숨기기 기능 사용

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

여기에 이미지 설명을 입력하세요 여기에 이미지 설명을 입력하세요

장점:

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

단점:

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

내 질문

나열된 솔루션 중 성능과 호환성 측면에서 가장 적합한 솔루션은 무엇이며, 장점은 모두 얻고 단점은 전혀 얻을 수 없는 방법은 무엇입니까?

즉, 다음과 같은 솔루션을 찾고 싶습니다.

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

답변1

성능 측면에서 이들 중 어느 것도 차이를 가져서는 안 됩니다. Vim은 대부분 복잡한 구문 패턴으로 인해 어려움을 겪습니다. 여기의 패턴은 매우 간단합니다.

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

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

나는 이것을 선택하고 matchadd()싶지만 :match; 이로 인해 후자는 사용자 정의 강조 표시로 남습니다. 게다가 clearmatches()너무 거칠다. 그것은 삭제한다모두일치하므로 플러그인에 영향을 줄 수 있습니다. 당신은 내 것을 사용하거나 볼 수 있습니다ShowTrailingWhitespace 플러그인깔끔하고 강력한 구현을 위해(특정 파일 형식에 대한 예외도 포함) 예, 훨씬 더 큰 솔루션이지만 아직 어떤 영향도 느끼지 못했습니다.

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

이는 그 자체로 유용한 기능이며 영구적으로 유지하면 탭 문자의 커서 위치에 영향을 미치므로 권장하지 않습니다.

해결 방법 3: 숨기기 기능 사용

이는 해당 기능을 사용하는 일부 구문과 플러그인을 확실히 방해할 것입니다. 나쁜 생각.

관련 정보