新闻详情

新闻详情

首页 / 资讯中心 / 详情

Hunk 键盘与鼠标操作指南:Review 导航、视图切换与按键重映射

发布时间:2026/9/25 11:45:10来源:尧图网络
Hunk 键盘与鼠标操作指南:Review 导航、视图切换与按键重映射
开发工具代码评审CLIAI 应用【免费下载链接】hunkReview-first terminal diff viewer for agentic coders项目地址https://gitcode.com/gh_mirrors/hu/hunk点击查看免费下载本指南以 Hunk一款面向 agent 编程的 Review-first 终端 diff 查看器的键盘与鼠标操作为主线系统讲解如何在多文件 review 流中快速导航、检索 diff、调整视图布局、添加人工备注并通过[keybindings]配置把任意默认快捷键重映射为符合个人习惯的按键。读完本文你将掌握 Hunk 的全部内置快捷键语义、底层“命令即 ID”的重映射机制以及鼠标与终端兼容性的边界。文章内容以 键盘与鼠标官方文档 为主体并辅以仓库内命令目录与按键解析源码作为佐证。随时可查的内置帮助Hunk 在任意时刻按下?都会弹出应用内快捷键参考help 对话框其底层命令为hunk.app.toggleHelp默认键?见 docs/keybindings.md。菜单与主要 review 操作同样支持鼠标点选键盘与鼠标并非互斥的两套方案。值得注意的是帮助对话框展示的是解析后的按键如果你在[keybindings]中重映射了某个命令菜单与?帮助会同步显示新按键unbinding一个菜单命令时菜单项仍在只是不再显示快捷键。这一点在 website/src/content/docs/docs/configure/keybindings.md 中有明确说明。在 Review 中导航Hunk 的导航是review 全局的hunk 与 file 快捷键在同一个多文件流中移动也就是主面板中显示的那条连续流不会因为“当前在哪个文件”而中断语义。按键动作↑/↓k/j逐行滚动Space/fb下翻页 / 上翻页ShiftSpace上翻页d/u半页下 / 上[/]上一个 / 下一个 hunk,/.上一个 / 下一个文件{/}上一个 / 下一个已加注hunk/搜索 diff 内容n/N下一个 / 上一个搜索匹配Home/Endg/G跳到 review 开头 / 结尾←/→横向滚动未换行代码按住 Shift 移动更快这些动作在命令目录中都有对应 ID如hunk.review.nextHunk]、hunk.review.nextFile.、hunk.review.nextAnnotatedHunk}、hunk.review.stepDowndown/j、hunk.review.pageDownpagedown/space/f、hunk.review.halfPageDownd/ctrld、hunk.review.jumpToTopg/home、hunk.review.scrollCodeRightright/shiftright等完整清单见 docs/keybindings.md 的 Review and shared commands 表格。搜索 diff 内容按下/会在状态行打开一个less风格的输入提示命令 IDhunk.search.find。输入关键字后Enter跳到下一个包含该文本的 hunk匹配默认大小写不敏感一旦查询中出现大写字母则切换为大小写敏感n/N向前/向后重复查找可环绕wrap状态行报告[i/n] path:line形式的匹配位置diff 中每个匹配处都被标记命中的行以“底色反转”样式呈现重新打开/会显示上一次查询Escape清空查询提交空提示则结束搜索。当前行标记与cursor_line配置↑/↓与k/j移动的是一个高亮的“当前行”标记视图只滚动到恰好让它保持可见的程度。翻页或滚动越过它时标记会被移到屏幕内最近的一行在标记处按c可以锚定一条 review 备注hunk.review.startNote。当前行的标记样式可由三处控制从View 菜单直接切换在用户配置中设置cursor_line见 layout-and-display 配置文档仓库内路径 website/src/content/docs/docs/configure/layout-and-display.mdrow高亮整行默认number只标记行号off关闭标记此时↑/↓、k/j恢复为逐行滚动视图用 CLI 参数--cursor-line style为单次运行指定。从源码看cursor_line是会话持久化的视图偏好之一见PersistedViewPreferences与DEFAULT_VIEW_PREFERENCESpackages/hunk/src/core/run/config.ts对应命令hunk.view.cursorLineRow/hunk.view.cursorLineNumber/hunk.view.cursorLineOff均默认无快捷键需通过[keybindings]或菜单触发。切换视图与显示选项按键动作0/1/2Auto / unified / split 布局s开关文件面板t选择主题l开关行号w开关自动换行m开关 hunk 元数据M开关菜单栏z展开/折叠当前选中 hunk 的未变更上下文a开关 agent 备注e在$EDITOR中打开选中文件Tab在文件列表与文件过滤器之间切换焦点r重新加载可重载的输入F10打开菜单q退出对应命令 ID 示例hunk.view.layoutAuto0、hunk.view.layoutUnified1、hunk.view.layoutSplit2、hunk.view.toggleFilesPanes、hunk.view.openThemeSelectort、hunk.view.toggleLineNumbersl、hunk.view.toggleLineWrapw、hunk.view.toggleHunkHeadersm、hunk.view.toggleMenuBarM、hunk.review.toggleHunkGapz、hunk.view.toggleAgentNotesa、hunk.review.editSelectedFilee、hunk.app.toggleFocusAreatab、hunk.app.refreshr、hunk.app.quitq。两点实现细节值得注意见 docs/keybindings.md文件面板命令遵循hunk:files命名角色若扩展替换了该角色s与View → Files pane会切换解析后的替代面板而不会改动无关面板hunk.view.toggleSidebar仍作为兼容别名存在hunk.view.layoutStack是hunk.view.layoutUnified的废弃别名旧配置与扩展命令调用依然会选中统一布局。退出时保存视图偏好Hunk 在退出时可能主动询问是否保存视图更改。保存会把个人偏好写入全局用户配置只有当仓库里已经存在.hunk/config.toml时才会写入仓库级配置。这与[keybindings]的读取规则形成对照按键绑定只读用户配置永不读取仓库.hunk/config.toml——理由是“哪些键做什么事属于你的键盘和习惯”被审查的 checkout 不能替你重排按键见 website/src/content/docs/docs/configure/keybindings.md。添加人类备注在选中的 hunk 上按c或用鼠标点击可见的“添加备注”按钮即可创建一条 review 备注。编辑期间应用级快捷键会被挂起保证正常文本输入不被拦截用备注编辑器显示的保存动作保存或按Escape取消。备注相关命令还包含E编辑选中 hunk 内第一条可编辑的用户备注hunk.review.editActiveNoteR回复其第一条可见的已存储备注hunk.review.replyToActiveNoteD删除激活备注hunk.review.deleteActiveNote。回复会继承代码锚点可无限嵌套静态 sidecar 注解不是回复目标父备注需先删完回复才能删除。另外hunk.review.nextNote/previousNote默认无键——{/}步进的是“已加注 hunk”两者是不同的命令。鼠标行为点击侧边栏文件列表中的文件即可跳到 review 流中对应位置菜单与对话框动作可直接用鼠标点击替代键盘等价操作滚轮或滚动条用于浏览 review按住 Shift 滚动可横向移动未换行的代码在终端支持的前提下可以选中 diff 文本进行复制如终端支持 OSC 52 剪贴板协议Hunk 会经由终端剪贴板协议复制。鼠标行为依赖终端能力可参考 终端兼容性文档Hunk 构建于 OpenTUI 之上最佳体验需要支持 Unicode、truecolor、备用屏幕alternate screen与鼠标协议、OSC 52 的现代终端SSH、tmux 等中间层可能过滤鼠标/剪贴板/键盘/颜色序列需要逐层确认协议转发必要时改用键盘快捷键。若点击或选择行为不符合预期请优先检查终端与各中间层对鼠标报告的转发。重映射默认快捷键Hunk 中每一个快捷键都是一个命名命令named command。[keybindings]表把命令 ID 映射到你想要的按键组合上写在用户配置中。完整示例来自 keybindings 配置文档[keybindings] hunk.app.quit ctrlx # 单个 chord hunk.review.nextHunk [], ctrln] # 一个命令绑定多个 chord hunk.review.focusFilter / # 把 / 从内容搜索手里拿回来 hunk.history.nextCommit ctrln # history 有自己的命令 ID hunk.view.toggleMenuBar false # 完全解绑 myext.toggle ctrlg # 扩展命令也可以绑命令 ID 的命名空间每个 ID 都以命令拥有者的名字开头Hunk 内置命令位于hunk.命名空间下扩展命令位于其扩展 ID 下。hunk是保留扩展 ID因此任何扩展都无法铸造一个遮蔽内置命令的 ID。交互式历史浏览hunk log使用hunk.history.*表达提交特有行为而真正共享的动作hunk.app.quit、hunk.view.openThemeSelector在 review 与 history 两种界面保持同一 ID见 docs/keybindings.md。重映射规则用户绑定替换默认值你为一个命令列出的 chords 就是它的完整按键集合不是对出厂按键的追加。你绑定的键归你任何只以默认值持有同一 chord 的命令都会让出它保留其余按键。上例中hunk.search.find把/让给了文件过滤器而n/N仍然步进搜索匹配。false或[]解绑命令让它的按键不再做任何事。冲突处理两条配置争夺同一 chord 时文件中靠前的一条生效会话会报告另一条未知命令 ID 与不可用 chord 同样会被报告且表格其余部分仍然生效。无键命令只需一行文件过滤器出厂不带键可用 Tab 或 File 菜单触达hunk.review.nextNote/previousNote同样无键{/}步进的是已加注 hunk——在[keybindings]中写一行即可为它们分配 chord。例如hunk.review.focusFilter /会把/还给过滤器把 diff 内容搜索留给其余按键。Chord 语法按键组合文法chord 由ctrl、alt/option、cmd/meta、shift用连接一个基础键构成。基础键可以是一个字符y、[、大写字母表示其 shift 形态G、或命名键tab、pageup、left、f2。文法细节在 packages/hunk/src/extension-api/keys.ts 的parseKeyChord中实现shift只作用于字母与命名键对 shift 后的符号或数字应直接写 shift 产生的字符!而不是shift1因为终端报告的就是字符本身。源码注释明确解释shifted 符号/数字没有与布局无关的同一性有些键盘 shift1 是!另一些则不是按修饰符匹配将是猜测因此解析器直接拒绝shiftsymbol形式ctrlletter还会匹配未命名的裸控制字节C0 控制字符ctrla…ctrlz对应0x01…0x1a但命名键 Tab 与 Enter 事件保持区分——Tab 是0x09即ctrliEnter 是0x0d即ctrlm若源已把它们解码为命名键ctrli绑定不得吞掉 Tab见 keys.tsalt/option同时匹配显式 Alt 事件与旧式终端的 Escape 前缀形态旧终端无法区分 Alt 与 Meta故altn与metan可能重叠Kitty 键盘事件则能区分两者。未知的命名键如f13或拼写错误如ctlrs会在注册时被拒绝而不是静默永不触发。已解析的 chord 会按修饰符顺序生成规范形式用于冲突比较见 packages/hunk/src/ui/lib/keymap.ts因此G、shiftg、SHIFTG被视为同一个 chord。解析与排他性原理用户绑定与默认值的融合在 packages/hunk/src/ui/lib/keymap.ts 中完成命令声明出厂 chords用户[keybindings]表点名命令 ID该模块把两者折叠为每个 ID 的唯一答案——匹配器、按键标签、扩展冲突检测都读这一份答案。排他性规则exclusivity正是重映射可用的关键用户显式绑定的 chord 属于该命令任何仅以默认值持有它的其他命令会悄悄让出。否则把q重绑到别处时旧拥有者仍会吞掉按键用户就得逐个解绑所有冲突默认值见 keymap.ts 的模块注释。chord 字符串的解析与匹配统一在parseKeyChord/matchesKeyChordkeys.ts并通过 packages/hunk/src/lib/commandKeys.ts 重导出给内置代码扩展组件也可用matchesKey(ctrln, key)获得与 Hunk 自身完全一致的匹配规则。文法之所以放在extension-api中是因为它随hunkdiff/extension一起发布扩展的registerCommand绑定与内置命令、用户配置说同一种语言。命令目录与全量快捷键表内置命令的完整目录ID、标题、分类、默认键、locus定义在 packages/hunk/src/core/run/commandCatalog.ts 的BUILTIN_COMMANDS数组中。每个命令标注三类作用域之一semantic改变 review 本身降级为一个ReviewIntent所有附着表面都能看到结果效果以数据而非函数声明client-local单客户端视图状态滚动、布局、主题、帮助每个客户端实现自己的 handler共享 ID 保证帮助屏与调色板一致host-only在 review 宿主处运行退出、重载输入源、打开$EDITOR远程客户端未经显式 allowlist 不可调用。出厂不带键的命令表格中标为none仍可按 ID 调用、可通过[keybindings]分配快捷键部分还出现在菜单中。人类可读的完整默认键表格见仓库根目录 docs/keybindings.md。路由优先级与不可重映射的键按键路由有明确优先级见 docs/keybindings.md宿主提示与对话框 → 菜单/浮层 → 聚焦的文本输入 → 交互式文件视图模式 → 会话扩展键盘模式 → 命令表与聚焦的 review 控件。属于对话框、菜单或聚焦文本框的键——如Esc、Enter、写备注时的Ctrl-S——是这些控件的一部分不可重映射。Escape 也是每个激活扩展模式的保留出口因此扩展无法困住键盘。此外[keybindings]只从用户配置读取仓库的.hunk/config.toml不能重排按键keybindings 配置文档。结语Hunk 的操作设计把“键盘可导航、鼠标可点选、一切可重映射”统一在一条主线上导航与视图快捷键覆盖多文件 review 流的全部高频动作?帮助、菜单与配置文档保持一致而[keybindings]让每个命名命令都能迁移到任何 chord 上——包括默认无键的命令与扩展命令。若需深入查阅完整命令 ID 与默认键对照表可阅读仓库内的 docs/keybindings.md若想了解布局策略、行号/换行/间隙等显示细节与cursor_line的更多配置组合可继续阅读 layout-and-display 配置文档遇到鼠标或选择异常时优先核对 终端兼容性文档。赞分享开发工具代码评审CLIAI 应用【免费下载链接】hunkReview-first terminal diff viewer for agentic coders项目地址https://gitcode.com/gh_mirrors/hu/hunk点击查看免费下载相关推荐Posting 导航完全指南Jump Mode、键盘/鼠标导航与自动焦点切换配置Posting 导航完全指南Jump Mode、键盘/鼠标导航与自动焦点切换配置 导读 Posting 是一款运行在终端里的现代化 API 客户端它同时为鼠开发工具CLIQtScrcpy按键映射终极指南键盘鼠标玩转手机游戏QtScrcpy按键映射终极指南键盘鼠标玩转手机游戏 想要在PC上畅玩手机游戏吗QtScrcpy的按键映射功能让你用键盘鼠标就能完美控制手机游戏操作实现真桌面应用音视频Cerebro键盘导航全攻略脱离鼠标操作Cerebro键盘导航全攻略脱离鼠标操作 在日常电脑操作中频繁在键盘和鼠标之间切换会严重影响工作效率。Cerebro作为一款开源启动器提供了丰富的键盘导航桌面应用开发者工具上一篇3分钟掌握FillingerAdobe Illustrator智能填充插件让复杂图案设计变得如此简单下一篇APKMirror安卓应用下载管理终极指南安全获取任何版本APK的完整教程创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Atlas 300V 24G部署YOLOv5全流程实战:昇腾NPU推理卡调优指南 2026/9/25 12:23:46

Atlas 300V 24G部署YOLOv5全流程实战:昇腾NPU推理卡调优指南

最近后台好多人问我同一个问题:atlas 300v 24g 是运算加速卡吗?以及 atlas 能不能部署 yolo?这两个问题放在一起看,其实非常典型——很多人把昇腾Atlas当成普通显卡拿到手,装了驱动后还想沿用GPU那套思路,结…

阅读更多 →
Openclaw 工程自动化与 Hooks 工具域详解:TaoToken 统一 Key 接入配置骨架 2026/9/25 12:23:40

Openclaw 工程自动化与 Hooks 工具域详解:TaoToken 统一 Key 接入配置骨架

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
软件脱壳实战:从UPX到加密壳的OEP定位与IAT修复 2026/9/25 12:23:39

软件脱壳实战:从UPX到加密壳的OEP定位与IAT修复

1. 脱壳这件事,到底在脱什么很多人第一次听到“脱壳”这个词,脑子里浮现的是剥花生或者拆快递。放在软件逆向的语境里,这个比喻其实挺贴切——壳就是包裹在原始程序外面的一层保护,脱壳就是把保护层剥掉,让里面的原始代…

阅读更多 →
PC端NCNN部署实战:用TaoToken统一Key打通模型推理配置链路 2026/9/25 12:23:39

PC端NCNN部署实战:用TaoToken统一Key打通模型推理配置链路

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
Openclaw 折腾四回:读文档的人,正在消失——用 TaoToken 统一 Key 打通 npm 与 GLM-4.7 2026/9/25 12:23:39

Openclaw 折腾四回:读文档的人,正在消失——用 TaoToken 统一 Key 打通 npm 与 GLM-4.7

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
OpenClaw 时代的中国 Agent 产业生态报告:用 TaoToken 统一 Key 打通多工具配置 2026/9/25 12:23:33

OpenClaw 时代的中国 Agent 产业生态报告:用 TaoToken 统一 Key 打通多工具配置

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉