-
v2.0.0 Stable
released this
2025-11-04 17:51:40 +08:00 | 12 commits to main since this release发布日期: 2025-11-04
版本概述
版本 2.0.0 是一个重要的里程碑版本,为 Obsidian Vim 输入法自动切换插件带来了重大改进。此版本包含输入法状态管理系统的完全重写、增强的可靠性以及全面的文档。
新增内容
主要功能
输入法状态记忆系统
插件现在具备智能状态记忆系统,能够记住您的输入法偏好:
- 智能记忆:自动记住退出 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
- 智能检测:仅在必要时切换输入法,避免冗余操作
三重检测机制
通过三层检测增强可靠性:
- 主要检测:键盘事件捕获(最快,最高优先级)
- 辅助检测:CodeMirror vim-mode-change 事件
- 兜底检测: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 升级:
cd /path/to/your/vault/.obsidian/plugins/vim-im-switch/ git pull origin main npm install npm run build然后重启 Obsidian 以激活新版本。
重要提示:
- 升级过程中会保留设置
- 无需更改配置
- 建议���级前备份您的 vault
新用户
安装步骤:
- 为您的平台安装 fcitx-remote
- 将插件克隆到 Obsidian 插件目录
- 在 Obsidian 设置中启用插件
- 配置输入法名称(可选)
详细安装说明请参阅 README.md 或 README_en.md。
已知问题
本版本无严重问题。如需故障排除,请参考:
破坏性变更
无。本版本与 v1.x 配置完全向后兼容。
废弃功能
本版本无废弃功能。
未来规划
计划在未来版本中实现的功能:
- 支持更多输入法切换工具(im-select 等)
- 可配置的快捷键绑定
- Visual 模式输入法处理改进
- 与 Obsidian 原生语言切换集成
相关链接
技术支持
如果您遇到任何问题或有疑问:
许可证
MIT License - 详见 LICENSE.txt
Downloads