如何为 gvim 获取全局应用菜单?

Gvim在12.04中没有全局菜单(appmenu / 应用程序菜单), 并且当从终端启动gvim时, 在25秒后终端会显示以下警告:
** (gvim:20320): WARNING **: Unable to create Ubuntu Menu Proxy: Timeout was reached

怎么修复这个问题?
5个回答

解决方案1:使gvim的全局菜单生效

要为gvim启用全局菜单并消除警告信息,请将以下内容添加到~/.bashrc,并重新启动终端:

function gvim () { (/usr/bin/gvim -f "$@" &) }

解决方案2:禁用gvim的全局菜单

为了仅仅消除警告信息,您可以禁用全局菜单,至少对于gvim来说:

例如,将以下内容添加到~/.bashrc并重新启动终端:

alias gvim='UBUNTU_MENUPROXY= gvim'

参考文献


为什么在“所有论点”周围加上引号? - xtofl
抱歉。我想知道为什么在.bashrc函数中,"$@"周围有引号。 - xtofl
@xtofl: 如果没有在"$@"周围加上引号,你会在参数中的空格和字面上的'*'等方面遇到麻烦。 - Håkon A. Hjortland
兴趣之余,你能解释一下第一个解决方案是如何以及为什么起作用吗? - ecatmur
1@ecatmur:方案1的工作原理如下:该错误与gvim进入后台模式的方式有关。 gvim -fgvim保持在前台。为了使shell在后台运行gvim,我们添加了一个&(foo &) 中的括号在子shell中运行命令,因此gvim不会成为当前shell的后台进程。如果没有括号,通过单击X关闭终端也会杀死gvimfunction foo () {...}创建一个shell函数。我们必须将/usr/bin/添加到gvim中,否则我们将得到一个无限递归的函数。"$@"传递所有参数。 - Håkon A. Hjortland


我的Ubuntu 12.04 amd64可以使用gvim -f工作。
vim-gnome: 2:7.3.429-2ubuntu2.1+aptbuild1 terminator: 0.96-0ubuntu1+aptbuild1 guake: 0.4.2-7+aptbuild1

我可以在启动gvim时添加-f(--nofork)选项。
alias gvim="gvim -f"

这只适用于 gvim
firefox 和其他的没有这个 -f 选项。

另一个可能的原因可能是~/.gnome2/Vim文件。这个解决方案(建议您删除~/.gnome2/Vim)在Hardy Heron(Unity之前)中为我解决了Ubuntu 13.10上的问题。
出于某种原因,gvim -f对我无效。