Попробуйте сделать следующее:
:set eventignore=all | bd | set eventignore=
Если это не приведет к выходу из vim, у вас есть плагин, который определяет автокоманду, которая завершает vim, когда в списке больше нет буферов, поэтому после этого попробуйтеdo
verbose autocmd BufWinLeave,BufLeave,BufDelete,BufUnload,BufWipeout
Это покажет вам все автокоманды, прикрепленные к данным событиям (это события, которые выполняются при удалении буфера) и где они были определены.Обратите внимание, что к этим событиям не прикреплены автокоманды, определяемые плагинами в стандартном дистрибутиве vim.
Обновление: Я не вижу ничего плохого в ваших выходных данных.Вы также можете попробовать
verbose autocmd BufNew,BufAdd,BufCreate,BufEnter,BufWinEnter
(поскольку при выходе из последнего буфера создается новый пустой).Если это не показывает ничего подозрительного, начните игнорировать типы событий: если вы используете Linux, попробуйте следующий сценарий:
for event in BufWinLeave BufLeave BufDelete BufUnload BufWipeout BufNew BufAdd BufCreate BufEnter BufWinEnter
do
event=$event vim file -c "set eventignore=$event | bd"
done
Этот сценарий должен повторяться, пока вы не найдете имя события, которое вызывает проблемы.После этого вы можете использовать execute "verbose autocmd" $event
в vim для сужения количества плагинов, которые должны быть проверены.После того, как вы получите список групп autocmd (имена аугрупп отображаются сразу перед именем события в выходных данных: railsPluginDetect
- одна из таких групп), удалите в них события (augroup {GroupName} | execute 'autocmd!' | augroup END
) и выясните, какой плагин требовать.
В качестве альтернативы вы можете использовать отладчик:
debug bd
, затем s<CR>n<CR><CR><CR>...
, пока vim не закроется;не забудьте запомнить, что vim показывал выше >
, прежде чем выйти.