快速解决

快速解决

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

现在,每当您打开没有扩展名的文件时,它都会尝试查看它是否是符号链接并检索目标文件。如果它实际上是符号链接,它会将语法设置为目标文件的文件类型。否则,它什么也不做。

相关内容