它可以工作,但是要花一点时间。
这里是:
首先我尝试找到原始的vim会话
-跟踪PID是否仍然有效
-如果PID仍然有效,我去尝试找到该vim会话并保存文件并退出。 ..我就完成了(在这里停止)
-如果无法打开vim会话,我将杀死PID ...并必须恢复文件。
尝试查看差异
我按r键恢复文件
将恢复的文件保存到临时文件中
退出vim
在命令行之间执行vimdiff两者
手动解决任何冲突
保存文件
退出vim
删除临时文件
重新打开vim
完成
我想找到一种方法来做同样的事情,但是效率更高。该文件而不退出vim或使用插件?
#1 楼
这是您需要查看差异,解决任何差异,保存文件而不退出vim或不使用插件的vim命令:从命令行打开文件
vim path/to/file
其余所有命令都在
vim
内恢复文件
r
保存恢复的文件(如果目标文件存在,则覆盖)
:sav! ~/.recovered
>
在新窗口中打开原始文件(未恢复的文件)
:vsplit
ctrl-w w
:bn
e
现在我们在左边有恢复的文件,在右边有未恢复的文件
将两个文件区别开
<现在,我们有两个文件的区别了。 (请参阅
:diffthis
)解决任何冲突(有关更多信息,请参阅
:diffthis
)保留对未解析文件的任何更改
删除交换文件
-
man vimdiff
退出vim
man vimdiff
我确定有一些方法可以改善我的解决方案,如果您知道改进之处,请编辑我的解决方案!
我从http://vim.wikia.com/wiki/Swap_file_%22开始解决方案... %22already_exists!_-_ so_diff_it
我修改了链接的解决方案,因为
链接的解决方案无法处理打开目录下的文件
说明不尽如人意
评论
我不会编辑您的解决方案,因为我不知道它是否真的是一种改进,但是我个人会使用:windo diffthis而不是:diffthis
–brhfl
18 Mar 15 '18:28
#2 楼
查看不带插件的交换文件的差异不带插件,您可以使用vim备用文件。
简而言之,请尝试以下操作:
:diffthis | :vnew | r # | exe "norm! ggdd" | :diffthis
解释:
" start diff in current window with restored swap file
:diffthis
" read origin file in new vsplit
:vnew | r #
" Note: origin file is read to buffer,
" but first line is epmty
" It's a feature, so let's delete first empty line
:exe "norm! ggdd"
" start diff mode in vsplit
:diffthis
使用Recover插件查看和合并交换文件的差异
此外,还有一个插件Recover.vim。
Found a swap file by the name "test/normal/.testfile.swp"
owned by: chrisbra dated: Wed Nov 28 16:26:42 2012
file name: ~chrisbra/code/git/vim/Recover/test/normal/testfile
modified: YES
user name: chrisbra host name: R500
process ID: 4878 [not existing]
While opening file "test/normal/testfile"
dated: Tue Nov 6 20:11:55 2012
Please choose:
[C]ompare, (O)pen Read-Only, (E)dit anyway, (R)ecover, (Q)uit, (A)bort, (D)elete:
合并后,您可以使用命令
:FinishRecovery
删除交换文件评论
嗨,@ BLayer,谢谢。更新的答案-使用备用文件添加了解决方案
–亚森
19年7月2日在9:40
#3 楼
根据Trevor的回答,我做了以下命令来处理交换文件:noremap <LEADER>s <C-w>o:sav! ~/.vim/.recovered<CR>:vs<CR><C-w>w:bn<CR>
noremap <LEADER>t :wa<CR>:bp\|bd #<CR><C-o>
到达
ATTENTION: Found a swap file...
提示符后,我键入
r
以恢复交换键入
<LEADER>s
以将交换的版本另存为.recovered
并在新的拆分中打开原始文件在交换提示处键入
e
以编辑原始文件键入
:windo diffthis
区分两个文件对原始文件进行必要的更改
键入
<LEADER>t
以写入原始文件,将其关闭,然后重新打开在交换提示符处键入
d
删除交换文件关闭
.recovered
文件(键入类似:bp<CR>:bp\|bd #<CR>
的内容)。
评论
您可能对我的恢复插件感兴趣