2013-02-04 136 views
0

好了,所以這個問題是隱約涉及到我以前的一個問題:對錯誤運行vim命令?

I want Vim to be able to save and close similarly to Photoshop in regards to buffers?

基本上,我發現(或變得非常接近我想要的)的解決方案,是一個叫BufOnly插件,它基本上關閉所有尚未修改的緩衝區。所以當我有很多緩衝器打開並且我想關閉時,我只是運行這個,然後關心我還沒有做的所有事情。它運作良好。

但我很貪心。我希望在需要時自動執行此操作。基本上,我想這麼說,如果我跑QA,QA是否運行到 - >

E73: No write since list change (add ! to override) 

然後我想運行

:BufOnly<CR>:bd <cr> 

有沒有辦法做到這一點?

回答

1

你可以用vim的try-catch機制寫一個函數。例如:

function! Funk() 
    try 
     execute "qa" 
     let yes = 1 
    catch /^Vim\%((\a\+)\)\=:E37/ 
      execute "BufOnly" 
      execute "bd" 
    endtry 
endfunction 

這將捕獲錯誤:E37並執行所需的命令。我沒有安裝該插件,因此我沒有使用BufOnly進行測試。我使用「h gg」進行了測試,它顯示幫助頁面gg

調用該命令,輸入:call Funk(),當然您可以爲該函數調用創建映射。

+0

美麗:好東西 – xckpd7