Vim выходит после удаления буфера (bd) - PullRequest
9 голосов
/ 24 апреля 2011

Согласно ответу на этот вопрос :bd не должен выходить из Vim (GVim), когда он является последним буфером.К сожалению, это закрывает GVim в моем случае.Я понял что-то не так с bd?

Я также использую предварительно настроенный файл vimrc .Может быть, настройки там имеют этот побочный эффект, но я не смог его найти.

1 Ответ

16 голосов
/ 24 апреля 2011

Попробуйте сделать следующее:

: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 показывал выше >, прежде чем выйти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...