恢复我意外断开的 vim 会话

恢复我意外断开的 vim 会话

我今天遇到了一个不寻常的问题,

我正在使用 vim,在 bash 中创建了一个新的别名,并想尝试一下。

所以我按 ctrl- zexec bash(我这样做是因为我不喜欢将它嵌套bash)。

我的工作丢掉了。而且我现在无法恢复 vim。

我能想到的唯一选择是终止 vim 并开始一个新的会话。

vim

ctrl-z

exec bash
fg  

编辑: 这是独立的使用 screen/tmux。

答案1

考虑reptyr

NAME
       reptyr - Reparent a running program to a new terminal

SYNOPSIS
       reptyr PID

pidof vim使用或查找 vim 的进程 id ps aux | grep vim

如果您尝试打开仍由 vim 打开的文件,还可以看到进程 ID。使用显示的 pid,您应该能够重新连接到上一个会话。

如果出现错误:

Unable to attach to pid 12345: Operation not permitted

确保设置ptrace scope0(而不是1):

echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope

运行后reptyr,您可能需要按Enter或其他键来刷新终端(控制台)窗口。

答案2

vim -r {file}就是你想要的,“r”代表“恢复模式”。参见man vim

Recovery mode.  The swap file is used to recover a  crashed 
editing  session.   The  swap  file is a file with the same
filename as the text file with ".swp" appended.  See ":help
recovery".

答案3

您可能想要使用类似“screen”或“tmux”之类的实用程序来让您的终端会话在后台运行。

相关内容