5

Vim 有一个很好的功能,可以在前一个会话崩溃时恢复文件。发生这种情况时,Vim 会显示如下内容:

Swap file "~/Desktop/.file.txt.swp" already exists!
[O]pen Read-Only, (E)dit anyway, (R)ecover, (Q)uit, (A)bort:

在大多数情况下,我会恢复文件,r每次 vim 崩溃时按下它都会很烦人。

  1. 我希望恢复是自动的。

问题不止于此。即使文件已恢复,交换文件仍然存在,并且该提示再次出现。

  1. 如果发生恢复,我希望删除交换文件。

所以每次在这种情况下,我想静默恢复并删除交换文件。

4

2 回答 2

4

我还没有尝试过,但我认为你可以使用这个:

augroup AutomaticSwapRecoveryAndDelete
    autocmd!
    autocmd SwapExists * :let v:swapchoice = 'r' | let b:swapname = v:swapname 
    autocmd BufWinEnter * :if exists("b:swapname") | call delete(b:swapname) | unlet b:swapname | endif
augroup end

请参阅:h v:swapchoice:h v:swapcommand:h v:swapname:h SwapExists

于 2013-08-25T09:50:25.097 回答
3

由于只要您正在编辑缓冲区,交换文件就应该存在,我宁愿将 elmart 答案的第二个自动命令替换为

augroup AutomaticSwapRecoveryAndDelete
    autocmd!
    autocmd SwapExists * :let v:swapchoice = 'r' | let b:swapname = v:swapname 
    autocmd VimLeave * :if exists("b:swapname") | call delete(b:swapname) | endif
augroup end

:DiffOrig此外,当您对swap 和 original 之间的区别有疑问时,这将允许您使用。

于 2015-03-11T10:54:14.577 回答