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」を参照)。この変数は、設定コマンドに対して検査されるファイルの行数を制御します。私のモデルでモデルをゼロ以外の値に設定することで.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

関連情報