在出现错误时运行vim命令?
好的,这个问题和我之前的一个问题有点关系: 基本上,我找到的解决方案(或者非常接近我想要的)是一个名为BufOnly的插件,它基本上关闭了所有未修改的缓冲区。所以当我有很多缓冲区打开,我想关闭时,我只运行这个,然后处理所有我还没有处理的事情。它工作得很好 但我很贪婪。我希望在需要时自动执行。基本上我希望这样,如果我运行qa,如果qa运行--> 那我要跑了在出现错误时运行vim命令?,vim,macvim,Vim,Macvim,好的,这个问题和我之前的一个问题有点关系: 基本上,我找到的解决方案(或者非常接近我想要的)是一个名为BufOnly的插件,它基本上关闭了所有未修改的缓冲区。所以当我有很多缓冲区打开,我想关闭时,我只运行这个,然后处理所有我还没有处理的事情。它工作得很好 但我很贪婪。我希望在需要时自动执行。基本上我希望这样,如果我运行qa,如果qa运行--> 那我要跑了 :BufOnly<CR>:bd <cr> :BufOnly:bd 有没有办法做到这一点?您可以使用vim的try
:BufOnly<CR>:bd <cr>
:BufOnly:bd
有没有办法做到这一点?您可以使用vim的try-catch机制编写函数。例如:
function! Funk()
try
execute "qa"
let yes = 1
catch /^Vim\%((\a\+)\)\=:E37/
execute "BufOnly"
execute "bd"
endtry
endfunction
这将捕获错误:E37
,并执行所需的命令。我没有安装那个插件,因此我没有用BufOnly进行测试。我用“hgg
”进行了测试,它显示了gg
要调用该命令,请键入:call Funk()
,当然可以为该函数调用创建映射
function! Funk()
try
execute "qa"
let yes = 1
catch /^Vim\%((\a\+)\)\=:E37/
execute "BufOnly"
execute "bd"
endtry
endfunction