これに対する受け入れられた答えに従って 質問 、私はいくつかのファイルでファイルタイプの検出を強制するためにvimでモードラインを使用しようとしています。
たとえば、gitconfig
という名前のファイルの先頭に(先頭に.
がないことに注意)、次の行があります。
# vim: set filetype=gitconfig :
システムでmodeline
が有効になっています。ただし、vimでファイルを開くと、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
を使用して同じシステムで実行されている MacVim の最新バージョンは期待どおりに動作し、set ft?
はfiletype=gitconfig
を返します。
したがって、掘り下げた後、OSXに同梱されているシステムvimrc
がmodelines
(末尾の「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
これを私のmacOSシステムで機能させるには、〜/ .vimrcでいくつかの設定を定義する必要がありました。
modeline
modelines=2
ここで、 'modeline'はファイル内設定の使用を有効にし、 'modelines =#'はvim/viがsetコマンドをチェックする行数を設定します。
これらのパラメーターが設定されると、ファイルで以下の行のような構文を使用して、設定されたパラメーターをオーバーライドすることができました。
# vim: ts=4 sw=4 ai