我正在使用 ibus IME 将日语文本输入到 GVim。当 GVim 启动时,我有以下 Vim 脚本:
autocmd InsertLeave * :call bug#onInsertLeave()
function! bug#onInsertLeave()
python << EOT
import vim
import ibus
bus = ibus.Bus()
ic = ibus.InputContext(bus, bus.current_input_contxt())
ic.disable()
print "bug#onInsertLeave(): exiting"
EOT
endfunction
Run Code Online (Sandbox Code Playgroud)
构造 InputContext 的行引发异常:
dbus.exception.DBusException: org.freedesktop.DBus.Error.Failed: 没有聚焦的输入上下文
这发生在以下条件下:
如果我不通过 IME 输入任何日语文本,则不会引发异常。
我还注意到,如果在 IME 仍然启用的情况下输入一些日语文本后退出插入模式,则 IME 输入将被禁用(我可以看到任务栏中的图标发生了变化)。如果我在没有输入任何日语文本的情况下退出插入模式,但当 IME 仍然启用时,IME 将保持启用状态(图标不会改变)。在某些情况下,GVim 似乎正在禁用 IME(或 IME 正在关闭)。它可能与异常有关吗?
编辑我注意到这不会发生在命令行 Vim,只有 GVim。IME 仍然被禁用,但不会抛出上述异常。
我的问题是:
编辑
我的系统信息:
> misha@misha-lmd:~/git/iwait2013/lagos$ apt-cache policy ibus ibus:
> Installed: …Run Code Online (Sandbox Code Playgroud) 每当我尝试执行 vim 时,终端都会显示:程序“vim”可以在以下包中找到:
* vim
* vim-gnome
* vim-tiny
* vim-athena
* vim-gtk
* vim-nox
Try: sudo apt-get install <selected package>
Run Code Online (Sandbox Code Playgroud)
所以,我想大多数同学都做了,sudo apt-get update而sudo apt-get install vim却没有奏效。我输入后终端显示此消息sudo apt-get install vim
Reading package lists... Done
Building dependency tree
Reading state information... Done
Package vim is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source
E: Package 'vim' has …Run Code Online (Sandbox Code Playgroud) 当我打开 gvim 编辑文件时,大约 10 或 15 秒后,我输入的终端窗口gvim foo.txt给出了错误:
** (gvim:2581): WARNING **: Unable to register window with path '/com/canonical
/foo/3C00024': Timeout was reached
Run Code Online (Sandbox Code Playgroud)
这并不妨碍我继续使用 vim 进行编辑,而是让我认为某些内容没有正确配置。这是什么意思?
我正在运行 Ubuntu 11.04,并且我已经安装了 Vimapt-get install vim vim-gnome vim-nox等(不确定具体是哪些软件包。)
这可能不是错误,但我已经安装了 Vim 插件包spf13-vim。
我的 GVim 窗口看起来像这个截图,看起来太大了:

这可能不是 spf13-vim 的问题,因为我在 Windows 上使用它没有问题。谁能指出我正确的方向,以便我可以同时看到窗口上的 40 行?
我当前在 Vim 中的字体是 Sans 大小 10。
我使用 gvim 来编辑我的 tex 文件,它是默认编辑器。所以我只需双击 tex 文件来编辑它们,然后用 Gvim 打开它们。但是,Gvim 的工作目录始终是主目录,这很奇怪,因为我希望工作目录是我刚刚双击并打开的文件所在的目录。这会造成很多不便,因为我通常想在 Gvim 中的该目录中运行命令,并且每次都必须手动更改它。关于如何以正确的方式启动 Gvim 的任何建议?非常感谢。
我已经检查了.gvimrc文件,没有发现任何可疑之处。它只有我的字体和颜色设置,仅此而已。
我今天用 Ubuntu 16.04 设置了我的新电脑。我已经安装了 vim-gnome。在使用它时,一切都很好。但是当我关闭 gvim 时,我在终端中收到此消息:
(gvim:5834): GLib-GObject-WARNING **: cannot retrieve class for invalid (unclassed) type '<invalid>'
Run Code Online (Sandbox Code Playgroud)
它没有产生任何问题,但我仍然想解决这个问题,然后才能影响某些事情。
当我开始时gvim:
$ date; /usr/bin/gvim; date
Tue May 29 10:45:45 CST 2012
** (gvim:6030): WARNING **: Unable to create Ubuntu Menu Proxy: Timeout was reached
Tue May 29 10:46:11 CST 2012
Run Code Online (Sandbox Code Playgroud)
要停止 ubuntu 菜单代理:
export UBUNTU_MENUPROXY=0
Run Code Online (Sandbox Code Playgroud)
并再次测试:
$ date; /usr/bin/gvim; date
Tue May 29 10:46:47 CST 2012
Tue May 29 10:47:13 CST 2012
Run Code Online (Sandbox Code Playgroud)
没有警告。但它仍然需要26几秒钟才能启动gvim。
为什么这么慢?有什么季节可以让它发生(都是 26 秒)?
目前,我使用:
alias gvim='gvim -f'
Run Code Online (Sandbox Code Playgroud)
但我不能再脱离外壳了。
希望 Ubuntu 开发者尽快解决这个问题。
$ dpkg --list | grep vim
ii vim-common 2:7.3.429-2ubuntu2.1 Vi …Run Code Online (Sandbox Code Playgroud)