好的,这个问题与我以前的一个问题含糊不清:
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>
有办法吗?
答案 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()
,当然可以为该函数调用创建映射。