在我升级到 Ubuntu 16.04 后,我很高兴地注意到软件包vim
中的 GNOME 启动器vim-common
,因为它提供了一个替代方案gvim
(一个可靠的应用程序,虽然不适合我的工作流程)。但是启动器有问题vim
,很容易重现如下:
- 右键单击文件并打开方式 > Vim(不是 Gvim!)...
vim
在终端中的文件上运行。 - 进行一些更改,但不要保存它们。
- 从标题栏关闭窗口,就像关闭
gvim
或关闭任何其他有待更改的应用程序一样。 - 更改丢失,因为
vim
进程与终端一起死亡(留下交换文件)
我想找到一种修复vim.desktop
文件(系统版本/usr/share/applications
)的最佳实践方法,以使vim
启动器成为 的可行替代方案gvim
,因为该默认启动器就像等待发生的事故一样。
该选项Terminal=true
似乎是给定的,但Exec=vim %F
容易受到窗口死亡的影响,因此应该用包装脚本替换......但我需要关于
- 该包装器如何处理父终端死亡的信号
- 如何处理与用户有关保存文件的对话
在我看来,这些任务中的第二个是不可能的,因为您必须vim
根据用户的选择对会话本身进行 IPC 以要求保存或放弃文件......但我想我会在这里问在放弃之前。
我已经知道gvim
这是一种解决方法,但这并不是问题本身的答案。我很惊讶这个弱vim
启动器是由 Ubuntu 和其他发行版提供的,当它在编辑过程中引发灾难时。
答案在于追求我需要一个包装脚本的倾向,该脚本提供了运行交互式子shell的方法(
-i
选项bash
):/usr/local/bin/vim-gnome-wrap
...然后将其编辑
/usr/share/applications/vim.desktop
或复制到一个新*.desktop
文件中,并进行以下更改:感谢@muru 指出另一个线程Unix & Linux: Terminal and Vim,为了更大的社区,我提供了更详细的答案。
这个问题已经在Unix & Linux上讨论过了。很简单,没有真正的方法可以做到这一点。最简单的解决方法是在
screen
或中运行 Vimtmux
。代替:有:
然后,即使您关闭了终端,您也可以打开另一个终端并恢复会话: