그러나 이러한 행을 .vimrc에 추가 한 후에는 작동하지 않았습니다.
Vim은 'syntax'
옵션을 설정할 때 기존 구문 항목을 지우기 때문입니다 . 이전 구문 항목을 유지하면 이상한 상황이 발생할 수 있기 때문입니다. 당신이 가지고있는 버퍼가있는 경우 syntax=foo
와 사용 set syntax=bar
당신은을위한 구문 강조가 버퍼 될 겁니다 모두 foo
와 bar
.
Vim이 시작되면 vimrc
시작시 한 번만 로드 되지만 filetype
또는 syntax
옵션이 설정 될 때마다 파일 유형 및 구문 파일이로드되어 vimrc에서 설정 한 값이 재설정됩니다.
재설정하지 않더라도 vimrc에 추가하는 것은 좋은 생각이 아닙니다. 이는 vimrc를 사용 하는 버퍼뿐만 아니라 모든 버퍼에 적용되기 때문입니다 syntax=c
.
아래 텍스트는 Unix-y 시스템에서 Vim을 가정하지만 Neovim 및 Windows 사용자에게도 적용됩니다.
- Neovim 사용자는 교체해야합니다
~/.vim/
함께 ~/.config/nvim/
.
- 윈도우 사용자는 교체해야합니다
~/.vim/
함께 %USERPROFILE%\vimfiles\
.
전체 파일 재정의
무엇인가를 바꾸는 가장 쉬운 방법 은 그것을 재정의하는 것 입니다. 파일을 만들려면에 파일을 만드십시오 ~/.vim/<file>.vim
.
<file.vim>
$VIMRUNTIME
(하위 디렉토리 포함)에 상대적인 경로 입니다. 귀하의 예에서는이어야합니다 syntax/c.vim
. 의 파일 대신로드됩니다 $VIMRUNTIME
.
이것의 결론은 변경하기가 더 쉽다는 것입니다. 구문 파일을 종료하는 것이 때때로 까다로울 수 있습니다. 단점은 시스템 전체 파일에 대한 향후 업데이트가 없다는 것입니다.
나는 종종 이것을 구문 파일을 실험하기 위한 시작점 으로 사용 하고 나중에 아래 설명 된 방법 중 하나를 사용하여 로컬 변경 사항을 로컬 추가로 추출합니다.
지역 추가
구문 파일에 로컬 추가를 추가하는 두 가지 방법이 있으며 기능적으로 동일하며 원하는 방법을 사용할 수 있습니다.
Syntax
autocmd
Syntax
autocmd를 사용하십시오 .
augroup ft_c
autocmd!
autocmd Syntax c syn match cFunction "\<[a-zA-Z_][a-zA-Z_0-9]*\>[^()]*)("me=e-2
autocmd Syntax c syn match cFunction "\<[a-zA-Z_][a-zA-Z_0-9]*\>\s*("me=e-1
autocmd Syntax c hi cFunction gui=NONE guifg=#B5A1FF
augroup end
여러 명령을 체인으로 묶는 |
것은 :syn
명령의 일부로 해석되는 경향이 있기 때문에 여기서 문제가됩니다. 그래서 autocmd Syntax c
여러 번 반복했습니다 . 대안은 함수를 사용하는 것입니다.
fun s:c()
syn match cFunction "\<[a-zA-Z_][a-zA-Z_0-9]*\>[^()]*)("me=e-2
syn match cFunction "\<[a-zA-Z_][a-zA-Z_0-9]*\>\s*("me=e-1
hi cFunction gui=NONE guifg=#B5A1FF
endfun
augroup ft_c
autocmd!
autocmd Syntax c call s:c()
augroup end
모든 변경 사항을 단일 파일에 포함 할 수 있다는 이점이 있습니다. 단점은 특히 변경 사항이 많은 경우 약간 추악하다는 것입니다.
디렉토리 뒤
이후 디렉토리를 사용하십시오 ~/.vim/after/<file>.vim
.
이것은 (하위 디렉토리를 포함하여) 상대 경로가있는 <file>.vim
위치에 로드됩니다 . 귀하의 예에서는이어야합니다 .<file.vim>
$VIMRUNTIME
syntax/c.vim
도 참조하십시오 :help after-directory
.
장점은 특히 많은 변경 사항이있는 경우 autocmd보다 조금 더 읽기 쉽다는 것입니다. 단점은 Vim 설정을 다른 머신에 미러링하려면 추가 파일을 복사해야한다는 것입니다. 이는 많은 사람들이 Vim 파일을 GitHub 저장소에 보관하는 중요한 이유이므로 머신간에 쉽게 미러링 할 수 있습니다. ).
~/.vim/after/syntax/c.vim
대신에 추가하십시오 .