我在〜/ .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而不是大力神吗?
答案 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
仅在尚未定义的情况下设置(因此,大力神,排在第一位,到目前为止为您赢了)