根據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