Bir eklentinin etkin olup olmadığı nasıl görülür?


15

vim-latexsuiteUygun dosyayı açtığımda bir dosya türü eklentisinin (örneğin ) yüklü olup olmadığını nasıl belirleyebilirim ? Bir başka popüler editör, ilgili "küçük mod" un aktif olduğunu gösterecektir. Vim eşdeğeri nedir?

Yanıtlar:


20

Bir dosya türü eklentisinin (vim-latexsuite gibi) yüklü olup olmadığını nasıl belirleyebilirim?

:scriptnamesTüm kaynaklı dosyaları içeren listeyi kullanabilirsiniz .

Diğer bir seçenek, eklentinin yüklü olup olmadığını gösteren değişkeni kontrol etmektir recommended practice to allow the user to disable the loading of a given plugin.. g:loaded_...Değişkeni genellikle <plugin_name>/pluginklasörün içinde bulabilirsiniz . Bahsettiğiniz eklenti için kullanabilirsiniz echo exists("loaded_libList").

ve uygun dosyayı açtığımda etkinleştirilsin mi?

Bir dosya türü eklentisiyse, 'filetype'seçenek ayarlandığında otomatik olarak etkinleştirilmelidir . Seçeneğin geçerli arabellek için doğru olup olmadığını kontrol edebilirsiniz:

:set filetype?

Bir başka popüler editör ilgili "küçük mod" un aktif olduğunu gösterir. Vim eşdeğeri nedir?

Durum satırınızı, eklentileri kullanarak veya doğrudan seçenekler aracılığıyla vi-improved.org:help 'statusline' adresinde açıklandığı gibi gösterecek şekilde özelleştirebilirsiniz .


6

Vim eklentileri herhangi bir aktivasyon göstergesi ile birlikte gelmez ve uygun bir kurulumda bu gerekli değildir.

Bir eklentinin etkin olup olmadığını hızlı bir şekilde, genellikle eşlemeler olmak üzere yan etkilerini sorgulayarak kontrol edebilirsiniz. Yani, örneğin, NERDCommenter eşlemeleri ile başladığını biliyorum <Leader>c, bu yüzden aktivasyonu için bir sorgu olurdu :nmap <Leader>c. Eşlemeler listeleniyorsa eklenti etkindir. Aynı şey özel komutlar için ve :autocmdeklentinin grubunda da elde edilebilir . Çoğu eklenti ayrıca g:loaded_pluginnamekontrol edilebilen bir içerme koruması değişkeni tanımlar .

Aynı şey dosya türü eklentileri için de geçerlidir (ve efektlerin tümü arabellek kapsamına alınmalıdır). Aktif eklentileri belirlemede en önemli faktör dosya türünün doğru algılanmasıdır. Bunu aracılığıyla sorgulayabilir :setlocal filetype?, hatta içine koymak 'statusline'yoluyla %y/ %Yöğesi.


6

Bu durumda, sadece ile oynarım :scriptnames. Bir ft eklentisinin yüklü olup olmadığını kontrol etmek için küresel bir değişken kullanmayı bekleyemeyiz - LaTeXSuite eklentileri olabilir, hatırlamıyorum, kesin ftplugin komut dosyalarının olduğu kesin. Birçok ftplugin (en azından Vim ile gönderilenler) kullanır, ancak bu yaklaşım kesinlikle ölçeklenmez: sonuç olarak, tüm ftpluginler bu anlamsız değişkeni kullanmaz ve belirli bir ftplugin'in olup olmadığını bilmek için genel bir değişken adı kontrol edemeyiz yüklendi - örneğin, sadece C için 22 ft eklentim var, kesinlikle aynı reenklüzyon korumasını kullanmıyorlar.b:did_ftplugin

Yani :scriptname. Alas :scriptname, insan gözümüz için çok sayıda sıra dışı sonuç verir. Neyse ki execute()(çok yeni bir işlev) ve filter()kurtarmaya gelin. Bu durumda, lateksle ilgili vim komut dosyalarını

:echo filter(split(execute(':scriptname'), "\n"), 'v:val =~? "tex"') 
" or even "latex" instead of "tex"

Ayrıca bir eklenti yöneticisi kullanıyorsanız, muhtemelen eklenti yöneticisi 'runtimepath'seçeneği kullanıyor olabilir . Değerini ile görüntüleyebilirsiniz :echo &rtp. Hatta değerini şununla filtreleyebilirsiniz:

:echo filter(split(&rtp), ','), 'v:val =~? "tex")

(Bu, eklenti yöneticinizin sizin durumunuzdaki eklenti LaTeX-suite'i etkinleştirip etkinleştirmediğini size söyleyecektir. Bu, ilgili ftplugin'lerin doğru yüklenip yüklenmediğini size söylemez. :scriptnameSize bu bilgileri verecektir.)


3

Filetype eklentilerini autocommands ile etkinleştirirseniz, Vim'in autocommand'ları yürütürken yankılanması için verbose = 9 değerini ayarlayabilirsiniz:

:set verbose=9

3

Bunun bir yolu aşağıdaki konularda normal ifade araması yapmaktır runtimepath:

if match(&runtimepath, 'MY-PLUGIN') != -1
    " ...
endif

Vim-plug kullanıyorsanız , kontrol etmek için genel amaçlı bir yöntem:

function! PlugLoaded(name)
    return (
        \ has_key(g:plugs, a:name) &&
        \ isdirectory(g:plugs[a:name].dir) &&
        \ stridx(&rtp, g:plugs[a:name].dir) >= 0)
endfunction

Kullanımı:

if PlugLoaded('MY-PLUGIN')
    " ...
endif

Yeterli değil. Ayrıca, yalnızca eklenti yöneticileri ile yüklenen eklentileri halleder. Her durumda, OP 'sorusu olan eklentiler içinde gönderilen ftplugin betikleriyle ilgilenmez.
Luc Hermitte

0

Vim-plug kullanırsanız plugs, yüklü tüm eklentilerinizi ve bunlarla ilgili bazı bilgileri listeleyen bir değişken ayarlar . YCM veya coc.nvim çalıştırıp çalıştırmadığımı kontrol etmem gerektiğinde sorunuzu kendim çözdüm. Bir eklentinin yüklenerek yüklenip yüklenmediğini görebilirsiniz has_key(plugs, "name"), örneğin:

if has_key(plugs, 'YouCompleteMe')
        call YCM()
endif
if has_key(plugs, "coc.nvim")
        call CocStart()
endif

Not: Bu yalnızca şu anda listenizde vimrcolup olmadığını gösterir, örneğin tembel yüke ayarladıysanız, bu nedenle

    Plug 'scrooloose/nerdtree', {'on': 'NERDTreeToggle'}
    ...
if has_key(plugs, 'nerdtree')
        echo "HAS NERDTREE"
endif

nerdtreehenüz yüklenmemiş olsa bile başlangıçta bunu yazdıracaktır .

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.