如何获取gvim的全局应用程序菜单?


34

Gvim在12.04中没有全局菜单(应用程序菜单/应用程序菜单),并且从终端启动gvim时,25秒后在终端中会出现以下警告:

** (gvim:20320): WARNING **: Unable to create Ubuntu Menu Proxy: Timeout was reached

如何解决这个问题?

Answers:


35

解决方案1:使gvim的全局菜单起作用

要获取gvim的全局菜单并摆脱警告消息,请将其添加到〜/ .bashrc并重新启动终端:

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

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

为了摆脱警告消息,您可以至少在gvim上禁用全局菜单:

例如,将其添加到〜/ .bashrc并重新启动终端:

alias gvim='UBUNTU_MENUPROXY= gvim'

参考文献


为什么在“所有参数”周围都加引号?
xtofl 2012年

抱歉。我想知道为什么"$@".bashrc函数中会有引号。
xtofl 2012年

@xtofl:如果在“ $ @”周围没有引号,则会遇到参数中空格和文字“ *”的麻烦。
哈康A. Hjortland

出于兴趣,您能否解释第一个解决方案的工作原理和原因?
ecatmur

1
@ecatmur:这是解决方案1的工作方式:该错误与gvim进入后台模式的方式有关。gvim -f保持gvim在前台。为了使shell gvim在后台运行,我们添加了一个&。括号中(foo &)的命令在子shell 中运行,因此gvim不会成为当前shell的后台进程。如果没有括号,则通过单击X关闭终端也会杀死gvimfunction foo () { ... }创建一个外壳函数。我们必须补充/usr/bin/gvim,否则我们会得到一个无限递归函数。"$@"传递所有参数。
哈康A. Hjortland


3

我的Ubuntu 12.04 amd64可以使用gvim -f


  • vim-gnome:2:7.3.429-2ubuntu2.1 + aptbuild1
  • 终结者:0.96-0ubuntu1 + aptbuild1
  • guake:0.4.2-7 + aptbuild1

2

我可以在启动时添加-f--nofork)选项gvim

alias gvim="gvim -f"

这仅适用于gvim
firefox而其他人则没有此-f选项。


0

另一个潜在原因可能是~/.gnome2/Vim文件。针对Hardy Heron(在Unity之前)的问题的解决方案(建议您删除~/.gnome2/Vim)在Ubuntu 13.10上为我解决了该问题。

无论出于什么原因,都gvim -f没有为我工作。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.