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.\+/

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

노트

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

답변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()

관련 정보