Подтвердить что ты не робот

VimL: проверка наличия функции

прямо сейчас я очищаю свой файл .vimrc, чтобы убедиться, что он совместим с большинством систем.

В моей строке состояния я использую функцию, которую устанавливает другой плагин, GitBranchInfoString(), введенный этот плагин.

Что я хочу сделать, это проверить, установлена ​​ли эта функция, и только потом добавить ее в строку состояния. Это было бы в его собственной строке, поэтому мне просто нужно проверить его.

Каким будет самый простой способ выполнить это?

Спасибо за вашу помощь!

EDIT:

У меня есть следующее:

if exists('*GitBranchInfoString')
    let &stl.='%{GitBranchInfoString()}'
endif
4b9b3361

Ответ 1

Использование

if exists("*GitBranchInfoString")
    " do stuff here
endif

Ответ 2

Текущий выбранный ответ не работает для меня (с помощью Vim 7.4/Ubuntu). Я считаю, что, поскольку:

.vimrc загружается до загрузки любых плагинов

Как заметил @ZyX в комментарии.

Мой предпочтительный метод - это просто проверить наличие файла плагина. Я считаю это чище, чем запись отдельной функции во внешний файл.

if !empty(glob("path/to/plugin.vim"))
   echo "File exists."
endif

Ответ 3

В качестве альтернативы вы также можете использовать регулярное выражение, чтобы решить, находится ли ваш плагин в вашем runtimepath:

if &rtp =~ 'plugin-name'
    ...
endif

Это имеет то преимущество, что оно работает с плагинами, которые имеют только код vimscript в каталоге autoload, который, в свою очередь, не может быть обнаружен, когда .vimrc изначально анализируется, так как фрагменты автозагрузки загружаются во время функции звоните.