Szukałem odpowiedzi na to pytanie, ale niczego jeszcze nie znalazłem, więc jeśli coś przeoczyłem, przepraszam. Myślałem, że będzie to szybkie wyszukiwanie google, więc może to bardziej skomplikowane niż myślałem.
Chciałbym móc warunkowo ładować wtyczki na podstawie typu pliku, który edytuję. Na przykład podczas edytowania Pythona nie chcę, aby vim-sexp
instalowane były skróty klawiszowe , ale podczas pracy z clojure chcę, aby wtyczka została załadowana.
Obecnie używam neovim i patogenu, ale jeśli istnieje inny menedżer wtyczek, który robi to za mnie, byłbym otwarty na przełączanie. A jeśli tak, to czy :set syntax whatever
przełącza wtyczki? Bo to by było super :)
Z góry dziękuję za wszelką pomoc / kierunek!
Odpowiedzi:
Możesz to zrobić za pomocą Vim-Plug. Zobacz README :
Myślę, że będziesz musiał użyć
:set filetype whatever
zamiastset syntax whatever
włączyć wtyczkę.(Niektóre inne menedżery wtyczek mogą na to pozwolić, zobacz Jaka jest różnica między menedżerami wtyczek vim? )
źródło
Zamiast wywoływać w
execute pathogen#infect()
celu załadowania wszystkich wtyczek, wzywajpathogen#interpose
każdą wtyczkę, tj .:Interfejs API patogenu nie jest udokumentowany poza źródłem , ale jest dość prosty (nawet jeśli nazwy funkcji są niejasne i nie mają charakteru opisowego). Możesz także użyć
pathogen#surround()
do absolutnych ścieżek.Wtyczki można ładować warunkowo za pomocą podstawowego
autocmd
:Jeśli okaże się, że masz wiele takich przypadków, możesz nawet podzielić je na różne ścieżki:
~/.vim/bundle/always
dla wtyczek, których zawsze chcesz~/.vim/bundle/<filetype>
dla wtyczek dla określonego rodzaju plikuA następnie załaduj tak:
W ten sposób nie musisz dodawać całej wiązki
autocmd
s dla każdego rodzaju pliku / wtyczki.Po załadowaniu wtyczki jest ona ładowana. A „wtyczki” jest po prostu zbiorem
function
,command
imap
definicjami. Nie znam żadnego prostego sposobu na „rozładowanie” tego.To robi wtyczek obciążenia dla typu pliku wtw użyć
:set filetype
; Ogólnie rzecz biorąc, zawsze chcesz używać:set filetype
, a nie:set syntax
, jaksyntax
tylko ustawić podświetlanie składni, a nie wcięcia i inne ustawienia (npiskeyword
,formatexpr
etc.).źródło