rust vim插件文件类型检测不工作

rust vim插件文件类型检测不工作,vim,Vim,我在~/.vim/pack/plugins/start中安装了rust.vim插件。如果我打开一个名为main.rs的文件并键入 :scriptnames,以下是输出 ` ` 如果输入:set ft,则输出如下: filetype=hercules 与hercules相关的:autocmd filetypedetect的输出: *.vc setf hercules *.ev setf hercules *.rs setf hercules *.sum se

我在~/.vim/pack/plugins/start中安装了rust.vim插件。如果我打开一个名为main.rs的文件并键入 :scriptnames,以下是输出

`

`

如果输入:set ft,则输出如下:

filetype=hercules
与hercules相关的:autocmd filetypedetect的输出:

*.vc      setf hercules
*.ev      setf hercules
*.rs      setf hercules
*.sum     setf hercules
*.errsum  setf hercules
Executing BufRead Auto commands for "*.rs"
autocommand setf hercules
line 0: setf hercules
没有与生锈有关的线条

与hercules相关的:20verbose e main.rs的输出:

*.vc      setf hercules
*.ev      setf hercules
*.rs      setf hercules
*.sum     setf hercules
*.errsum  setf hercules
Executing BufRead Auto commands for "*.rs"
autocommand setf hercules
line 0: setf hercules
然后是关于hercuel格式的一系列行

Searching for "/.vim/ftplugin/hercules.vim"
Searching for "/.vim/ftplugin/hercules_*.vim"
Searching for "/.vim/ftplugin/hercules/*.vim"
Searching for "/.vim/pack/plugins/start/rust.vim/ftplugin/hercules.vim"
Searching for "/.vim/pack/plugins/start/rust.vim/ftplugin/hercules_*.vim"
Searching for "/.vim/pack/plugins/start/rust.vim/ftplugin/hercules/*.vim"
Searching for "/var/lib/vim/addons/ftplugin/hercules.vim"
Searching for "/var/lib/vim/addons/ftplugin/hercules_*.vim"
Searching for "/var/lib/vim/addons/ftplugin/hercules/*.vim"
Searching for "/usr/share/vim/vimfiles/ftplugin/hercules.vim"
搜索的这一块稍后也会重复。在输出的最后是:

 Executing BufRead Auto commands for "*.rs"
autocommand setf rust
line 0: setf rust
Executing BufEnter Auto commands for "*"
autocommand sil call s:LocalBrowse(expand("<amatch>"))
line 0: sil call s:LocalBrowse(expand("<amatch>"))
为“*.rs”执行BufRead Auto命令
自动命令集
第0行:setf rust
正在为“*”执行BufEnter Auto命令
自动命令sil调用s:LocalBrowse(展开(“”)
第0行:sil调用s:LocalBrowse(展开(“”)

有谁能告诉我如何让vim将文件类型读取为rust而不是hercules?

检查
:autocmd filetypedetect
的输出。对于我(Vim 8.1.744),以下模式适用于
hercules
/
rust
。(我不知道rust.vim插件做什么,但至少vim本身已经附带了文件类型检测、插件和语法。)

对于您来说,输出可能是不同的。你需要找出错误模式的来源。一种方法是观察打开文件时执行的所有命令:

:20verbose e main.rs
如果hercules文件类型优先于rust文件类型(根据您的编辑,情况似乎是这样),您要么必须删除hercules文件类型(我想知道
*.rs
glob从何而来,即使我的旧Vim 7.4没有它),要么定义一个覆盖,如:A所述。如果您想覆盖所有默认文件类型检查。也就是说,创建一个文件
~/.vim/ftdetect/rust.vim

au BufRead,BufNewFile *.rs      set filetype=rust

请注意不同之处:
:set filetype=
是无条件设置,而默认规则使用的仅在尚未定义时设置(因此,hercules,首先出现,目前为止为您获胜)。

添加了:20verbose e main.rs和:autocmd filetypedetect to question的输出,因此似乎hercules one获胜;很难说这是从哪里来的,所以我添加了如何覆盖它的说明。