I have a file called
.aliases for bash and zsh, I put this line
# vim: set filetype=bash:
but if I make
: echo &ft
That should work. I tried that line myself and it worked. I could be that your 'modeline' option got set to 'nomodeline'. Try executing this and see what you get.
:verbose set modeline?
That will tell you the value of the 'modeline' option and if not the default, where it was last set.
Some Linux distributions set 'nomodeline' in /etc/vimrc or /usr/share/vim/vimrc as a security measure, even though the security problems with 'modeline' have long been fixed.
I describe a full debug checklist in this other answer.
I was REALLY stumped on this one because the documentation is not entirely true.
It turns out that in version 8 (and maybe earlier) you cannot use the word
set in your modeline. The documentation describes "the second form" as being
/* vim: set ai tw=75: */ but this does not work. You have to use "the first form"
// vim: ai tw=75
Note: You can use either of those kinds of comment indicators. Or none at all.
set modelines=1 (or any non-0 value) in my ~/.vimrc got it working for me.
in ~/.vimrc you need to set following:
set nocompatible filetype plugin on set modeline
Adding just the following to my
~/.vimrc worked for me on my Funtoo Linux box:
Since this seems to come up in searches:
I had the same problem:
# vim: set filetype=sh:
didn't work, resulting in ft=conf as well. without the modeline in my ~/.bash_alias, ft is empty, so something changes.
# vim: filetype=sh:
worked. the last ":" presence seems to be irrelevant.
I'm on OSX with a Vim8 brewed version, for the records.
it's weird because from the modeline help both
seem to be supported.
The output of
verbose set ft?
with "vim:filetype=sh" is
filetype=sh Last set from modeline
with "vim:set filetype=sh"
filetype=conf Last set from /usr/local/Cellar/vim/8.0.1350/share/vim/vim80/filetype.vim
There might be a side effect somewhere in my conf, but the non compatible modeline syntax is the only one that works as expected for me.
vim-common on Debian-based distros disables
modeline by default.
" modelines have historically been a source of security/resource " vulnerabilities -- disable by default, even when 'nocompatible' is set set nomodeline
You have to enable
modeline explicitly in your