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

启用 autoSwitchInputMethod 后 C/cw 命令无法正常工作 #47

Open
huqifj opened this issue Mar 31, 2023 · 9 comments
Open

启用 autoSwitchInputMethod 后 C/cw 命令无法正常工作 #47

huqifj opened this issue Mar 31, 2023 · 9 comments

Comments

@huqifj
Copy link

huqifj commented Mar 31, 2023

系统: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|
@daipeihust
Copy link
Owner

在关闭输入法自动切换功能后 有这个问题吗

@huqifj
Copy link
Author

huqifj commented Mar 31, 2023

在关闭输入法自动切换功能后 有这个问题吗

使用 "vim.autoSwitchInputMethod.enable": true, 就会有问题,关掉就没问题

@huqifj
Copy link
Author

huqifj commented Mar 31, 2023

我的配置如下:

使用 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}",

@daipeihust
Copy link
Owner

C:/Portable/im-select/im-select.exe {im} && C:/Portable/im-select/im-select.exe 2052为什么这么复杂

@daipeihust
Copy link
Owner

还有Windows的路径分隔符不应该是反斜杠吗

@huqifj
Copy link
Author

huqifj commented Mar 31, 2023

C:/Portable/im-select/im-select.exe {im} && C:/Portable/im-select/im-select.exe 2052 为什么这么复杂

因为 im-select.exe 无法切换一个输入法的中英文,只能切换不同输入法。

我用的输入法是微软拼音,我这么写是让它切到其它输入法再切回微软拼音(默认英文)。

@huqifj
Copy link
Author

huqifj commented Mar 31, 2023

还有 Windows 的路径分隔符不应该是反斜杠吗

这个斜杠用法在配置文件 settings.json 里是正确的

@jinmiaoluo
Copy link

jinmiaoluo commented Sep 21, 2023

在 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

@jinmiaoluo
Copy link

在最新的 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

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

No branches or pull requests

3 participants