阅读:7265回复:14
yong-vim.exe 最近有问题吗?
今天 yong-vim.exe 切换失效了,今天就是回复到一个月前(还可以用),然后做了 windows 更新。yong-vim.exe 的原理是什么呢?会有影响吗?
|
|
最新喜欢:wdlimi... |
板凳#
发布于:2017-06-14 21:49
|
|
地板#
发布于:2017-06-14 22:32
|
|
4楼#
发布于:2017-06-14 23:10
|
|
5楼#
发布于:2017-06-14 23:38
|
|
6楼#
发布于:2017-06-14 23:48
|
|
8楼#
发布于:2017-06-15 14:41
我也深受其扰。
Insert 模式下用 <C-O>k 使光标上移一行,(切换到临时 Normal 模式,k,再自动返回到 Insert 模式)就要卡两下。 如果录个宏,里面有频繁的 Normal 和 Insert 切换,并且重复次数很多,简直卡得没法用。 尝试了各种方法,只要是调用外部程序,「焦点」从 gvim 窗口离开再回来,就不可避免的要卡顿一下。 意识到这点,就开始想办法看能不能在 Vim 内部解决。 目前的方案是让 Vim 用 Python 代码,直接做 yong-vim.exe 做的事——给 yong.exe 发送消息。 效果还不错,完全不卡。 代码如下,需要 Vim 支持 Python 2.x。(执行 :echo has('python') 如果返回「1」,则支持。Python 3 行不行我没试,其他语言的自己移植吧。) python import vim,win32api,win32gui let g:yong_is_ch = 1 function! Yong2en_save() python vim.vars['yong_is_ch'] = win32api.SendMessage(win32gui.FindWindow("yong_main","main"), 0x474, 1, 1) endfunction function! Yong2en() python win32api.PostMessage(win32gui.FindWindow("yong_main","main"), 0x474, 1, 1) endfunction function! Yong2zh() if g:yong_is_ch == 1 python win32api.PostMessage(win32gui.FindWindow("yong_main","main"), 0x474, 1, 0) endif endfunction augroup yong autocmd! autocmd CursorHold * call Yong2en() autocmd InsertLeave * call Yong2en_save() autocmd InsertEnter * call Yong2zh() augroup END我还比原版的多加了个 CursorHold 自动命令。在 Normal 模式下持续 1 秒钟无操作时执行「切换到英文状态」。 用处在于,在命令行模式(「:」命令、「/」查找等进入的底行模式)输入了汉字,再返回 Normal 模式时, 或者在其他窗口里打完字,再切换回 Vim 窗口时, 等 1 秒钟后会自动切回英文,并把这 1 秒钟内输入进编码框内的按键吐出来给 Vim(需设置 [IM] CNen_commit=1)。 这功能有延迟,当然有的时候也会添乱帮倒忙,不过还是利大于弊吧。嫌不好用的话可以删掉那行。 |
|
9楼#
发布于:2017-06-18 23:30
|
|
上一页
下一页