有没有办法在vim将要处理的文件中放置注释以设置文件类型?


30

例如,如果我想让vim 将该文件的名称gitconfig(开头不是.)识别为of filetype=gitconfig,是否可以在文件本身的注释或类似内容中表明这一点?注意,我希望它能跨系统运行,因此不建议修改vim的启动文件。

Answers:


45

这听起来像是该modeline功能(请参阅在线帮助)。在gitconfig中,您可以在文件的开头或结尾附近添加一个如下所示的模型:

# vi: ft=gitconfig

这需要启用模式,并且由于它们可能会带来安全隐患,因此在许多系统上默认情况下会将其禁用。

另一种可能需要更多工作的方法是制作一个.vim包含以下内容的文件:

au BufRead,BufNewFile */gitconfig setfiletype gitconfig

并将其放入~/.vim/ftdetect所有系统中。


完美,我一直在寻找Modeline。启用了modeline,但似乎我的设置中有其他干扰。如果我将您建议的行放在文件顶部,那么在我重新打开文件后,它将set filetype?显示文件类型“ conf”。
Murali Suriar

也许您可以:verbose set filetype用来查看该conf值的来源-我猜想vim的系统默认文件类型设置在某处。
2011年

显然,它是最后一次从/usr/share/vim/vim73/filetype.vim设置。为什么系统级文件类型检测会覆盖我在文件本身中放置的指令?
Murali Suriar

您是否以root用户身份运行vim?如果是,我认为不会加载modeline。
elias 2013年

还要检查modelines选项的值。:set modelines?如果将其设置为零,则不会处理modeline。
克里斯蒂安·朗

1

您可以创建一个语法文件并将其放在vim的share/syntax目录中(在Debian Lenny上/usr/share/vim/vim71/syntax(您的发行版可能有所不同))。

Vim语法格式的文档位于:http : //vimdoc.sourceforge.net/htmldoc/syntax.html

您也许可以在Internet上的某个地方找到现成的语法文件,但是我将保留它作为练习。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.