如何配置 MacVim 在退出时退出?

tle*_*man 8 gvim macvim gvimrc macos

当我使用标准 vim 命令关闭 MacVim 时:q,MacVim 窗口关闭,但程序仍在运行。当其他进程尝试生成 MacVim 的实例时,这会导致麻烦,因为如果它仍在运行,则需要将特殊标志传递给 MacVim,以便打开新实例,但随后实例会累积。

有没有办法使用 vimscript 来终止进程并在退出时关闭窗口?

Chr*_*sen 20

如果您的Dock 中始终出现多个MacVim图标,那么您可能需要检查您是如何启动MacVim 的。具体说:help macvim-start

不要在应用程序包中调用 MacVim 二进制文件来启动 MacVim。

在命令行中,您通常会使用open -a MacVim filenamemvim filename1。从GUI,可以关联的MacVim特别扩展,拖和拖放文件到的MacVimFinder中码头或进入开放的MacVim窗口,或者您也可以使用服务菜单与其它应用程序的选择开始新的缓冲区。还有mvim://URL 处理程序(请参阅 参考资料:help mvim://)。

无论现有实例是否正在运行,这些方法都不需要任何特殊标志/选项,并且应该在Dock 中创建额外的MacVim图标。

1 mvimMacVim自带的脚本;见:help mvim。一旦你将它安装在你的 PATH 目录中,你就可以使用它来编辑现有MacVim实例中的文件(或者如果它尚未运行,则会启动一个)。


MacVim首选项(?,或MacVim >首选项...)的“常规”选项卡中的“在最后一个窗口关闭后:”退出 MacVim选项可能是您想要的。

如果您确实需要更具体的东西,那么您可以使用MacVim -custom 命令:macaction terminate:要求整个MacVim应用程序在任何可编写脚本的时刻退出。它应该相当于 ?Q 和MacVim > Quit MacVim菜单项(它们都将terminate:动作发送给应用程序的第一响应者);如果您修改了缓冲区,它会询问您是否要“仍然退出?”。

听起来您可能想通过自动命令将其连接到 VimLeave 事件:

autocmd VimLeave * macaction terminate:
Run Code Online (Sandbox Code Playgroud)