对错误运行vim命令?

时间:2013-02-04 15:44:58

标签: vim macvim

好的,这个问题与我以前的一个问题含糊不清:

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 个答案:

答案 0 :(得分: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(),当然可以为该函数调用创建映射。