根据answer of this question :bd
,当它是最后一个缓冲区时,不应该退出Vim(GVim)。不幸的是,在我的情况下它确实关闭了GVim。我对bd有什么不妥吗?
我也在使用预配置的vimrc文件。也许那里的场景会产生那种影响,但我找不到它。
答案 0 :(得分:16)
尝试执行以下操作:
:set eventignore=all | bd | set eventignore=
如果这不会退出vim那么你有一些插件定义了一个自动命令,当列表中不再有缓冲区时退出vim,所以在那之后尝试
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
此脚本应该迭代,直到找到导致问题的事件名称。在此之后,您可以在vim中使用execute "verbose autocmd" $event
来缩小应检查的插件数量。获得autocmd组列表后(在输出中的事件名称之前显示了augroup名称:railsPluginDetect
是其中一个组),删除其中的事件(augroup {GroupName} | execute 'autocmd!' | augroup END
)并找出要声明的插件
或者,您可以使用调试器:
debug bd
,然后s<CR>n<CR><CR><CR>...
直到vim退出;不要忘记在退出之前记住vim在>
提示上面显示的内容。