我今天遇到了一个不寻常的问题,
我正在使用 vim,在 bash 中创建了一个新的别名,并想尝试一下。
所以我按 ctrl- z,exec 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 scope
为0
(而不是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”之类的实用程序来让您的终端会话在后台运行。