Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

GVim中输入法状态切换的问题 #232

Closed
elxy opened this issue May 22, 2018 · 18 comments · Fixed by #263
Closed

GVim中输入法状态切换的问题 #232

elxy opened this issue May 22, 2018 · 18 comments · Fixed by #263

Comments

@elxy
Copy link

elxy commented May 22, 2018

打开GVim,输入法图标为“A"(关闭状态?),进入插入模式,输入法图标变为“中”(开启状态?),但此时按键没有出现选字框,只能打英文。
启用微软拼音后,切换一次输入法,小狼毫就能正常工作了。进入插入模式时,自动进入中文状态,离开插入模式时,自动进入英文状态。
Windows 10 1803 build,GVim 8.1.1,带multi_byte_ime/dyn特性,小狼毫0.11.1。

此外,GVim中,输入法图标的切换存在问题:插入模式中,输入英文,此时为”A“图标,退出插入模式后,图标变为”中“,然而此时仍然只能输入英文。

@ghost
Copy link

ghost commented May 26, 2018

这个问题确实存在,我也一直深受其害。
Win10系统中,我都是把输入法的默认状态设为英文(即关闭),打开GVim时,使用 Shift 键切换为中文,这时可以输入汉字。这时,如果在 GVim 中,进行选择、复制、粘贴等操作时,微软自带的输入法,或者用多多生成的输入法,状态会切换为 英文,只要再按 Shift 键就能重新切换为中文,可以正常输入。但是,小狼毫最新版的,却不会切换为英文,也不能输入中文,按 Shift 键也不能切换状态。只能切换成其他输入法,再切换回小狼毫,才能正常输入。
还有,GVim 中,输入法不同的状态,光标颜色也是不同的。比如,按我的设置,输入法为英文时,光标的颜色是绿色的,切换到中文时,则改为紫色。

@ASC8384
Copy link

ASC8384 commented Jun 24, 2018

深受其害++。
我也用搜狗试过,切换至Normal 模式后按Shift 改为英文,后回到Insert 模式也不能输入中文,只能通过切换输入法来重新使用。
并且当Rime 失效之后,按Shift 后图标也不会变。
目测是gvim win 的锅,在Linux 下就好好的。

@ASC8384
Copy link

ASC8384 commented Jun 29, 2018

目测是win 下安装包版Vim 自带_vimrc 自带的插件引起的。
只要不用win 下用Ctrl 的复制粘贴即可。

source $VIMRUNTIME/vimrc_example.vim
source $VIMRUNTIME/mswin.vim
behave mswin
" 模仿windows快捷键 Ctrl+A全选、Ctrl+C复制、Ctrl+V粘贴

删除即可。

@ASC8384
Copy link

ASC8384 commented Jul 7, 2018

发现上面说的方法主要看脸。╮(︶︿︶)╭

@lthon-tse
Copy link

lthon-tse commented Jul 30, 2018

vim 默认在插入模式关闭输入法,可以修改 iminsert 选项来开启。在 _vimrc 里加入

set iminsert=2

下面是这个选项的一些介绍:
'iminsert' 'imi' 默认为 0,如果支持输入方法则为 2。指定插入模式里使用 :lmap 还是输入方法 (IM)。
合法的值是:
0 :lmap 关闭而 IM 关闭
1 :lmap 打开而 IM 关闭
2 :lmap 关闭而 IM 打开
插入模式下使用 CTRL-^ 时此选项也发生改变。

@ghost
Copy link

ghost commented Jul 31, 2018

@Fnlxuer 多谢,确实可以了!

@nameoverflow
Copy link
Member

nameoverflow commented Aug 28, 2018

Windows 自己有一个关闭输入法的机制(相当于系统默认的 ctrl + space 快捷键的效果);并且目前看来这个机制在内置的微软拼音上的表现为把微软拼音切换为英文模式并且可以用 shift 切换回来;但是小狼毫并不能做到类似的效果,关闭了输入法就彻底无法接收到键盘命令了。

@lotem
Copy link
Member

lotem commented Aug 28, 2018

@nameoverflow 有解嘛?
退一步說,有沒有機會在系統關閉輸入法時顯示一個提示。

@nameoverflow
Copy link
Member

@lotem 可以响应关闭输入法的动作了;要在输入法关闭的时候对快捷键作出响应的话需要在 TSF 初始化的时候注册 hotkey,而用户设定的 ascii_mode 的切换键不确定。

@lotem
Copy link
Member

lotem commented Aug 30, 2018

@nameoverflow 是時候繼續討論 rime/rime-prelude#2

@nameoverflow
Copy link
Member

然而我想的是 librime 可以提供一个获取所有 hotkey 的 API。

@nameoverflow
Copy link
Member

nameoverflow commented Aug 31, 2018

最好还是不要把系统的输入法开关和 ascii_mode 混为一谈。
可以在关闭输入法时让语言栏显示成这样:
image

然后在重新开启输入法时强制将 ascii_mode 设为 FALSE。

@glacjay
Copy link

glacjay commented May 23, 2019

所以当 rime 被 windows 关掉之后就必须得切换一次输入法才能再次继续使用了?感觉有点儿麻烦,最近我在 GitExtensions 里面也经常碰到这种情况😂️

@glacjay
Copy link

glacjay commented May 29, 2019

今天在 excel 里面也遇到了一次,打字打着打着忽然就变成禁用状态了😂️

@junyixu
Copy link

junyixu commented Oct 22, 2019

@elxy 发现 可以开启, 不用切换到微软输入法

@VimWei
Copy link

VimWei commented Nov 30, 2020

“当 rime 被 windows 关掉之后就必须得切换一次输入法才能再次继续使用” 这个问题解决了吗?为什么是这个issue 关闭了呢?

@VimWei
Copy link

VimWei commented Nov 30, 2020

vim 默认在插入模式关闭输入法,可以修改 iminsert 选项来开启。在 _vimrc 里加入

set iminsert=2

下面是这个选项的一些介绍:
'iminsert' 'imi' 默认为 0,如果支持输入方法则为 2。指定插入模式里使用 :lmap 还是输入方法 (IM)。 合法的值是: 0 :lmap 关闭而 IM 关闭 1 :lmap 打开而 IM 关闭 2 :lmap 关闭而 IM 打开 插入模式下使用 CTRL-^ 时此选项也发生改变。

原来答案藏在这里。这是我的总结:不必更改 iminsert 的配置;若进入编辑状态,输入法为禁用状态,则只要 Ctrl+^(即Ctrl+6),即可重新激活输入法为Rime中文。

@slbb
Copy link

slbb commented Apr 6, 2021

最好还是不要把系统的输入法开关和 ascii_mode 混为一谈。
可以在关闭输入法时让语言栏显示成这样:
image

然后在重新开启输入法时强制将 ascii_mode 设为 FALSE。

根据最近微软输入法的更新,可以得知微软现在打算把 ascii_modedisabled 合并成同一种状态了。以前是 ctrl + space 启用/禁用输入法,现在(20H2版本)变成了和单按 shift 一样,都是切换 ascii_mode 了。微软新版的拼音、五笔、日文都已经改成这样了。
在 visual studio 的 vsvim 插件会在进入 normal mode 时会禁用输入法,可以观察输入法的行为:
小狼毫0.14.3:进入 normal mode 输入法状态图标变成灰色叉叉的禁用
微软输入法(五笔/拼音/日文):进入 normal mode 输入法状态图标变成 A 图标,而不是灰色叉叉
也就是两种状态合并成一种了。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

9 participants