怎么在vim在normal 模式下自动禁用 中文

2013-10-12 08:22:28 +08:00
 scola
当我在vim 插入模式下 输入中文,
切换到 normal模式下操作,此时还是中文,命令都运行不了,
还要手动切换,特别麻烦
怎么在vim在normal 模式下自动禁用 中文啊
我使用的ibus google pinyin ,可以使用shift 切换 中英文
大侠们支支招。
5432 次点击
所在节点    Linux
16 条回复
jiazhoulvke
2013-10-12 09:03:01 +08:00
aufula
2013-10-12 09:54:30 +08:00
你输完中文怎么换回normal模式,难道不是先切到英文么?
Aben
2013-10-12 10:51:03 +08:00
yetone
2013-10-12 10:52:14 +08:00
@aufula ESC
scola
2013-10-12 11:20:03 +08:00
@jiazhoulvke 我使用的ibus 输入法 不知道能不能用那个

@Aben 刚才试过了,好像不行,
painter
2013-10-12 11:27:48 +08:00
vim怎么在normal 模式下自动禁用 中文
scola
2013-10-12 11:33:38 +08:00
@painter 老兄跟我有同样的需求?
ybian
2013-10-12 11:34:58 +08:00
参考 /t/45772
不过我那个小程序只在 Mac 下有用,但是改成 Linux 的应该不难。
Micky
2013-10-12 11:42:30 +08:00
用gvim吧
normal下自动禁用中文。。我忘记是要专门设置还是怎样 反正我现在gvim就是这样的
aufula
2013-10-12 12:13:55 +08:00
有个挫一点的办法
au insertLeave :!pkill ibus-daemon<cr>
au insertEnter :!ibus-daemon &<cr>
lilydjwg
2013-10-12 14:10:40 +08:00
@jiazhoulvke 哇哇,你在这里一贴链接,我那文章就 20 多个访问呢~
lilydjwg
2013-10-12 14:11:34 +08:00
@aufula 你这…………ibus 可以通过 dbus 关闭和开启的,vim_dev 邮件列表曾经有人给过一个示例。
scola
2013-10-12 15:24:34 +08:00
@aufula 这个我加入到 .vimrc 好像还是不行呢
aufula
2013-10-13 00:55:00 +08:00
@scola
@lilydjwg

function! OnInsertLeave()
python << EOT
import ibus
ff = ibus.bus.Bus()
ibus.inputcontext.InputContext(ff,ff.current_input_contxt()).disable()
EOT
endfunction
au InsertLeave * :call OnInsertLeave()
scola
2013-10-13 15:45:53 +08:00
@aufula 这次真的可以了,太感谢了。
这个退出到normal 是直接关闭ibus。不知有没有方法 把 disable 换成 switchtoenglish 就完美了
congeec
2013-12-18 09:47:36 +08:00
se imd
au InsertEnter * se noimd
au InsertLeave * se imd
au FocusGained * se imd

note: only available when compiled with +xim

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/85282

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX