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