Поскольку беглец не определяет fugitive#statusline
в каталоге autoload
, его, к сожалению, нельзя отследить, используя технику silent! call
/ exists
(Спасибо @Christopher).Однако есть несколько альтернатив:
- Поместите троичную ветвь в ваш параметр
'statusline'
, как предложено @tungd. - Установите
'statusline'
в файле after/plugin
, как предлагает @Christopher,Это решает проблему, но означает, что ваша строка состояния определена в довольно маловероятном месте, поэтому, вероятно, было бы лучше добавить хороший комментарий в ваш файл ~/.vimrc
. - Просто определите функцию в вашем файле
~/.vimrc
.
Пример:
if !exists('*fugitive#statusline')
function! fugitive#statusline()
return ''
endfunction
endif
- Другой вариант - использовать событие
Fugitive
autocmd
, которое определяет Fugitive.Обратите внимание, что это сработает только тогда, когда Fugitive обнаружит каталог git.
Поместите что-то подобное в ваш файл ~/.vimrc
:
augroup fugitive_status
autocmd!
autocmd user Fugitive set statusline=%<\ %f\ %{fugitive#statusline()} ...
augroup END
Лично я считаю, что решение @tungd - этоПростейшие.Однако, просто определить фиктивную функцию было бы моим следующим выбором.Беглец переопределит его, если Беглец установлен.Самое приятное то, что это делает ваш вариант 'statusline'
опрятным и чистым.