Sign up ×
Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems. It's 100% free, no registration required.

As per the accepted answer to this question, I'm attempting to use modelines in vim to force filetype detection in some files.

For example, at the top of a file named gitconfig (note there is no leading .), I have the following line:

# vim: set filetype=gitconfig : 

modeline is enabled on my system. However, when I open the file in vim, set filetype? returns conf, rather than the expected gitconfig.

Is it possible that other parts of my vim configuration (e.g. filetype.vim) are causing this strange behaviour?

Edited in response to comments:

set compatible? returns nocompatible

set modeline? returns modeline

verbose set filetype? returns:

      Last set from /usr/share/vim/vim73/filetype.vim

I don't understand why the system wide filetype plugin would be overriding what I have set in the file itself.

One final note: this is the version of Vim 7.3 shipped with OSX.

The latest version of MacVim running on the same system using the same .vimrc behaves as expected, with set ft? returning filetype=gitconfig.

share|improve this question
I usually saw those options set at the end (last line) of files - maybe that is the issue... –  rozcietrzewiacz Sep 1 '11 at 7:36
Just to make sure: did you check that set modeline? does not print nomodeline? –  rozcietrzewiacz Sep 1 '11 at 8:11
I find the most common cause for modeline not working is that compatible is set. That would be worth checking too. –  Edd Steel Sep 1 '11 at 15:56
See updated question for responses. –  Murali Suriar Sep 4 '11 at 0:22

1 Answer 1

up vote 13 down vote accepted

So, after some digging, it transpires that the system vimrc shipped with OSX sets the modelines (note the trailing 's') variable to 0. This variable controls the number of lines in a file which are checked for set commands. Setting modelines to a non-zero value in my .vimrc solved the problem.

Full output, for the curious: the output of vim --version prompted me to check the system vimrc:

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

Looking at the system vimrc:

% cat /usr/share/vim/vimrc 
" Configuration file for vim
set modelines=0         " CVE-2007-2438

Led me to the modelines variable. It appears that MacVim does not source this system file (perhaps looking for a system GVIMRC instead? :help startup isn't clear).

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/"
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
share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.