VIM에서 추가 공백 및 고정 길이 열 강조 표시

VIM에서 추가 공백 및 고정 길이 열 강조 표시

VIM을 사용하여 추가 공백과 고정 길이 열(예: 연속 80자)을 강조표시하고 싶습니다.

.vimrc내 파일에 두 개의 vimrc 규칙을 만들었습니다.

highlight ExtraWhitespacea ctermbg=darkred guibg=#382424
match ExtraWhitespacea /\s\+$/
highlight OverLength ctermbg=green ctermfg=white guibg=#592929
match OverLength /\%81v.\+/

이제 문제는 이 규칙이 개별적으로 적용되면 내가 원하는 방식으로 정확하게 작동하지만 함께 작동하지 않는다는 것입니다.

여기서 뭔가 빠졌나요? 어떻게 디버깅할 수 있나요?

답변1

문제는 각 :match명령이 이전 명령의 패턴을 덮어쓰며 누적되지 않는다는 것입니다. 이로 인해 :2match다양한 :3match변형이 존재합니다. 다음 중 하나를 사용하십시오.

highlight ExtraWhitespace ctermbg=darkred guibg=#382424
match ExtraWhitespace /\s\+$/
highlight OverLength ctermbg=red guibg=#525252
2match OverLength /\%81v.\+/

matchadd()Vimscript 기능을 사용하여 다른 변형을 만들 수 있습니다 .

노트

  • 'colorcolumn'Vim 7.3부터 열을 강조 표시하는 옵션이 내장되어 있습니다 .
  • 설정은 ~/.vimrc첫 번째 창에만 적용됩니다. 즉, :split이러한 강조 표시 없이 창이 생성됩니다. autocmds를 통해(또는 이 옵션을 사용하여) 이 문제를 해결할 수 있습니다 'colorcolumn'.
  • 나와 같은 후행 공백을 강조하는 더 강력하고 정교한 솔루션이 있습니다.ShowTrailingWhitespace 플러그인. (플러그인 페이지에는 대체 플러그인에 대한 링크가 있습니다.)

답변2

색 구성표가 구성보다 우선할 수 있습니다. 덮어쓰기를 방지하기 위해 끝에 다음 줄을 추가하거나 .vimrc다음 줄을 다음 항목에 추가할 수 있습니다 .vimrc.

" Highlight trailing white spaces
highlight ExtraWhitespace ctermbg=darkred guibg=#382424
match ExtraWhitespace /\s\+$/
autocmd BufWinEnter * match ExtraWhitespace /\s\+$/
autocmd InsertEnter * match ExtraWhitespace /\s\+\%#\@<!$/
autocmd InsertLeave * match ExtraWhitespace /\s\+$/
autocmd BufWinLeave * call clearmatches()

" Highlight long lines
highlight OverLength ctermbg=green ctermfg=white guibg=#592929
match OverLength /\%81v.\+/
autocmd BufWinEnter * match OverLength /\%81v.\+/
autocmd InsertEnter * match OverLength /\%81v.\+/
autocmd InsertLeave * match OverLength /\%81v.\+/
autocmd BufWinLeave * call clearmatches()

관련 정보