이에 대한 허용된 답변을 바탕으로질문, vim의 모델 라인을 사용하여 특정 파일에 대한 파일 형식 감지를 강제로 시도했습니다.
gitconfig
예를 들어 (선행 없음)이라는 파일 맨 위에 .
다음 줄이 있습니다.
# vim: set filetype=gitconfig :
modeline
내 시스템에서 활성화되었습니다. 그러나 예상 set filetype?
되는 .conf
gitconfig
내 vim 구성(예: filetype.vim)의 다른 부분이 이 이상한 동작을 일으킬 가능성이 있습니까?
의견 수정:
set compatible?
반품nocompatible
set modeline?
반품modeline
verbose set filetype?
반품:
filetype=conf
Last set from /usr/share/vim/vim73/filetype.vim
시스템 전체 파일 형식 플러그인이 파일 자체에 설정한 내용보다 우선 적용되는 이유를 이해할 수 없습니다.
마지막 참고 사항: 이것은 OSX와 함께 제공되는 Vim 7.3 버전입니다.
최신 버전맥빔동일한 동작으로 동일한 시스템에서 실행하면 .vimrc
예상대로 작동하고 set ft?
를 반환합니다 filetype=gitconfig
.
답변1
그래서 약간의 조사 끝에 vimrc
OSX와 함께 제공되는 시스템이 modelines
변수를 0으로 설정한다는 것을 발견했습니다(후행 's' 참고). 이 변수는 설정 명령에 대해 검사되는 파일의 줄 수를 제어합니다. 내 모델에서 모델을 0이 아닌 값으로 설정하면 .vimrc
문제가 해결되었습니다.
호기심에서 나온 전체 출력: 출력 결과 vim --version
vimrc 시스템을 확인하라는 메시지가 표시되었습니다.
% vim --version
VIM - Vi IMproved 7.3 (2010 Aug 15, compiled Jun 24 2011 20:00:09)
Compiled by [email protected]
Normal version without GUI. Features included (+) or not (-):
...
system vimrc file: "$VIM/vimrc"
user vimrc file: "$HOME/.vimrc"
user exrc file: "$HOME/.exrc"
fall-back for $VIM: "/usr/share/vim"
Compilation: gcc -c -I. -D_FORTIFY_SOURCE=0 -Iproto -DHAVE_CONFIG_H -arch i386 -arch x86_64 -g -Os -pipe
Linking: gcc -arch i386 -arch x86_64 -o vim -lncurses
시스템 vimrc 보기:
% cat /usr/share/vim/vimrc
" Configuration file for vim
set modelines=0 " CVE-2007-2438
...
변수를 알려주세요 modelines
. MacVim이 이 시스템 파일을 선택하지 않는 것 같습니다(아마도 GVIMRC 시스템을 찾고 있는 것일까요? :help startup
확실하지 않습니다).
VIM - Vi IMproved 7.3 (2010 Aug 15, compiled Jul 27 2011 19:46:24)
MacOS X (unix) version
Included patches: 1-260
Compiled by XXXXX
Huge version with MacVim GUI. Features included (+) or not (-):
...
system vimrc file: "$VIM/vimrc"
user vimrc file: "$HOME/.vimrc"
user exrc file: "$HOME/.exrc"
system gvimrc file: "$VIM/gvimrc"
user gvimrc file: "$HOME/.gvimrc"
system menu file: "$VIMRUNTIME/menu.vim"
fall-back for $VIM: "/Applications/MacVim.app/Contents/Resources/vim"
Compilation: gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_MACVIM -Wall -Wno-unknown-pragmas -p
ipe -DMACOS_X_UNIX -no-cpp-precomp -g -O2 -D_FORTIFY_SOURCE=1
Linking: gcc -L. -Wl,-syslibroot,/Developer/SDKs/MacOSX10.6.sdk -L/usr/local/lib -o V
im -framework Cocoa -framework Carbon -lncurses -liconv -framework Cocoa -fstack-prote
ctor -L/usr/local/lib -L/System/Library/Perl/5.10/darwin-thread-multi-2level/CORE -lperl -lm -
lutil -lc -framework Python -framework Ruby
답변2
내 macOS 시스템에서 작동하려면 ~/.vimrc에서 몇 가지 설정을 정의해야 했습니다.
modeline
modelines=2
어디'모델 행'파일 내 설정 사용을 허용하며'모델 행=#' vim/vi가 set 명령을 확인할 줄 수를 설정합니다.
이러한 매개변수를 설정한 후 파일에서 다음 줄 구문을 사용하여 설정된 매개변수를 재정의할 수 있습니다.
# vim: ts=4 sw=4 ai