终端和 Vim

终端和 Vim

我打开一个终端,然后打开 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
  • 配置您的终端(无论是哪一个)以确认您要关闭它。最初几次这会让您感到惊讶,从长远来看,这会迫使您在关闭终端之前进行思考。

相关内容