Vim 确实能够根据文件的名称和模式行智能地识别文件类型。
然而它不能处理这种情况:我有一个没有任何特殊后缀的文件,比如说somefile
,它是指向 c++ 源文件的软链接。Vimsomefile.cpp
似乎只查找名称somefile
并认为它是一个普通的文本文件。
那么能否让 Vim 对文件类型进行更合理的判断(比如选择包含后缀的文件名的文件类型)或者在更复杂的情况下无法判断时提示让用户选择呢?
答案1
快速解决
如果要打开第一种类型的文件,请输入
:设置 syn=c
或用其他文件类型来代替以c
改变语法高亮。
如果这是您经常编辑的文件,您可以添加模式行到文件顶部。
/* vim:语法=c 文件类型=c */
任何注释类型都适用于其他文件类型,例如
# vim:语法=python 文件类型=python
永久解决方案
将这一行添加到您的.vimrc
文件中:
au BufNewFile,BufReadPre * if &syntax == '' | silent!execute(':set filetype='.matchstr(resolve(@%),'.[^.]*$')[1:]) | endif
现在,每当您打开没有扩展名的文件时,它都会尝试查看它是否是符号链接并检索目标文件。如果它实际上是符号链接,它会将语法设置为目标文件的文件类型。否则,它什么也不做。