Eklentileri koşullu olarak yükleme


14

Buna bir cevap arıyordum, ancak henüz bir şey bulamadım, bu yüzden açık bir şeyi kaçırırsam özür dilerim. Ben hızlı bir google arama uzakta olacağını düşündüm, bu yüzden belki düşündüğümden daha karmaşık.

Düzenlediğim dosya türüne göre eklentileri koşullu olarak yükleyebilmek istiyorum. Örneğin, python düzenlerken, vim-sexpyüklenen tuş bağlantılarını istemiyorum , ancak clojure üzerinde çalışırken, bu eklentinin yüklenmesini istiyorum.

Şu anda neovim ve patojen kullanıyorum, ancak bunu benim için yapan farklı bir eklenti yöneticisi varsa, geçişe açık olurum. Ayrıca, bu varsa, :set syntax whatevereklentileri değiştirir mi? Çünkü bu süper olur :)

Herhangi bir yardım / yön için şimdiden teşekkürler!


1
Bir soru soruyorsunuz, ancak aslında başka bir tanesini açıklıyorsunuz: bir eklenti genel anahtar bağlamaları yüklerse, bunları devre dışı bırakın (nasıl yapılacağı hakkında eklenti belgelerini okuyun) ve bunları yalnızca dosya türleri için yerel olarak yeniden etkinleştirin (örneğin autocmds kullanarak) istemek. Eklenti iyi yazılmışsa, başlatılmasını geciktirerek çok fazla kazanamazsınız. Ancak , bir eklenti tarafından etkinleştirilen istenmeyen genel tuş bağlantılarını devre dışı bırakmazsanız , eklenti yüklendikten sonra yine de sizi etkilerler .
VanLaser

Yanıtlar:


19

Bunu Vim-Plug ile yapabilirsiniz. README'ye bakın :

" On-demand loading
Plug 'scrooloose/nerdtree', { 'on':  'NERDTreeToggle' }
Plug 'tpope/vim-fireplace', { 'for': 'clojure' }

Eklentiyi etkinleştirmek :set filetype whateveryerine kullanmanız gerektiğini düşünüyorum set syntax whatever.

(Başka bir eklenti yöneticisi bunu yapmanıza izin verebilir, bkz . Vim eklenti yöneticileri arasındaki fark nedir? )


8

execute pathogen#infect()Tüm eklentileri yüklemek için çağrı yapmak yerine, pathogen#interposeher eklentiyi arayın , yani:

execute pathogen#interpose('bundle/unicode.vim')
execute pathogen#interpose('bundle/AnsiEsc.vim')

Patojen API'si kaynak dışında belgelenmemiştir , ancak yeterince basittir (işlev adları belirsiz ve açıklayıcı olmasa da). pathogen#surround()Mutlak yollar için de kullanabilirsiniz .

Eklentileri bir temel ile koşullu olarak yükleyebilirsiniz autocmd:

" Always use this plugin
execute pathogen#interpose('bundle/unicode.vim')

" Only for Python
autocmd FileType python execute pathogen#interpose('bundle/vim-sexp')

Bu vakaların çoğuna sahip olduğunuzu fark ederseniz, onu farklı yollara bile ayırabilirsiniz:

  • ~/.vim/bundle/always her zaman istediğiniz eklentiler için
  • ~/.vim/bundle/<filetype> belirli bir dosya türü için eklentiler için
  • Ve sonra böyle yükleyin:

    " Always use this plugin
    execute pathogen#infect('bundle/always/{}')
    
    " Load filetype plugins if they exist
    autocmd FileType * if isdirectory('/home/martin/.vim/bundle/' . &ft) | execute pathogen#infect('bundle/' . &ft. '/{}') | endif
    

Bu şekilde autocmd, her dosya türü / eklenti için bir sürü s eklemek zorunda kalmazsınız .

bu varsa, :set syntax whatevereklentileri değiştirir mi? Çünkü bu süper olur :)

  • Bir eklenti yüklendikten sonra yüklenir. Bir "eklentisi" basitçe topluluğudur function, commandve mapdefinitons. Bunu "boşaltmak" için kolay bir yol bilmiyorum.

  • Bu does kullandığınız IFF bir dosya türleriyle yük eklentileri :set filetype; Genel olarak, her zaman kullanmak istiyorsanız :set filetypeve değil :set syntax gibi syntaxsadece girinti ve diğer ayarları (örn dizimi vurgulama ayarlayın ve olmayacak iskeyword, formatexprvs.).

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.