update at 2026-07-06 14:20:29
This commit is contained in:
@@ -20,9 +20,9 @@
|
||||
## 功能特性
|
||||
|
||||
✅ **自动切换输入法**:在 Normal 模式和 Insert 模式之间切换时自动切换输入法
|
||||
✅ **智能状态记忆**:记住上次 Insert 模式的输入法状态,下次自动恢复
|
||||
✅ **异步处理**:使用 `job_start()` 异步执行,避免 UI 阻塞
|
||||
✅ **中英混合友好**:完美支持中英文混合输入场景
|
||||
✅ **提前保存状态**:使用 `InsertLeavePre` 在离开 Insert 前保存输入法状态
|
||||
✅ **异步静默处理**:使用 `job_start()` 异步执行,并屏蔽命令输出,避免阻塞和乱码
|
||||
✅ **macOS 稳定恢复**:进入 Insert 后延迟恢复中文输入源,并进行一次兜底重试
|
||||
|
||||
## 安装要求
|
||||
|
||||
@@ -89,11 +89,9 @@ Plug 'yourusername/vim-im-switch', { 'rtp': 'vim-im-switch-select.vim' }
|
||||
" 英文输入法 ID(默认值)
|
||||
let g:imselect_english_im = 'com.apple.keylayout.ABC'
|
||||
|
||||
" 中文输入法 ID(可选,插件会自动检测)
|
||||
" 例如:搜狗输入法
|
||||
" let g:imselect_chinese_im = 'com.sogou.inputmethod.sogou'
|
||||
" 例如:系统自带简体拼音
|
||||
" let g:imselect_chinese_im = 'com.apple.inputmethod.SCIM.ITABC'
|
||||
" 中文输入法 ID(默认值:系统自带简体拼音)
|
||||
" macOS 更新后建议显式配置,不依赖自动检测
|
||||
let g:imselect_chinese_im = 'com.apple.inputmethod.SCIM.ITABC'
|
||||
```
|
||||
|
||||
### 如何获取输入法 ID
|
||||
@@ -117,15 +115,17 @@ im-select
|
||||
插件安装后会自动工作,无需手动操作:
|
||||
|
||||
1. **进入 Insert 模式** (`i`, `a`, `o` 等)
|
||||
- 自动恢复上次保存的输入法状态
|
||||
- 延迟切换到中文输入法
|
||||
- 约 200ms 后再次确认中文输入法,降低 macOS 状态未刷新导致的偶发失败
|
||||
|
||||
2. **退出 Insert 模式** (`ESC`)
|
||||
- 保存当前输入法状态
|
||||
- 自动切换到英文输入法
|
||||
- 在 `InsertLeavePre` 提前保存当前输入法状态
|
||||
- 在 `InsertLeave` 自动切换到英文输入法
|
||||
|
||||
3. **中英文混合输入**
|
||||
- 插件会记住你每次退出 Insert 模式时的输入法
|
||||
- 下次进入时自动恢复
|
||||
3. **macOS 行为说明**
|
||||
- `im-select` 控制的是 macOS 输入源 ID
|
||||
- 新版 macOS 中文输入法可能存在“图标为中文但内部仍输入英文”的状态
|
||||
- 当前稳定版不模拟 `Ctrl-Space` / `Caps Lock`,避免快捷键被 Vim 接收导致退出 Insert 模式
|
||||
|
||||
## 测试
|
||||
|
||||
@@ -161,7 +161,8 @@ im-select
|
||||
7. 按 `ESC` 退出到 Normal 模式
|
||||
|
||||
8. 再次按 `i` 进入 Insert 模式
|
||||
- 观察输入法是否保持英文
|
||||
- 当前稳定版会恢复到配置的中文输入法
|
||||
- 如果需要保持英文,请临时禁用插件或调整 `g:imselect_chinese_im` 策略
|
||||
|
||||
## 调试
|
||||
|
||||
@@ -219,8 +220,21 @@ im-select
|
||||
|
||||
### 输入法切换延迟
|
||||
|
||||
- 这是正常的,因为使用了异步处理
|
||||
- 通常延迟小于 100ms,不影响使用
|
||||
- 这是正常的,因为进入 Insert 后使用了 `timer_start()` 延迟恢复
|
||||
- 当前稳定版会在进入 Insert 后约 80ms 切中文,并在约 200ms 后兜底确认
|
||||
- 如果机器较慢或 macOS 状态刷新较慢,可以在插件中适当调大延迟值
|
||||
|
||||
### 输入法图标是中文但实际输入英文
|
||||
|
||||
这是新版 macOS 中文输入法可能出现的内部状态问题:`im-select` 已经把输入源切到中文,但中文输入法内部仍处于英文输入状态。
|
||||
|
||||
当前稳定版采取的处理方式:
|
||||
|
||||
1. 不模拟 `Ctrl-Space`、`Caps Lock`、`Shift` 等按键,避免这些按键被 Vim 接收后影响模式。
|
||||
2. 进入 Insert 后延迟切换中文输入源。
|
||||
3. 再进行一次中文输入源兜底确认。
|
||||
|
||||
如果仍偶发出现该问题,优先调整延迟时间,不建议重新加入系统快捷键模拟。
|
||||
|
||||
### 输入法 ID 不正确
|
||||
|
||||
|
||||
Reference in New Issue
Block a user