Files
vim-im-switch/RELEASE.md
2025-11-04 20:25:12 +08:00

6.7 KiB
Raw Blame History

版本发布说明 RELEASE NOTE

v2.0.1

发布日期: 2025-11-04


v2.0.1 - Patch Notes

  • 验证并修复终端macOS Terminal / iTerm2viESC 时顶部短暂显示 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使用后台进程

安装方式

mkdir -p ~/.vim/plugin
cp fcitx-osx.vim ~/.vim/plugin/

配置选项

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 升级

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可选

一键部署(推荐)

./deploy.sh  # 同时部署两个插件

详细安装说明请参阅 README.mdREADME_en.md

已知问题

本版本无严重问题。如需故障排除,请参考:

破坏性变更

无。本版本与 v1.x 配置完全向后兼容。

废弃功能

本版本无废弃功能。

未来规划

计划在未来版本中实现的功能:

  • 支持更多输入法切换工具im-select、macism 等)
  • 可配置的快捷键绑定
  • Visual 模式输入法处理改进
  • 与 Obsidian 原生语言切换集成
  • NeoVim Lua 插件版本

相关链接

技术支持

如果您遇到任何问题或有疑问:

  1. 查看 故障排除指南
  2. 搜索现有的 Issues
  3. 创建新的 issue 并提供详细信息

许可证

MIT License - 详见 LICENSE.txt