启用 autoSwitchInputMethod 后 C/cw 命令无法正常工作
Opened this issue · 9 comments
系统:Windows 11。
不确定是 VS Code 还是 im-select.exe / im-select-mspy.exe 的问题。
以 cw 命令为例:
当前现象:
原始内容(普通模式,光标在数字 3):
1234
^
执行 cw 命令:
1|2
输入任意文本,例如 aa:
1aa|2
期望:
原始内容(普通模式,光标在数字 3):
1234
^
执行 cw 命令:
12|
输入任意文本,例如 aa:
12aa|
在关闭输入法自动切换功能后 有这个问题吗
在关闭输入法自动切换功能后 有这个问题吗
使用 "vim.autoSwitchInputMethod.enable": true,
就会有问题,关掉就没问题
我的配置如下:
使用 im-select.exe:
"vim.autoSwitchInputMethod.enable": true,
"vim.autoSwitchInputMethod.defaultIM": "1033",
"vim.autoSwitchInputMethod.obtainIMCmd": "C:/Portable/im-select/im-select.exe",
"vim.autoSwitchInputMethod.switchIMCmd": "C:/Portable/im-select/im-select.exe {im} && C:/Portable/im-select/im-select.exe 2052",
使用 im-select-mspy.exe:
"vim.autoSwitchInputMethod.enable": true,
"vim.autoSwitchInputMethod.defaultIM": "英语模式",
"vim.autoSwitchInputMethod.obtainIMCmd": "C:/Portable/im-select/im-select-mspy.exe",
"vim.autoSwitchInputMethod.switchIMCmd": "C:/Portable/im-select/im-select-mspy.exe {im}",
C:/Portable/im-select/im-select.exe {im} && C:/Portable/im-select/im-select.exe 2052
为什么这么复杂
还有Windows的路径分隔符不应该是反斜杠吗
C:/Portable/im-select/im-select.exe {im} && C:/Portable/im-select/im-select.exe 2052
为什么这么复杂
因为 im-select.exe 无法切换一个输入法的中英文,只能切换不同输入法。
我用的输入法是微软拼音,我这么写是让它切到其它输入法再切回微软拼音(默认英文)。
还有 Windows 的路径分隔符不应该是反斜杠吗
这个斜杠用法在配置文件 settings.json 里是正确的
在 vscode 使用 vim extension 且开启:vim.autoSwitchInputMethod.enable
的时候:
- 如果:normal mode 的输入法是英文,insert mode 的输入法是英文,则表现符合预期。
- 如果:normal mode 的输入法是英文,insert mode 的输入法是拼音,则会有当前 issue 描述的问题。
更准确的触发时机是光标位于当前行的最后一个字符上(无论中文还是英文),比如:
1234
^
然后执行任意 normal mode 中包含:delete and start insert
逻辑的命令,比如:c
s
命令,然后输入内容: x
预期的结果:
123x
实际的结果:
12x3
即:此时内容插入的位置相对于预期的位置左移了一个符号
Q: 这个问题在光标位于非最后一个符号的时候存在吗?
A: 不存在
Q: 这个问题在输入法都是英文的时候存在吗?
A: 不存在
Q: 这个问题在 normal mode 的输入法为英文,insert mode 的输入法是拼音输入法(英文模式)时存在吗?
A: 不存在
Q: 这个问题是否只在 VSCode 中存在?
A: 这个问题在 JetBrains IDE,VSCode 中都存在。
我在 vscode vim 插件的仓库内也创建了一个类似的 issue,见:VSCodeVim/Vim#8518
在最新的 Windows 11 insider 中:
Edition Windows 11 Pro
Version 22H2
Installed on 9/19/2023
OS build 22621.2359
Experience Windows Feature Experience Pack 1000.22674.1000.0
这个问题貌似已经修复。