rust vim插件文件类型检测不起作用

时间:2019-01-16 06:20:46

标签: vim

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

`

let globalNumArray

// on click button doStuff
function (){
    globalNumArray = doStuff()
}

// on click button addArray
function() {
    addArray(globalNumArray)
}

`

如果我输入:set ft,则输出为:

 1: /usr/share/vim/vimrc
  2: /usr/share/vim/vim74/debian.vim
  3: /usr/share/vim/vim74/syntax/syntax.vim
  4: /usr/share/vim/vim74/syntax/synload.vim
  5: /usr/share/vim/vim74/syntax/syncolor.vim
  6: /usr/share/vim/vim74/filetype.vim
  7: /usr/share/vim/vim74/ftplugin.vim
  8: /usr/share/vim/vim74/indent.vim
  9: ~/.vim/plugin/ScrollColor.vim
 10: ~/.vim/plugin/color_sample_pack.vim
 11: ~/.vim/plugin/mimicpak.vim
 12: /usr/share/vim/vim74/plugin/getscriptPlugin.vim
 13: /usr/share/vim/vim74/plugin/gzip.vim
 14: /usr/share/vim/vim74/plugin/logiPat.vim
 15: /usr/share/vim/vim74/plugin/matchparen.vim
 16: /usr/share/vim/vim74/plugin/netrwPlugin.vim
 17: /usr/share/vim/vim74/plugin/rrhelper.vim
 18: /usr/share/vim/vim74/plugin/spellfile.vim
 19: /usr/share/vim/vim74/plugin/tarPlugin.vim
 20: /usr/share/vim/vim74/plugin/tohtml.vim
 21: /usr/share/vim/vim74/plugin/vimballPlugin.vim
 22: /usr/share/vim/vim74/plugin/zipPlugin.vim
 23: ~/.vim/pack/plugins/start/rust.vim/plugin/cargo.vim
 24: ~/.vim/pack/plugins/start/rust.vim/plugin/rust.vim
 25: ~/.vim/pack/plugins/start/rust.vim/ftdetect/rust.vim
 26: /usr/share/vim/vim74/syntax/hercules.vim

与大力神有关的:autocmd filetypedetect输出:

filetype=hercules

没有与锈有关的线

有关大力神的:20详细的main.rs的输出:

*.vc      setf hercules
*.ev      setf hercules
*.rs      setf hercules
*.sum     setf hercules
*.errsum  setf hercules

接下来是关于Hercuels格式的几行内容。

Executing BufRead Auto commands for "*.rs"
autocommand setf hercules
line 0: setf hercules

此搜索框也将在以后重复进行。在输出的最后是这样:

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"

有人可以告诉我如何使vim将文件类型读取为rust而不是大力神吗?

1 个答案:

答案 0 :(得分:1)

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

*.vc      setf hercules
*.ev      setf hercules
*.sum     setf hercules
*.errsum  setf hercules
[...]
*.rs      setf rust

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

:20verbose e main.rs

如果hercules文件类型优先于rust一个(似乎是基于您的编辑),则您要么必须删除hercules一个文件(我想知道*.rs glob来自何处,甚至旧版的Vim 7.4没有它),或按照:help new-filetype中所述定义覆盖: A。如果要否决所有默认文件类型检查。也就是说,使用以下命令创建文件~/.vim/ftdetect/rust.vim

au BufRead,BufNewFile *.rs      set filetype=rust

请注意区别::set filetype=是无条件设置,而默认规则使用的:setf仅在尚未定义的情况下设置(因此,大力神,排在第一位,到目前为止为您赢了)