[unix] modeline으로 vim 파일 유형 설정이 예상대로 작동하지 않음

질문에 대한 대답 에 따라 vim에서 modelines를 사용하여 일부 파일에서 파일 형식 감지를 시도하고 있습니다.

예를 들어, 파일 이름이 맨 앞에 gitconfig(Leading이 없음에 유의하십시오 .) 다음 줄이 있습니다.

# vim: set filetype=gitconfig :

modeline내 시스템에서 활성화되어 있습니다. 그러나 vim에서 파일을 열면 예상 보다을 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 버전입니다.

동일한 시스템에서 동일한 버전을 사용하는 MacVim 의 최신 버전은 .vimrcset ft?반환 하면서 예상대로 작동 filetype=gitconfig합니다.



답변

따라서 일부 파기 후에 vimrcOSX와 함께 제공 되는 시스템 은 modelines(후행 ‘s’참고) 변수를 0으로 설정합니다.이 변수는 파일에서 set 명령을 검사하는 행 수를 제어합니다. 내 모델을 0이 아닌 값으로 설정하면 .vimrc문제가 해결되었습니다.

전체 출력, 궁금한 점 : vim --versionvimrc 시스템을 확인하라는 메시지가 출력되었습니다 .

% vim --version
VIM - Vi IMproved 7.3 (2010 Aug 15, compiled Jun 24 2011 20:00:09)
Compiled by root@apple.com
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


답변

이것이 macOS 시스템에서 작동하려면 ~ / .vimrc에 몇 가지 설정을 정의해야했습니다.

modeline
modelines=2

여기서 ‘ modeline ‘은 파일 내 설정을 사용할 수 있고 ‘ modelines = # ‘은 vim / vi가 set 명령을 확인할 행 수를 설정합니다.

이러한 매개 변수가 설정되면 파일에서 아래 줄과 같은 구문을 사용하여 설정 매개 변수를 재정의 할 수있었습니다.

# vim: ts=4 sw=4 ai


답변