2012-06-22 3 views
1

:match을 사용하여 스타일 가이드 라인을 준수하지 않는 코드의 문제점을 강조 표시합니다. 첫 번째 창에 좋은 다음 작품을 내가 빔에서 열 :새 탭 페이지가 텍스트와 일치하지 않습니다.

~/.vimrc :

hi ExtraWhitespace ctermbg=red guibg=red 
hi NoFunctionSpace ctermbg=red guibg=red 
match ExtraWhitespace /\s\+$\| \+\ze\t/ 
2match NoFunctionSpace /\S(/ 
그러나

, 나는 :tabedit에 파일을 이동하거나 할 때 나는 -p 옵션 및 여러 파일로 빔을 열면 첫 번째 창만 일치하는 항목을 강조 표시합니다. 모든 열린 탭에 일치 항목을 표시하고 싶습니다.

답변

3

:match 명령은 현재 창에만 적용됩니다. 자동으로 각 새로운 윈도우에 적용하려면 WinEnter 이벤트로 후크 다음 WinEnter 이벤트가 초기 창 해고되지 않기 때문에

autocmd WinEnter * match ExtraWhitespace /\s\+$\| \+\ze\t/ 
autocmd WinEnter * 2match NoFunctionSpace /\S(/ 

당신은 여전히도 원래 :match 명령이 필요합니다.

+0

WinEnter 대신 BufEnter를 사용하면 원래 ': match'를 제거 할 수 있다는 것을 발견했습니다. 또한': match' 대신'call matchadd'를 사용합니다. 원하는만큼 여러 번 호출 할 수 있기 때문입니다. 결과 :'autocmd BufEnter * call matchadd ("WhitespaceEOL", '\ s \ + $')' – pzanoni

+0

matchadd()'가 좋다; 대화식으로 사용하기 위해 여전히': match'를 사용할 수 있습니다. 그러나 BufEnter는 틀렸다. 둘 다 창으로 범위가 지정됩니다. 현재 버퍼를': split'으로 나눌 때 작동하지 않을 수 있습니다. –

관련 문제