如何在Neovim中自动显示文件与其交换文件的差异?
在Neovim中查看交换文件与原文件的差异
手动临时查看差异(无需配置)
当看到E325提示时,先选择(Q)uit退出当前会话,在终端执行以下命令直接对比:
nvim -r /home/john/thesis.md -d /home/john/thesis.md
该命令会从交换文件恢复内容,并与原文件打开对比窗口,直观展示两者的差异。
也可以先将交换文件恢复到临时文件,再进行对比:
# 把交换文件恢复到临时文件 nvim -r /home/john/thesis.md -w /tmp/recovered.md # 对比临时文件和原文件 nvim -d /tmp/recovered.md /home/john/thesis.md
完成查看后,清理临时文件和无用的交换文件即可。
自动显示差异(Neovim配置)
如果希望每次触发交换文件提示时自动弹出差异窗口,可添加以下配置:
Lua 配置(init.lua)
vim.api.nvim_create_autocmd("SwapExists", { callback = function(args) vim.v.swapchoice = "q" -- 跳过默认选择提示 vim.cmd(string.format("recover %s", args.file)) -- 恢复交换文件内容 vim.cmd(string.format("split %s", args.file)) -- 打开原文件到新窗口 vim.cmd("diffthis") -- 为原文件开启对比模式 vim.cmd("wincmd p") -- 切换到恢复内容的缓冲区 vim.cmd("diffthis") -- 为恢复内容开启对比模式 end, })
Vimscript 配置(init.vim)
autocmd SwapExists * let v:swapchoice = 'q' | execute 'recover ' . expand('<afile>') | execute 'split ' . expand('<afile>') | diffthis | wincmd p | diffthis
配置生效后,打开带有交换文件的目标文件时,Neovim会自动跳过默认选择提示,直接分窗展示交换文件恢复内容与原文件的差异。如果需要保留选择灵活性,可修改配置逻辑增加确认步骤。
内容的提问来源于stack exchange,提问作者Jan Černý
相关产品推荐
相关产品推荐

