Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/OrangeX4/vscode-smart-ime
在 VS Code 中智能地进行中英输入法的切换
https://github.com/OrangeX4/vscode-smart-ime
chinese input-method vscode
Last synced: 3 months ago
JSON representation
在 VS Code 中智能地进行中英输入法的切换
- Host: GitHub
- URL: https://github.com/OrangeX4/vscode-smart-ime
- Owner: OrangeX4
- License: mit
- Created: 2023-10-11T13:16:14.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2023-10-23T02:38:59.000Z (about 1 year ago)
- Last Synced: 2024-05-23T04:54:00.166Z (6 months ago)
- Topics: chinese, input-method, vscode
- Language: TypeScript
- Homepage: https://marketplace.visualstudio.com/items?itemName=OrangeX4.vscode-smart-ime
- Size: 546 KB
- Stars: 22
- Watchers: 2
- Forks: 1
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
![](./icon.png)
# Smart IME
灵感来自 idea 的 Smart Input,用于智能地进行中英输入法的切换。
**依赖于 [IME and Cursor](https://marketplace.visualstudio.com/items?itemName=beishanyufu.ime-and-cursor) 插件,所以请先进行该插件的配置,例如可以配置中文输入法时显示为红色光标。**
## 依赖
需要安装 [IME and Cursor](https://marketplace.visualstudio.com/items?itemName=beishanyufu.ime-and-cursor) 与 HyperScopes 插件。
## 特性
![](./smart-ime.gif)
- 检测到前一个字符是中文时自动切换到中文输入法(默认开启,**这个特性较为耗电,请仔细甄别是否要开启,以及配置触发间隔时间,默认为 2 秒**);
- 在中文后输入一个空格自动切换到英文输入法(默认开启);
- 在英文后输入两个空格自动切换到中文输入法(默认未开启);
- 进入到注释场景时,自动切换为中文输入法,离开时自动切换为英文输入法(参考插件配置里的 `comment` 相关内容);
- 进入到数学公式时,自动切换为英文输入法,离开时自动切换为中文输入法(参考插件配置里的 `markup.math,meta.math` 相关内容);
- 离开字符串时,自动切换为英文输入法(参考插件里的 `string` 相关内容,如果要进入字符串后自动切换成中文可以自行配置);
- 如果当前文档拥有超过 n 个英文字符且没有中文字符,则禁用插件;
- 只有在切换窗口时重新检测
- 当然,你也可以在文档中加入一个字符串 `DISABLE_SMART_IME`(例如在注释块里写这个字符串),只要识别到当前文档有这个字符串,也会在当前文件禁用插件;
- 只有在切换窗口时重新检测;
- 在 Vim Normal 模式下禁用自动切换,不过目前识别 Vim Normal 模式仅是根据光标状态识别,可能存在 bug。## 获取输入法的 key 失败,请检查是否正确设置了 "ObtainIMCmd"
请搜索插件 [IME and cursor](https://marketplace.visualstudio.com/items?itemName=beishanyufu.ime-and-cursor),并按插件说明进行相应的安装和配置。
## 切换输入法无法切换光标样式
请使用 `shift + space` 切换输入法,而不是使用系统自带的快捷键。搜索插件 [IME and cursor](https://marketplace.visualstudio.com/items?itemName=beishanyufu.ime-and-cursor) 查看更详细的说明。
## 在 remote / SSH / WSL / docker 模式下使用
如果无法在 remote 状态下生效,可以试着先在 remote 删除 Smart IME 以及其依赖的两个插件,然后在 remote 的设置中加入如下设置:
```json
"remote.extensionKind": {
"draivin.hscopes": ["ui"],
"beishanyufu.ime-and-cursor": ["ui"],
"OrangeX4.vscode-smart-ime": ["ui"]
}
```再重新安装插件即可。
## 目前的问题
- VS Code 并没有给出一个很好的 api 来判断终端是否获得了焦点,因此切换到终端时切换到英文输入法的功能暂时无法实现;
- Commit Message 同理,暂时无法实现;
- Vim 模式的支持可以使用 IME and Cursor 里的配置实现;## 插件设置
- `smart-ime.warnDisabled`: 是否显示禁用提示
- `smart-ime.disabledOnEnglishTextOverN`: 如果当前文档拥有超过 n 个英文字符且没有中文字符,则禁用插件,默认为 100,值为 -1 时禁用该设置
- `smart-ime.enableChineseSwitchToChinese`: 检测到中文时切换输入法到中文,默认开启
- `smart-ime.enableChineseSwitchToChineseInterval`: 检测到中文时切换输入法到中文的触发间隔,默认 2000 毫秒(即两秒)
- `smart-ime.enableChineseAndSpaceSwitchToEnglish`: 检测到中文+空格时切换输入法到英文,默认开启
- `smart-ime.enableEnglishAndDoubleSpaceSwitchToChinese`: 检测到当前行前有中文,且光标前面是非中文+双空格时切换输入法到中文并删掉一个空格,默认关闭
- `smart-ime.enterScopesSwitchToChinese`: 进入某些 scopes 时切换输入法到中文,用逗号分割,前缀匹配,请使用 `Developer: Inspect Editor Tokens and Scopes` 查看当前位置的 scopes
- 例如这里默认配置了 `comment` 就可以实现进入注释块时切换到中文输入法的效果
- 如果配置了 `comment,string`,就可以匹配 Python 的 `comment.line.number-sign.python`(注释)和 `string.quoted.single.python`(字符串),请使用 `Developer: Inspect Editor Tokens and Scopes` 命令查看 scopes
- `smart-ime.enterScopesSwitchToEnglish`: 进入某些 scopes 时切换输入法到英文,用逗号分割,前缀匹配
- 例如这里默认配置了 `markup.math,meta.math` 就可以实现进入数学公式(markdown 和 latex)时切换到英文输入法的效果
- `smart-ime.leaveScopesSwitchToChinese`: 离开某些 scopes 时切换输入法到中文,用逗号分割,前缀匹配
- 例如这里默认配置了 `markup.math,meta.math` 就可以实现离开数学公式(markdown 和 latex)时切换到中文输入法的效果
- `smart-ime.leaveScopesSwitchToEnglish`: 离开某些 scopes 时切换输入法到中文,用逗号分割,前缀匹配
- 例如这里默认配置了 `comment,string` 就可以实现离开注释块和字符串时切换到英文输入法的效果
- `smart-ime.disabledOnVim`: 在 Vim Normal 模式下禁用自动切换,不过目前识别 Vim Normal 模式仅是根据光标状态识别,可能存在 bug
- 优先级是 **优先英文切换** 和 **优先进入切换**