vim-latexsuite
Uygun 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?
vim-latexsuite
Uygun 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:
Bir dosya türü eklentisinin (vim-latexsuite gibi) yüklü olup olmadığını nasıl belirleyebilirim?
:scriptnames
Tü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>/plugin
klasö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 .
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 :autocmd
eklentinin grubunda da elde edilebilir . Çoğu eklenti ayrıca g:loaded_pluginname
kontrol 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.
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. :scriptname
Size bu bilgileri verecektir.)
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
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 vimrc
olup 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
nerdtree
henüz yüklenmemiş olsa bile başlangıçta bunu yazdıracaktır .