Dalam kasus khusus itu, saya hanya bermain dengan :scriptnames
. Kita tidak dapat berharap untuk menggunakan variabel global untuk memeriksa apakah plugin ft telah dimuat - LaTeXSuite mungkin memiliki plugin, saya tidak ingat, yang pasti adalah bahwa ada banyak skrip ftplugin. Banyak ftplugin menggunakan b:did_ftplugin
(yang dikirimkan dengan Vim setidaknya), tetapi pendekatan ini jelas tidak skala: akibatnya, tidak semua ftplugin menggunakan variabel tak berguna ini, dan kami tidak dapat memeriksa nama variabel generik untuk mengetahui apakah ftplugin tertentu memiliki telah dimuat - misalnya, untuk C saja saya punya 22 ftplugins, mereka pasti tidak menggunakan penjaga anti-reinklusi yang sama.
Jadi :scriptname
. Alas :scriptname
memberikan banyak hasil yang tidak teratur, bagi mata manusia kita. Untungnya execute()
(fungsi yang sangat baru), dan filter()
datang untuk menyelamatkan. Dalam hal ini, saya akan mencari skrip vim terkait lateks dengan
:echo filter(split(execute(':scriptname'), "\n"), 'v:val =~? "tex"')
" or even "latex" instead of "tex"
Juga jika Anda menggunakan pengelola plugin, kemungkinan pengelola plugin menggunakan 'runtimepath'
opsi. Anda dapat menampilkan nilainya dengan :echo &rtp
. Anda bahkan dapat memfilter nilainya dengan:
:echo filter(split(&rtp), ','), 'v:val =~? "tex")
(Ini akan memberi tahu Anda apakah pengelola plugin Anda telah mengaktifkan plugin Anda, LaTeX-suite dalam kasus Anda. Ini tidak akan memberi tahu Anda apakah ftplugins terkait telah dimuat dengan benar. :scriptname
Akan memberikan informasi ini kepada Anda.)
Jika Anda menggunakan vim-plug , itu menetapkan variabel yang disebut
plugs
yang mencantumkan semua plugin yang dimuat, dan beberapa informasi tentang mereka. Saya memecahkan pertanyaan Anda sendiri ketika saya perlu memeriksa apakah saya menjalankan YCM atau coc.nvim. Anda dapat melihat apakah plugin dimuat dengan menjalankanhas_key(plugs, "name")
, misalnya:Catatan: ini hanya menunjukkan jika saat ini terdaftar di Anda
vimrc
, dan tidak, misalnya, jika Anda mengaturnya untuk memuat malas, jadimasih akan mencetaknya saat startup, meskipun
nerdtree
belum dimuat.sumber