Mac 下的输入法没有彻底拦截键盘事件,导致在非英文输入法执行normal mode命令的时候,会执行命令...进入 Ex-mode, 或者删除光标所在行「1」之后的代码,这时候都会执行 undo 操作,然后就会文件尾发现之前光标所在行「1」的拷贝。@iceseaboy 同学有丢代码的经历,他尝试过用宏记录启用中文输入法执行jk等命令时真正执行的命令,具体跟 @
iceseaboy 同学交流。
我目前的解决方案是这样的
1. vimrc 添加
se imd
au InsertEnter * se noimd
au InsertLeave * se imd
au FocusGained * se imd
2. Input source options 勾选 "Allow a different one for each document".
这个在 Setting -> Language & Text -> Input Sources 里设置。
完美的情况时,vim 获得焦点就禁用输入法,只有进入插入模式才启用输入法,离开禁用。但是标题已经说了,这是个不完美的解决方案:获得焦点(FoucGained)禁止不了输入法!!!这个方法只解决了(1)启用中文输入法时,按i,s能顺利进入插入模式,(2)插入模式输入中文完毕回到普通模式时禁用输入法。
Alfred 实现了输入字符的时候强制使用U.S. keyboard 或者其它,使用 apple script 或者模拟点击应该可以实现上述的完美解决方法。
该解决方法已用3个人使用,显著减少了工作流被打断的次数。
@
lotem: 启用鼠须管输入法+上述解决方法时,用i, a 进入插入模式会多一个尖括号(›)。
@
xell @
NemoAlex @
vexfisher @
vicesa
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://www.v2ex.com/t/40375
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.