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