如果以前的会话崩溃,Vim有一个很好的功能来恢复文件。当它发生时,Vim显示出类似的东西:
Swap file "~/Desktop/.file.txt.swp" already exists!
[O]pen Read-Only, (E)dit anyway, (R)ecover, (Q)uit, (A)bort:
在大多数情况下,我会恢复文件,并且每次vim崩溃时都会按 r 。
问题不会在这里结束。即使文件已被恢复,交换文件仍然存在,并且该提示再次出现。
所以每次在这种情况下,我都希望以静默方式恢复并删除交换文件。
答案 0 :(得分:2)
我没有尝试过,但我认为你可以使用它:
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
答案 1 :(得分:1)
由于交换文件应该存在,只要你正在编辑缓冲区,我就应该用
替换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
此外,如果对swap和original之间的区别有疑问,那么你可以使用:DiffOrig
。