根据answer of this question:bd
当它是最后一个缓冲区时不应该退出Vim(GVim)。不幸的是,它在我的情况下关闭了GVim。我了解bd有什么问题吗?Vim在缓冲区删除后退出(bd)
我也在使用预配置的vimrc文件。也许在那里有一个设置有影响,但我找不到它。
根据answer of this question:bd
当它是最后一个缓冲区时不应该退出Vim(GVim)。不幸的是,它在我的情况下关闭了GVim。我了解bd有什么问题吗?Vim在缓冲区删除后退出(bd)
我也在使用预配置的vimrc文件。也许在那里有一个设置有影响,但我找不到它。
试着做以下几点:
:set eventignore=all | bd | set eventignore=
如果这不会退出VIM然后你有一些插件,它定义了退出的时候没有更多的缓冲区在列表VIM自动命令,让后尝试做
verbose autocmd BufWinLeave,BufLeave,BufDelete,BufUnload,BufWipeout
这将显示您连接到给定事件的所有自动命令(这些都是当缓冲区被删除时执行的事件),并定义它们的位置。请注意,我没有任何自动命令附加到由standart vim distribution中的插件定义的这些事件。
更新:我没有看到你的输出有什么不好。你也可以尝试
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在>
之上显示的内容。
我试过你的.vimrc文件,但没有相同的问题。它一定是别的东西导致它。 – nocash 2011-04-24 01:21:56
感谢您试用我的vimrc。正如ZyX所说,它似乎是一个插件的问题。我在他的回答下发布了他推荐的命令的输出。 – Zardoz 2011-04-24 10:04:26
我真的很好奇插件是怎么造成的。我希望实际上拥有这个功能。 – 2014-07-22 09:43:15