Modeline을 사용하여 vim 파일 형식을 설정하면 예상대로 작동하지 않습니다.

Modeline을 사용하여 vim 파일 형식을 설정하면 예상대로 작동하지 않습니다.

이에 대한 허용된 답변을 바탕으로질문, vim의 모델 라인을 사용하여 특정 파일에 대한 파일 형식 감지를 강제로 시도했습니다.

gitconfig예를 들어 (선행 없음)이라는 파일 맨 위에 .다음 줄이 있습니다.

# vim: set filetype=gitconfig : 

modeline내 시스템에서 활성화되었습니다. 그러나 예상 set filetype?되는 .confgitconfig

내 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

그래서 약간의 조사 끝에 vimrcOSX와 함께 제공되는 시스템이 modelines변수를 0으로 설정한다는 것을 발견했습니다(후행 's' 참고). 이 변수는 설정 명령에 대해 검사되는 파일의 줄 수를 제어합니다. 내 모델에서 모델을 0이 아닌 값으로 설정하면 .vimrc문제가 해결되었습니다.

호기심에서 나온 전체 출력: 출력 결과 vim --versionvimrc 시스템을 확인하라는 메시지가 표시되었습니다.

% 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

관련 정보