daipeihust/im-select

启用 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

图示:https://imgse.com/i/7y2Fte

期望:

原始内容(普通模式,光标在数字 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

这个问题貌似已经修复。

Untitled-1.-.infrastructure.SSH_.m7.-.vim.-.Visual.Studio.Code.2023-09-21.16-56-57.mp4