# 版本发布说明 RELEASE NOTE ## v2.0.0 **发布日期**: 2025-11-04 --- ### 版本概述 版本 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) ---