首页/OpenHarness 源码课/OH11: Vim / 键位

OH11: Vim / 键位 OpenHarness · 对标 S11

S11 同主题:终端 TUI 需要可选的 Vim 键位;实现上分为模式位按键解析层,与课内「normal/insert」叙事对应但代码更薄。

上游:HKUDS/OpenHarness · 本仓库快照:reference/rererence_harness/OpenHarness/ · 路径亦见 专题映射表

与 S11 站内导图对齐course-s11)。

🎯 关键路径(读什么)

src/openharness/ 下优先打开:

  • vim/transitions.pytoggle_vim_mode(最小实现)。
  • keybindings/default_bindings.py:默认表。
  • keybindings/loader.pyresolver.pyparser.py:读配置、解析按键、绑定动作。

🔍 源码导读

薄层现实

OpenHarness 的 Vim 层刻意保持小;重逻辑在 prompt_toolkit 与 TUI 主循环。阅读重点放在「配置从哪加载、如何覆盖默认」而非期待完整 Vim 兼容表。

与 S11 对照

课内可能展开 text object;此处优先保证可扩展绑定表与模式切换钩子。若做二次开发,通常在 resolver 层加映射。

⚖️ 与课内叙事对照

维度课内 S11OpenHarness
模式状态Normal/Insert布尔或枚举由 TUI 持有,vim 包仅辅助
绑定来源用户配置loader 路径与合并规则
与 slash命令抢占冒号/斜杠输入优先级在 TUI 层处理

🤔 思考题

  1. 为何不把 Vim 模式状态放进 QueryEngine
  2. 若默认绑定与系统快捷键冲突,推荐改文件是哪一处?
  3. toggle_vim_mode 仅取反布尔,若需 tri-state(off/vi/emacs)应改哪里?

📎 延伸阅读

OH01–12 目录 · OH10 · OH12 · S11 · D11