我打开一个终端,然后打开 Vim。然后我处理我的源代码,但不幸的是我单击了终端标题栏的关闭按钮,我的工作丢失了。是否可以配置 Vim,使其在我尝试关闭终端而不保存工作时告诉我?
谢谢!
答案1
无法vim
提前知道它的祖父进程(终端)是否被杀死,因此它通常也会因杀死父进程而被杀死。
但是,在大多数默认设置中,vim
将创建一个.swp
以当前正在编辑的文件命名的文件;例如MyPrecious.java.swp
。该文件应包含进程被终止MyPrecious.java
之前的文件快照。vim
除非您已设置vim
专门将这些.swp
文件放在其他目录中,否则它们应与编辑的文件位于同一目录中,并且您可以轻松恢复编辑工作。
请注意,其中一些文件以点开头,因此除非您用于列出目录中的文件,.
否则它们是不可见的。ls -a
答案2
从不同的角度看问题,screen
或者tmux
可以让你的 shell 独立于终端运行。当您关闭终端时,您可以打开一个新终端并重新连接到原始 shell。 Vim 仍然会运行。
答案3
vim
无法控制终端的 GUI 如何处理WM_DELETE_WINDOW
.相反,请在终端中查找一个设置,以控制终端在具有带子项的 shell 时被要求关闭时的行为。
答案4
正如其他人所说,vim 无法对此类事件做出反应。但您可能会考虑以下解决方法之一:
- 使用
gvim
代替vim
,也可以从命令行调用。别名可能有助于调整开关(假设 bash 兼容 shell):alias vim=gvim
。将 gvim 指定为您的首选编辑器也可能有所帮助:export EDITOR=gvim
。不过,这只适用于本地计算机。 - 已经提到过使用终端多路复用器(例如
tmux
或)。screen
- 配置您的终端(无论是哪一个)以确认您要关闭它。最初几次这会让您感到惊讶,从长远来看,这会迫使您在关闭终端之前进行思考。