не работает определение типа файла плагина rust vim - PullRequest
0 голосов
/ 16 января 2019

Я установил плагин rust.vim в ~ / .vim / pack / plugins / start. Если я открою файл с именем main.rs и введите : scriptnames, вот вывод

`

 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

`

Если я наберу: set ft, вот вывод:

filetype=hercules

Вывод: autocmd filetypedetect, относящийся к геркулесу:

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

Нет линий, относящихся к ржавчине

Вывод: 20 verbose e main.rs, относящихся к геркулесу:

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"

Этот блок поиска также повторяется позже. В самом конце вывода это:

 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>"))

Кто-нибудь может сказать мне, как заставить vim считать тип файла ржавчиной вместо геркулеса?

1 Ответ

0 голосов
/ 16 января 2019

Проверьте вывод :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 имеет приоритет над ржавым (как, кажется, имеет место на основе ваших правок), вы должны либо удалить файл hercules (интересно, откуда взялся этот шар *.rs, даже мой старый Vim 7.4 не имеет его), или определите переопределение, как описано в :help new-filetype: A. Если вы хотите отменить все проверки типов файлов по умолчанию. То есть создайте файл ~/.vim/ftdetect/rust.vim с помощью:

au BufRead,BufNewFile *.rs      set filetype=rust

Обратите внимание на разницу: :set filetype= является безусловной настройкой, тогда как :setf, используемая правилами по умолчанию, устанавливается, только если она еще не определена (поэтому геркулес, стоящий первым, выигрывает для вас, поэтому далеко).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...