第十三课:实用快捷键与技巧
1. 概述
除了 Slash 命令之外,Hermes Agent 的 CLI 界面还提供了丰富的快捷键、终端增强和界面定制功能。这些功能可以显著提升日常使用效率——从 Tab 补全减少输入、Ctrl 快捷键快速操作、Vim 模式提供编辑器级控制,到主题和状态栏的个性化定制。
本课将系统介绍所有实用的快捷键和技巧,帮助你将 Hermes Agent CLI 打造为一个高效的工作环境。
2. Tab 补全
2.1 基本用法
Tab 补全是 Hermes Agent CLI 中最常用的快捷功能。按下 Tab 键,系统会根据当前输入上下文提供补全建议:
# 补全 Slash 命令
/mo<Tab> → /model
/per<Tab> → /permissions
/comp<Tab> → /compact
# 补全模型名称
/model gpt<Tab> → /model gpt-4.1 / gpt-4.1-mini
# 补全技能名称
/skills use cl<Tab> → cloud-deploy / code-lint
# 补全文件路径
cat ./src/app<Tab> → ./src/app.py / ./src/app.ts
2.2 补全类型
Tab 补全支持以下上下文:
| 上下文 | 补全内容 | 示例 |
|---|---|---|
/ 开头 | Slash 命令名 | /mo<Tab> → /model |
| Slash 命令参数 | 该命令的有效参数值 | /model gpt<Tab> → gpt-4.1 |
| 文件路径 | 当前目录下的文件和目录 | ./src/<Tab> → ./src/app.py |
| 技能名 | 已安装的技能名称 | /skills use co<Tab> → code-review |
| MCP 工具名 | 已注册的 MCP 工具名称 | 工具调用时的参数补全 |
2.3 连续 Tab 与循环补全
当有多个候选时:
- 第一次按 Tab 显示候选列表
- 连续按 Tab 在候选之间循环
- 按
Shift+Tab反向循环
2.4 智能模糊匹配
Tab 补全支持模糊匹配,不要求精确前缀:
/model son<Tab> → /model anthropic/claude-sonnet-4-20250514 (匹配 "sonnet")
/skills use dep<Tab> → /skills use cloud-deploy (匹配 "deploy")
/new<Tab> → /new (精确匹配)
3. Ctrl 快捷键
3.1 核心快捷键列表
Hermes Agent CLI 支持以下 Ctrl 组合键:
| 快捷键 | 功能 | 说明 |
|---|---|---|
Ctrl+O | 复制上一条回复 | 将 Agent 最近的回复复制到系统剪贴板 |
Ctrl+C | 取消当前操作 | 中断正在执行的工具调用或 LLM 生成 |
Ctrl+D | 退出 / EOF | 在空行时退出 CLI(等效于 /exit) |
Ctrl+L | 清屏 | 清除终端显示,保留对话历史(等效于 /clear) |
Ctrl+R | 反向搜索历史 | 搜索之前输入过的命令和消息 |
Ctrl+P | 上一条历史 | 浏览输入历史(上一条) |
Ctrl+N | 下一条历史 | 浏览输入历史(下一条) |
Ctrl+A | 行首 | 将光标移动到当前行的开头 |
Ctrl+E | 行尾 | 将光标移动到当前行的末尾 |
Ctrl+K | 删除到行尾 | 从光标位置删除到行尾 |
Ctrl+U | 删除到行首 | 从光标位置删除到行首 |
Ctrl+W | 删除前一个词 | 删除光标前的一个完整单词 |
Ctrl+Y | 粘贴 | 粘贴上次删除的内容(Yank) |
3.2 Ctrl+C — 取消操作详解
Ctrl+C 是最常用的快捷键之一,用于中断正在进行的操作:
中断 LLM 生成
当 Agent 正在流式输出文本时,按 Ctrl+C 会:
- 停止接收 LLM 的流式输出
- 保留已经生成的部分内容
- 返回到输入等待状态
中断工具执行
当 Agent 正在执行工具(如终端命令)时,按 Ctrl+C 会:
- 向工具进程发送 SIGINT 信号
- 等待工具优雅退出
- 如果工具不响应,强制终止
连续 Ctrl+C
- 第一次
Ctrl+C:尝试优雅中断 - 第二次
Ctrl+C:强制中断 - 第三次
Ctrl+C:退出 CLI
3.3 Ctrl+O — 复制回复
Ctrl+O 将 Agent 最近的完整回复复制到系统剪贴板。这个功能在以下场景非常有用:
- 将回复粘贴到文档:Agent 生成的技术文档可以直接粘贴到 Notion/Confluence
- 分享代码片段:Agent 生成的代码可以直接粘贴到 IDE
- 跨平台转发:将一个平台上的回复复制后粘贴到另一个平台的消息
剪贴板操作依赖系统工具:
- macOS:
pbcopy - Linux:
xclip或xsel(需要 X11)/wl-copy(Wayland) - Windows:
clip
如果剪贴板工具不可用,Ctrl+O 会将回复输出到标准输出供手动复制。
3.4 Ctrl+R — 历史搜索
Ctrl+R 启动反向增量搜索,允许你快速找到之前输入过的消息:
(reverse-i-search)`deploy': /goal 将项目部署到生产环境
- 输入关键词后,会实时匹配历史输入
- 按
Ctrl+R继续向前搜索更多匹配 - 按
Enter执行匹配到的命令 - 按
Escape或Ctrl+C退出搜索
3.5 行编辑快捷键
以下快捷键遵循 Emacs 键位绑定(与 bash/zsh 一致):
行内容: echo "hello world" (光标在 w 处)
echo "hello |world"
Ctrl+A → |echo "hello world" (行首)
Ctrl+E → echo "hello world| (行尾)
Ctrl+K → echo "hello | (删除到行尾)
Ctrl+U → |world" (删除到行首)
Ctrl+W → echo "hello | (删除前一个词)
Ctrl+Y → echo "hello world"| (粘贴)
4. Vim 模式
4.1 启用 Vim 模式
/vim # 切换 Vim 模式的开关
/vim on # 启用 Vim 模式
/vim off # 禁用 Vim 模式
Vim 模式启用后,CLI 的输入行为会遵循 Vim 的键位绑定,适合 Vim 用户。
4.2 Normal 模式快捷键
在 Vim 模式下,按 Escape 进入 Normal 模式:
| 快捷键 | 功能 | 对应 Vim 命令 |
|---|---|---|
i | 进入 Insert 模式 | i |
a | 在光标后进入 Insert 模式 | a |
A | 在行尾进入 Insert 模式 | A |
I | 在行首进入 Insert 模式 | I |
h | 光标左移 | h |
l | 光标右移 | l |
w | 跳到下一个词首 | w |
b | 跳到上一个词首 | b |
e | 跳到当前词尾 | e |
0 | 行首 | 0 |
$ | 行尾 | $ |
x | 删除光标处字符 | x |
dd | 删除整行 | dd |
cc | 清除整行并进入 Insert 模式 | cc |
yy | 复制整行 | yy |
p | 粘贴 | p |
u | 撤销 | u |
. | 重复上次操作 | . |
4.3 Vim 模式状态指示
Vim 模式启用后,状态栏会显示当前模式:
─── NORMAL ─── # Normal 模式(蓝色背景)
─── INSERT ─── # Insert 模式(绿色背景)
─── VISUAL ─── # Visual 模式(紫色背景)
4.4 Vim 模式与 Emacs 模式对比
| 特性 | Vim 模式 | Emacs 模式(默认) |
|---|---|---|
| 适用人群 | Vim/Neovim 用户 | 大部分终端用户 |
| 学习曲线 | 较高(需要记忆模式切换) | 较低(即时可用) |
| 编辑效率 | 高(一旦熟练) | 中等 |
| 手指移动 | 少(手指保持在主键区) | 较多(需要移动到方向键) |
| 多行编辑 | 支持 Visual 模式 | 不支持 |
5. 主题定制 — /theme
5.1 基本用法
/theme # 显示当前主题和可用主题列表
/theme <name> # 切换到指定主题
/theme list # 列出所有可用主题
/theme custom <file> # 加载自定义主题文件
5.2 内置主题
Hermes Agent CLI 提供多种内置主题:
| 主题名 | 风格 | 适合场景 |
|---|---|---|
default | 经典深色 | 通用,适合大部分终端 |
light | 浅色 | 亮色终端环境 |
monokai | Monokai 配色 | 代码编辑风格 |
dracula | Dracula 配色 | 深紫色调 |
nord | Nord 配色 | 北欧冷色调 |
solarized-dark | Solarized Dark | 护眼深色 |
solarized-light | Solarized Light | 护眼浅色 |
minimal | 极简风格 | 无装饰,信息密度高 |
high-contrast | 高对比度 | 无障碍访问 |
5.3 主题影响范围
主题配置影响以下界面元素:
- 消息气泡:用户消息和 Agent 消息的颜色和样式
- 工具调用显示:工具名称、参数、结果的颜色
- 状态栏:模型名、token 使用量、模式指示器的颜色
- 语法高亮:代码块中的语法着色
- 警告和错误:安全提示、错误信息的颜色
- 进度指示器:工具执行进度条的颜色
5.4 自定义主题
创建自定义主题文件(YAML 格式):
# ~/.hermes/themes/custom.yaml
name: "My Custom Theme"
colors:
primary: "#61AFEF" # 主色调(Agent 消息)
secondary: "#98C379" # 次要色(用户消息)
accent: "#C678DD" # 强调色(工具调用)
warning: "#E5C07B" # 警告色
error: "#E06C75" # 错误色
success: "#56B6C2" # 成功色
muted: "#5C6370" # 弱化色(注释、次要信息)
background: "#282C34" # 背景色
foreground: "#ABB2BF" # 前景色
styles:
user_message: "bold"
agent_message: "normal"
tool_call: "italic"
code_block: "monospace"
status_bar: "dim"
加载自定义主题:
/theme custom ~/.hermes/themes/custom.yaml
6. 状态栏配置 — /statusline
6.1 基本用法
/statusline # 显示当前状态栏配置
/statusline on # 启用状态栏
/statusline off # 禁用状态栏
/statusline config <items> # 配置状态栏显示项
6.2 状态栏组件
状态栏可以包含以下组件:
| 组件 | 标识符 | 显示内容 | 示例 |
|---|---|---|---|
| 模型名 | model | 当前使用的模型 | gpt-4.1 |
| Token 用量 | tokens | 输入/输出 token 数 | 12.5K / 2.1K |
| 成本 | cost | 当前会话的累计成本 | $0.34 |
| 迭代次数 | iter | 当前迭代/总预算 | 15/90 |
| 会话时间 | time | 会话持续时间 | 23:45 |
| 模式指示 | mode | 当前模式(Normal/Plan等) | PLAN |
| 工具状态 | tools | 最后使用的工具 | execute_command |
| Git 分支 | git | 当前 Git 分支 | main |
| 内存用量 | memory | Agent 内存使用 | 245MB |
6.3 状态栏配置示例
/statusline config model,tokens,cost,iter,mode
这会在状态栏中依次显示:模型名、Token 用量、成本、迭代次数、模式指示。
状态栏效果示例:
─── gpt-4.1 | 12.5K/2.1K | $0.34 | 15/90 | NORMAL ───
6.4 状态栏位置
# config.yaml
display:
statusline:
enabled: true
position: "bottom" # top / bottom
items: ["model", "tokens", "cost", "mode"]
compact: false # true = 紧凑模式(单行)
7. 终端标题 — /title
7.1 基本用法
/title # 显示当前终端标题
/title <text> # 设置自定义终端标题
/title auto # 自动设置(显示当前任务摘要)
/title reset # 重置为默认标题
7.2 用途
/title 设置终端窗口的标题栏文字。在以下场景中特别有用:
- 多终端管理:当你同时打开多个 Hermes Agent 终端时,自定义标题可以快速区分
- tmux/screen:在终端复用器中,标题可以显示在标签栏上
- 任务标识:给每个终端设置任务名称(如"部署"、"调试"、"文档")
7.3 自动标题
/title auto 模式下,Agent 会根据当前任务自动设置标题:
- 执行代码相关任务时:
Hermes — Coding: refactoring auth module - 执行部署任务时:
Hermes — Deploy: production v2.3.1 - 日常对话时:
Hermes — Chat
8. 键位映射 — /keymap
8.1 基本用法
/keymap # 显示当前键位映射
/keymap <name> # 切换键位映射方案
/keymap list # 列出可用的键位方案
/keymap custom <file> # 加载自定义键位方案
8.2 内置键位方案
| 方案 | 说明 | 适合人群 |
|---|---|---|
default | 标准 Emacs 键位 | 大部分用户 |
vim | Vim 键位(等效于 /vim on) | Vim 用户 |
windows | Windows 风格(Ctrl+C/V/X 兼容) | Windows 用户 |
minimal | 精简键位(仅保留核心快捷键) | 新手用户 |
8.3 自定义键位映射
# ~/.hermes/keymaps/custom.yaml
name: "My Keymap"
bindings:
# 覆盖默认绑定
cancel: "Ctrl+G" # 原来是 Ctrl+C
copy_reply: "Ctrl+Shift+C" # 原来是 Ctrl+O
search_history: "Ctrl+F" # 原来是 Ctrl+R
# 新增自定义绑定
quick_deploy: "Ctrl+Shift+D"
toggle_plan: "Ctrl+P"
# 组合键
clear_and_new:
keys: "Ctrl+Shift+N"
action: "/clear /new" # 连续执行两个命令
9. 原始滚动模式 — /raw
9.1 基本用法
/raw # 切换原始滚动模式
/raw on # 启用原始滚动
/raw off # 禁用原始滚动
9.2 什么是原始滚动模式
原始滚动模式禁用 Hermes Agent CLI 的自定义渲染,恢复到终端的原生滚动行为。
在正常模式下,CLI 使用自定义的 TUI(Text User Interface)渲染:
- 消息以气泡形式显示
- Markdown 实时渲染
- 代码块有语法高亮
- 进度条和动画效果
在原始模式下:
- 所有输出都是纯文本
- 没有气泡、没有语法高亮
- 使用终端原生的滚动缓冲区
- 适合管道输出和日志记录
9.3 使用场景
场景一:管道输出
hermes chat "list all Python files" | grep ".py" | wc -l
在原始模式下,输出是干净的纯文本,可以直接管道到其他命令。
场景二:日志记录
hermes chat --raw "analyze the error log" > analysis.txt
原始模式的输出适合保存为日志文件。
场景三:终端兼容性 某些终端模拟器对 TUI 渲染支持不完善(如老旧的 SSH 客户端),原始模式提供更好的兼容性。
场景四:性能优化 在低带宽的 SSH 连接中,原始模式减少了需要传输的 ANSI 转义序列,提升响应速度。
9.4 原始模式与 TUI 模式对比
| 特性 | TUI 模式(默认) | 原始模式 |
|---|---|---|
| Markdown 渲染 | ✅ 实时渲染 | ❌ 纯文本 |
| 代码高亮 | ✅ 语法着色 | ❌ 无着色 |
| 气泡样式 | ✅ 美观的气泡 | ❌ 纯文本 |
| 滚动行为 | 自定义滚动 | 终端原生滚动 |
| 管道兼容 | ❌ 包含 ANSI 转义 | ✅ 干净纯文本 |
| 性能 | 较重 | 轻量 |
| 终端兼容 | 需要现代终端 | 兼容所有终端 |
10. 其他实用技巧
10.1 多行输入
在 CLI 中输入多行文本有以下方式:
方式一:反斜杠续行
这是一个很长的提示词,\
可以跨越多行输入,\
最终会合并为一条消息。
方式二:三重反引号代码块
这是多行内容 可以包含任何格式 包括特殊字符
方式三:Shift+Enter(部分终端支持)
在支持的终端中,Shift+Enter 可以换行而不发送消息。
10.2 快速命令组合
# 快速查看帮助
/help
# 快速查看版本
/version
# 查看当前用量和成本
/usage
# 快速切换到只读模式查看代码
/permissions read-only
# 完成后恢复
/permissions auto
10.3 环境变量快捷设置
通过环境变量可以快速覆盖 CLI 行为:
# 设置默认模型
HERMES_MODEL=gpt-4.1 hermes
# 设置默认 Provider
HERMES_PROVIDER=openrouter hermes
# 设置终端超时
TERMINAL_TIMEOUT=300 hermes
# 启用详细日志
HERMES_LOG_LEVEL=DEBUG hermes
# 设置配置文件目录
HERMES_HOME=~/.hermes-work hermes
10.4 配置文件快速调优
常用的 config.yaml 快速调优项:
# 提高响应速度
display:
stream: true # 启用流式输出(默认已启用)
tool_progress: "minimal" # 减少工具进度显示
# 提高安全性
permissions:
default_mode: "auto"
smart_approval: true
# 提高上下文质量
compression:
enabled: true
threshold: 0.50
summary_model: "gpt-4.1-mini" # 用小模型做摘要,节省成本
# 自定义显示
display:
show_cost: true # 显示每次对话的成本
show_tokens: true # 显示 token 用量
statusline:
enabled: true
items: ["model", "tokens", "cost", "mode"]
11. 效率提升 Checklist
以下是日常使用 Hermes Agent 的效率提升建议:
输入效率
- 掌握 Tab 补全,减少手动输入
- 使用
Ctrl+R快速搜索历史命令 - 利用
Ctrl+A/E/W/U/K快速编辑输入行
操作效率
- 使用
Ctrl+C快速中断不需要的操作 - 使用
Ctrl+O快速复制 Agent 回复 - 掌握
/new,/resume,/fork快速管理会话
模型效率
- 简单任务使用
/model gpt-4.1-mini+/fast on - 复杂任务使用
/model gpt-4.1或更强模型 - 使用
/plan预审复杂任务
安全效率
- 生产环境使用
/permissions auto+ Smart Approval - 敏感操作使用
/plan on审查后再执行 - 利用
/approve always减少重复审批
界面效率
- 选择合适的
/theme减少视觉疲劳 - 配置
/statusline快速查看关键信息 - Vim 用户启用
/vim提升编辑效率
思考题
-
Tab 补全的模糊匹配在什么情况下可能产生歧义?如果你要输入的文件名恰好匹配多个候选,如何快速定位到正确的目标?
-
Ctrl+C在 LLM 生成、工具执行、空闲等待三种状态下行为有什么不同?为什么需要区分这些状态? -
Vim 模式和 Emacs 模式在 Hermes Agent CLI 中的设计权衡是什么?为什么不默认启用 Vim 模式?
-
原始滚动模式(
/raw)禁用了自定义 TUI 渲染。从用户体验的角度分析,为什么不是所有用户都使用原始模式?TUI 模式提供了哪些不可替代的价值? -
设计一个针对新手用户的 Hermes Agent CLI 使用指南:从快捷键、主题、状态栏到键位映射,如何为新手配置一个"开箱即用"的高效环境?列出具体的配置步骤和参数。