Я искал ответ на этот вопрос, но пока ничего не нашел, поэтому, если я пропустил что-то очевидное, я прошу прощения. Я думал, что это будет быстрый поиск в Google, так что, может быть, это сложнее, чем я думал.
Я хотел бы иметь возможность загружать плагины в зависимости от типа редактируемого файла. Например, при редактировании python я не хочу, чтобы vim-sexp
устанавливалась комбинация клавиш , но при работе с clojure я хочу, чтобы этот плагин загружался.
В настоящее время я использую neovim и pathogen, но если есть другой менеджер плагинов, который сделает это для меня, я буду открыт для переключения. Кроме того, если это существует, :set syntax whatever
переключает ли плагины? Потому что это было бы супер :)
Заранее спасибо за любую помощь / направление!
Ответы:
Вы можете сделать это с Vim-Plug. Смотрите README :
Я думаю, вам придется использовать
:set filetype whatever
вместо того,set syntax whatever
чтобы включить плагин.(Некоторые другие менеджеры плагинов могут позволить вам сделать это, см. В чем разница между менеджерами плагинов vim? )
источник
Вместо вызова
execute pathogen#infect()
для загрузки всех плагинов, вызовpathogen#interpose
для каждого плагина, то есть:API патогенов не документирован вне источника , но он достаточно прост (хотя имена функций неясны и не описательны). Вы также можете использовать
pathogen#surround()
для абсолютных путей.Вы можете загружать плагины условно с помощью
autocmd
:Если вы обнаружите, что у вас есть много таких случаев, вы можете даже разбить его на разные пути:
~/.vim/bundle/always
для плагинов вы всегда хотите~/.vim/bundle/<filetype>
для плагинов для определенного типа файлаА затем загрузить его так:
Таким образом, вам не нужно добавлять целую кучу
autocmd
s для каждого типа файла / плагина.Как только плагин загружен, он загружается. А «плагин» это просто коллекция
function
,command
иmap
definitons. Я не знаю ни одного простого способа «разгрузить» это.Это делает загрузки подключаемые модули для типов файлов тогда и только тогда вы используете
:set filetype
; В общем, вы всегда хотите использовать,:set filetype
а не:set syntax
, так какsyntax
будет только устанавливать подсветку синтаксиса, а не отступ и другие настройки (напримерiskeyword
,formatexpr
и т. Д.).источник