217 lines
6.7 KiB
Markdown
217 lines
6.7 KiB
Markdown
# 版本发布说明 RELEASE NOTE
|
||
|
||
## v2.0.1
|
||
|
||
**发布日期**: 2025-11-04
|
||
|
||
---
|
||
|
||
### v2.0.1 - Patch Notes
|
||
|
||
- 验证并修复:终端(macOS Terminal / iTerm2)下 `vi` 按 `ESC` 时顶部短暂显示 `fcitx-remote` 的问题(使用 `nohup` + 后台执行并重定向,避免任何 stderr/stdout 导致的 UI 更新)
|
||
- 修复:删除对 `job_start` 不兼容的 `{'detach': v:true}` 选项以兼容更多 Vim 构建
|
||
- 文档微调:更新 README/CHANGELOG/RELEASE,记录上述兼容性修复
|
||
|
||
---
|
||
|
||
### 版本概述
|
||
|
||
版本 2.0.0 是一个重要的里程碑版本,为 Vim 输入法自动切换插件带来了重大改进。此版本包含:
|
||
- **新增原生 Vim 插件支持**:为 Vim/NeoVim 编辑器提供相同的输入法自动切换功能
|
||
- **完善的输入法状态管理系统**:智能记忆和恢复输入法状态
|
||
- **增强的可靠性和性能**:消除 UI 闪烁,优化切换速度
|
||
- **全面的文档更新**:包含两个插件的完整使用说明
|
||
|
||
### 新增内容
|
||
|
||
#### 主要功能
|
||
|
||
##### 原生 Vim 插件支持(全新)
|
||
**fcitx-osx.vim**:专为原生 Vim/NeoVim 编辑器设计的输入法自动切换插件
|
||
- **智能状态记忆**:与 Obsidian 插件相同的输入法状态管理逻辑
|
||
- **完全静默执行**:无任何 UI 闪烁或延迟
|
||
- **异步执行优化**:使用 Vim 8+ 的 `job_start()` 实现后台切换
|
||
- **精确切换**:使用 `fcitx-remote -s` 命令指定输入法 ID
|
||
- **向后兼容**:支持旧版本 Vim(使用后台进程)
|
||
|
||
**安装方式**:
|
||
```bash
|
||
mkdir -p ~/.vim/plugin
|
||
cp fcitx-osx.vim ~/.vim/plugin/
|
||
```
|
||
|
||
**配置选项**:
|
||
```vim
|
||
let g:fcitx_english_im = 'com.apple.keylayout.ABC'
|
||
let g:fcitx_chinese_im = 'com.tencent.inputmethod.wetype.pinyin'
|
||
```
|
||
|
||
##### 输入法状态记忆系统(两个插件共享)
|
||
插件现在具备智能状态记忆系统,能够记住您的输入法偏好:
|
||
- **智能记忆**:自动记住退出 Insert 模式时使用的输入法(中文/英文)
|
||
- **自动恢复**:再次进入 Insert 模式时,插件会恢复上次的输入法状态
|
||
- **混合输入支持**:无缝处理在同一编辑会话中中英文输入法切换的场景
|
||
|
||
**示例工作流程**:
|
||
```
|
||
1. 按 'i' → 进入 Insert 模式 → 恢复中文输入法(如果上次是中文)
|
||
2. 输入中文内容
|
||
3. 手动切换到英文输入法,继续输入
|
||
4. 按 ESC → 保存"英文"作为最后状态
|
||
5. 再次按 'i' → 自动恢复英文输入法
|
||
```
|
||
|
||
#### 关键 Bug 修复
|
||
|
||
##### ESC 键响应问题
|
||
- **修复内容**:ESC 键需要多次按下才能切换输入法
|
||
- **解决方案**:实现事件捕获模式,在最早阶段拦截按键
|
||
- **效果**:首次按下 ESC 即可立即切换到英文输入法
|
||
|
||
##### Insert 模式干扰问题
|
||
- **修复内容**:在 Insert 模式下输入字符(输入 'i'、'a'、'o' 等)触发不必要的输入法切换
|
||
- **解决方案**:为键盘事件处理器添加 Vim 模式验证
|
||
- **效果**:Insert 模式下的正常文本输入不再被打断
|
||
|
||
#### 性能优化
|
||
|
||
##### 事件处理优化
|
||
- **捕获模式**:键盘事件监听器使用 `{ capture: true }`
|
||
- **降低延迟**:输入法切换响应时间快 10-20ms
|
||
- **智能检测**:仅在必要时切换输入法,避免冗余操作
|
||
|
||
##### 三重检测机制
|
||
通过三层检测增强可靠性:
|
||
1. **主要检测**:键盘事件捕获(最快,最高优先级)
|
||
2. **辅助检测**:CodeMirror vim-mode-change 事件
|
||
3. **兜底检测**:100ms 轮询作为安全保障
|
||
|
||
#### 代码质量
|
||
|
||
##### 代码库清理
|
||
- 移除约 50 行未使用的测试代码
|
||
- 减少插件体积约 2KB
|
||
- 提高代码可维护性和可读性
|
||
|
||
##### 简化日志输出
|
||
- 减少 70% 的控制台输出
|
||
- 保留关键的状态转换日志
|
||
- 更清晰的调试信息,便于故障排查
|
||
|
||
#### 文档
|
||
|
||
##### 全面的文档
|
||
- **README.md**:详细的中文文档,包含使用示例
|
||
- **README_en.md**:完整的英文文档
|
||
- **CHANGELOG.md**:详细的中文版本历史
|
||
- **CHANGELOG_en.md**:完整的英文更新日志
|
||
- **Mermaid 图表**:可视化工作流程说明
|
||
|
||
### 技术细节
|
||
|
||
#### 架构改进
|
||
|
||
**状态管理**:
|
||
- `currentVimMode`:追踪当前 Vim 模式(normal/insert/visual)
|
||
- `lastInsertModeIMStatus`:存储上次 Insert 模式的输入法状态
|
||
- `imStatus`:维护当前输入法状态
|
||
|
||
**检测系统**:
|
||
- 事件捕获阶段拦截
|
||
- 使用 `fcitx-remote -n` 实时验证输入法状态
|
||
- 异步输入法切换操作
|
||
|
||
#### 兼容性
|
||
|
||
**平台支持**:
|
||
- macOS:通过 fcitx-remote-for-osx 完全支持
|
||
- Linux:通过 fcitx 完全支持
|
||
- Windows:通过 AutoHotKey 版本支持
|
||
|
||
**Obsidian 兼容性**:
|
||
- 兼容最新版本的 Obsidian
|
||
- 同时支持 CodeMirror 5 和 CodeMirror 6
|
||
|
||
### 升级指南
|
||
|
||
#### 现有用户
|
||
|
||
**从 v1.x 升级**:
|
||
```bash
|
||
cd /path/to/your/vault/.obsidian/plugins/vim-im-switch/
|
||
git pull origin main
|
||
npm install
|
||
npm run build
|
||
```
|
||
|
||
然后重启 Obsidian 以激活新版本。
|
||
|
||
**重要提示**:
|
||
- 升级过程中会保留设置
|
||
- 无需更改配置
|
||
- 建议升级前备份您的 vault
|
||
|
||
#### 新用户
|
||
|
||
**Obsidian 插件安装步骤**:
|
||
1. 为您的平台安装 fcitx-remote
|
||
2. 将插件克隆到 Obsidian 插件目录
|
||
3. 在 Obsidian 设置中启用插件
|
||
4. 配置输入法名称(可选)
|
||
|
||
**Vim 插件安装步骤**:
|
||
1. 为您的平台安装 fcitx-remote
|
||
2. 复制 `fcitx-osx.vim` 到 `~/.vim/plugin/`
|
||
3. 重启 Vim,插件自动加载
|
||
4. 在 `.vimrc` 中配置输入法 ID(可选)
|
||
|
||
**一键部署(推荐)**:
|
||
```bash
|
||
./deploy.sh # 同时部署两个插件
|
||
```
|
||
|
||
详细安装说明请参阅 [README.md](./README.md) 或 [README_en.md](./README_en.md)。
|
||
|
||
### 已知问题
|
||
|
||
本版本无严重问题。如需故障排除,请参考:
|
||
- [中文故障排除](./README.md#故障排除)
|
||
- [English Troubleshooting](./README_en.md#troubleshooting)
|
||
|
||
### 破坏性变更
|
||
|
||
无。本版本与 v1.x 配置完全向后兼容。
|
||
|
||
### 废弃功能
|
||
|
||
本版本无废弃功能。
|
||
|
||
### 未来规划
|
||
|
||
计划在未来版本中实现的功能:
|
||
- 支持更多输入法切换工具(im-select、macism 等)
|
||
- 可配置的快捷键绑定
|
||
- Visual 模式输入法处理改进
|
||
- 与 Obsidian 原生语言切换集成
|
||
- NeoVim Lua 插件版本
|
||
|
||
### 相关链接
|
||
|
||
- [GitHub 仓库](https://github.com/yourusername/vim-im-switch)
|
||
- [问题追踪](https://github.com/yourusername/vim-im-switch/issues)
|
||
- [中文文档](./README.md)
|
||
- [English Documentation](./README_en.md)
|
||
- [更新日志](./CHANGELOG.md)
|
||
- [Changelog](./CHANGELOG_en.md)
|
||
|
||
### 技术支持
|
||
|
||
如果您遇到任何问题或有疑问:
|
||
1. 查看 [故障排除指南](./README.md#故障排除)
|
||
2. 搜索现有的 [Issues](https://github.com/yourusername/vim-im-switch/issues)
|
||
3. 创建新的 issue 并提供详细信息
|
||
|
||
### 许可证
|
||
|
||
MIT License - 详见 [LICENSE.txt](./LICENSE.txt)
|