Ответ 1
Использование
if exists("*GitBranchInfoString")
" do stuff here
endif
прямо сейчас я очищаю свой файл .vimrc
, чтобы убедиться, что он совместим с большинством систем.
В моей строке состояния я использую функцию, которую устанавливает другой плагин, GitBranchInfoString()
, введенный этот плагин.
Что я хочу сделать, это проверить, установлена ли эта функция, и только потом добавить ее в строку состояния. Это было бы в его собственной строке, поэтому мне просто нужно проверить его.
Каким будет самый простой способ выполнить это?
Спасибо за вашу помощь!
EDIT:
У меня есть следующее:
if exists('*GitBranchInfoString')
let &stl.='%{GitBranchInfoString()}'
endif
Использование
if exists("*GitBranchInfoString")
" do stuff here
endif
Текущий выбранный ответ не работает для меня (с помощью Vim 7.4/Ubuntu). Я считаю, что, поскольку:
.vimrc загружается до загрузки любых плагинов
Как заметил @ZyX в комментарии.
Мой предпочтительный метод - это просто проверить наличие файла плагина. Я считаю это чище, чем запись отдельной функции во внешний файл.
if !empty(glob("path/to/plugin.vim"))
echo "File exists."
endif
В качестве альтернативы вы также можете использовать регулярное выражение, чтобы решить, находится ли ваш плагин в вашем runtimepath
:
if &rtp =~ 'plugin-name'
...
endif
Это имеет то преимущество, что оно работает с плагинами, которые имеют только код vimscript в каталоге autoload
, который, в свою очередь, не может быть обнаружен, когда .vimrc изначально анализируется, так как фрагменты автозагрузки загружаются во время функции звоните.