В этом конкретном случае я бы только поиграл :scriptnames
. Мы не можем ожидать использования глобальной переменной, чтобы проверить, был ли загружен плагин ft - у LaTeXSuite могут быть плагины, я не помню, что точно так это то, что у него есть много сценариев ftplugin. Многие ftplugins используют b:did_ftplugin
(по крайней мере те, которые поставляются с Vim), но этот подход определенно не масштабируется: следовательно, не все ftplugins используют эту бессмысленную переменную, и мы не можем проверить общее имя переменной, чтобы узнать, имеет ли данный ftplugin был загружен - например, для одного только C у меня есть 22 ftplugins, они определенно не используют тот же самый предохранитель от повторного включения.
Так :scriptname
. Увы, :scriptname
дает много неупорядоченных результатов, для наших человеческих глаз. К счастью execute()
(очень недавняя функция) и filter()
прийти на помощь. В этом случае я бы искал связанные с латексом скрипты vim с
:echo filter(split(execute(':scriptname'), "\n"), 'v:val =~? "tex"')
" or even "latex" instead of "tex"
Также, если вы используете менеджер плагинов, вполне вероятно, что менеджер плагинов использует 'runtimepath'
опцию. Вы можете отобразить его значение с помощью :echo &rtp
. Вы даже можете отфильтровать его значение с помощью:
:echo filter(split(&rtp), ','), 'v:val =~? "tex")
(Это скажет вам, активировал ли ваш менеджер плагинов ваш плагин, LaTeX-suite в вашем случае. Это не скажет вам, правильно ли были загружены соответствующие ftplugins. Покажет :scriptname
вам эту информацию.)
Если вы используете vim-plug , он устанавливает переменную под названием,
plugs
которая перечисляет все ваши загруженные плагины и некоторую информацию о них. Я решил ваш вопрос для себя, когда мне нужно было проверить, запущен ли у меня YCM или coc.nvim. Вы можете увидеть, загружается ли плагинhas_key(plugs, "name")
, например:Примечание: это показывает, только если он в данный момент указан в вашем
vimrc
, а не, например, если он установлен на ленивую загрузку, поэтомупо-прежнему будет печатать его при запуске, даже если он
nerdtree
еще не загружен.источник