Eu estava procurando uma resposta para isso, mas ainda não encontrei nada, por isso, se perdi algo óbvio, peço desculpas. Eu pensei que seria uma rápida pesquisa no Google, então talvez seja mais complicado do que eu pensava.
Gostaria de poder carregar plugins condicionalmente com base no tipo de arquivo que estou editando. Por exemplo, ao editar python, não quero as combinações de teclas vim-sexp
instaladas, mas ao trabalhar no clojure, desejo que esse plug-in seja carregado.
Atualmente, estou usando neovim e patógeno, mas se houver um gerenciador de plugins diferente que faça isso por mim, eu estaria aberto a alternar. Além disso, se isso existir, :set syntax whatever
os plugins são trocados? Porque isso seria super :)
Agradecemos antecipadamente por qualquer ajuda / direção!
fonte
Respostas:
Você pode fazer isso com o Vim-Plug. Veja o README :
Eu acho que você terá que usar em
:set filetype whatever
vez deset syntax whatever
ativar o plugin.(Alguns outros gerenciadores de plugins podem permitir que você faça isso, consulte Qual é a diferença entre os gerenciadores de plugins do vim? )
fonte
Em vez de chamar
execute pathogen#infect()
para carregar todos os plug-ins, chamepathogen#interpose
todos os plug-ins, ou seja:A API do patógeno não está documentada fora da fonte , mas é bastante simples (mesmo que os nomes das funções sejam obscuros e não descritivos). Você também pode usar
pathogen#surround()
para caminhos absolutos.Você pode carregar plugins condicionalmente com um básico
autocmd
:Se você achar que tem muitos desses casos, poderá dividi-lo em diferentes caminhos:
~/.vim/bundle/always
para plugins que você sempre quer~/.vim/bundle/<filetype>
para plugins para um tipo de arquivo específicoE, em seguida, carregue-o assim:
Dessa forma, você não precisa adicionar um monte de
autocmd
s para cada tipo de arquivo / plugin.Depois que um plug-in é carregado, ele é carregado. A "plug-in" é simplesmente uma coleção de
function
,command
emap
definição dada. Não conheço nenhuma maneira direta de "descarregar" isso.Ele faz plugins de carga para um filetype sse você usa
:set filetype
; Em geral, você sempre quer usar:set filetype
e não:set syntax
, comosyntax
só vai definir o destaque de sintaxe, e não o recuo e outras configurações (por exemploiskeyword
,formatexpr
, etc.).fonte