Lzh on GitHub

键盘导航

掌握 Roo Code 中的键盘导航,包括可自定义的快捷方式、命令执行和提示历史导航,以实现高效的编码工作流程。

Roo Code 界面支持键盘导航和快捷方式,以简化你的工作流程并减少对鼠标交互的依赖。

可用的键盘命令

Roo Code 提供键盘命令来增强你的工作流程。本页重点介绍 roo.acceptInput 命令,但这里有一个所有键盘命令的快速参考:

命令描述默认快捷方式
roo.acceptInput提交文本或接受主要建议无(可配置)
roo.focus聚焦 Roo 输入框无(可配置)
Arrow Up/Down在提示历史中导航内置

键盘命令的主要优点

  • 键盘驱动界面: 无需鼠标交互即可提交文本或选择主要建议按钮。
  • 提高可访问性: 对于行动不便或使用鼠标感到不适的用户至关重要。
  • Vim/Neovim 兼容性: 支持来自以键盘为中心的环境的开发人员无缝过渡。
  • 工作流程效率: 在开发任务期间减少键盘和鼠标之间的上下文切换。

roo.acceptInput 命令

roo.acceptInput 命令允许你使用键盘快捷方式提交文本或接受建议,而不是点击按钮或在输入区域按 Enter 键。

它的作用

roo.acceptInput 命令是一个通用的输入提交命令。当触发时,它会:

  • 在文本输入区域时提交你当前的文本或图像输入(相当于按 Enter 键)。
  • 当操作按钮可见时(例如确认/取消按钮或任何其他操作按钮),点击主要(第一个)按钮。

详细设置指南

方法 1:使用 VS Code UI

  1. 打开命令面板(在 Mac 上是 Ctrl+Shift+P 或 Cmd+Shift+P)。
  2. 输入“Preferences: Open Keyboard Shortcuts”。
  3. 在搜索框中,输入“roo.acceptInput”。
  4. 在结果中找到“Roo: Accept Input/Suggestion”。
  5. 点击命令左侧的 ➕ 图标。
  6. 按下你想要的键组合(例如,Ctrl+Enter 或 Alt+Enter)。
  7. 按 Enter 确认。

方法 2:直接编辑 keybindings.json

  1. 打开命令面板(在 Mac 上是 Ctrl+Shift+P 或 Cmd+Shift+P)。
  2. 输入“Preferences: Open Keyboard Shortcuts (JSON)”。
  3. 将以下条目添加到 JSON 数组中:
{
  "key": "ctrl+enter",  // or your preferred key combination
  "command": "roo.acceptInput",
  "when": "rooViewFocused"  // This is a context condition that ensures the command only works when Roo is focused
}

你也可以使用更具体的条件:

{
  "key": "ctrl+enter",
  "command": "roo.acceptInput",
  "when": "webviewViewFocus && webviewViewId == 'roo-cline.SidebarProvider'"
}

推荐的键组合

选择一个不与现有 VS Code 快捷方式冲突的键组合:

  • Alt+Enter - 输入时易于按下。
  • Ctrl+Space - 对于使用自动完成的人来说很熟悉。
  • Ctrl+Enter - 对于命令执行来说很直观。
  • Alt+A - “Accept”(接受)的首字母缩写。

实际用例

快速开发工作流程

  • 文本提交: 无需将手从键盘上移开即可向 Roo 发送消息。
  • 操作确认: 接受保存文件、运行命令或应用差异等操作。
  • 多步流程: 快速通过需要确认或输入的步骤。
  • 连续任务: 将多个任务链接在一起,中断最小。

以键盘为中心的开发

  • Vim/Neovim 工作流程: 如果你来自 Vim/Neovim 背景,请保持你以键盘为中心的工作流程。
  • IDE 集成: 与其他 VS Code 键盘快捷方式一起使用,以获得无缝体验。
  • 代码审查: 在使用 Roo 审查代码时快速接受建议。
  • 文档编写: 在生成文档时提交文本并接受格式建议。

可访问性用例

  • 手部活动受限: 对于使用鼠标有困难的用户至关重要。
  • 预防重复性劳损: 减少鼠标使用以预防或管理重复性劳损。
  • 屏幕阅读器集成: 与屏幕阅读器配合良好,适用于视力受损用户。
  • 语音控制兼容性: 使用语音控制软件时可以通过语音命令触发。

可访问性优势

roo.acceptInput 命令的设计考虑了可访问性:

  • 减少鼠标依赖: 无需伸手去拿鼠标即可完成整个工作流程。
  • 减少身体劳损: 帮助因使用鼠标而感到不适或疼痛的用户。
  • 替代输入方法: 支持依赖键盘导航的行动不便用户。
  • 工作流程优化: 对于来自像 Vim/Neovim 这样的以键盘为中心环境的用户来说尤其有价值。

以键盘为中心的工作流程

这里有一些完整的工作流程示例,展示了如何有效地将键盘快捷方式与 Roo 结合使用:

开发工作流程示例

  1. 打开 VS Code 并导航到你的项目。
  2. 通过侧边栏打开 Roo。
  3. 输入你的请求:“Create a REST API endpoint for user registration”。
  4. 当 Roo 询问框架偏好时,使用你的 roo.acceptInput 快捷方式选择第一个建议。
  5. 继续使用快捷方式接受代码生成建议。
  6. 当 Roo 提议保存文件时,再次使用快捷方式确认。
  7. 使用 VS Code 的内置快捷方式在创建的文件中导航。

代码审查工作流程

  1. 选择你要审查的代码并使用 VS Code 的“复制”命令。
  2. 要求 Roo 审查它:“Review this code for security issues”。
  3. 当 Roo 询问有关代码上下文的澄清问题时,使用你的快捷方式接受建议。
  4. 当 Roo 提供改进建议时,再次使用快捷方式接受实现建议。

故障排除

问题解决方案
快捷方式不起作用确保 Roo 被聚焦(先点击 Roo 面板)
选择了错误的建议该命令始终选择主要(第一个)按钮;如果你需要不同的选项,请使用鼠标
与现有快捷方式冲突在 VS Code 键盘设置中尝试不同的键组合
使用时没有视觉反馈这是正常的 - 该命令静默激活功能,没有视觉确认
快捷方式工作不稳定确保在你的 keybindings.json 中正确配置了 when 子句(要么是 rooViewFocused,要么是特定于 webview 的条件)

技术实现

roo.acceptInput 命令的实现方式如下:

  • 在命令面板中注册为 roo.acceptInput,显示标题为“Roo: Accept Input/Suggestion”。
  • 当触发时,它会向活动的 Roo webview 发送一个“acceptInput”消息。
  • webview 根据当前的 UI 状态确定适当的操作:
    • 如果操作按钮可见且启用,则点击主要操作按钮。
    • 如果文本区域启用并包含文本/图像,则发送消息。
  • 没有默认键绑定 - 用户分配他们喜欢的快捷方式。

局限性

  • 仅当 Roo 界面处于活动状态时才有效。
  • 如果当前没有可用的输入或建议,则无效。
  • 当显示多个选项时,优先选择主要(第一个)按钮。

命令行式提示历史导航

使用箭头键像终端一样导航你的提示历史记录。此功能使你可以轻松地重用和优化以前的提示,无论是来自你当前的对话还是过去的任务。

主要功能

  • 上/下箭头: 循环浏览以前的提示。
  • 上下文感知: 在对话和任务历史之间切换。
  • 保留输入: 记住你正在输入的内容。

为什么这很重要

之前: 重用提示意味着向上滚动、复制和粘贴。

  • 繁琐且缓慢。
  • 容易迷失方向。
  • 中断你的工作流程。

有了提示历史导航后: 无需离开键盘即可快速访问过去的提示。

工作原理

导航设计得直观,并适应你当前的上下文。

在活跃对话中

  • 上箭头: 显示你发送的最后一个提示。继续按以进一步返回对话。
  • 下箭头: 向前移动通过对话历史,最终返回到你正在输入的文本。

开始新聊天

  • 上箭头: 显示当前工作区中任务历史中最近的提示。
  • 下箭头: 向前移动通过你的任务历史。

边缘情况

  • 如果你在导航时开始输入,历史记录将被解除,并保留你的新文本。
  • 导航仅在你的光标位于输入框的第一行或最后一行时才有效,以避免干扰多行编辑。

配置

此功能默认启用。没有设置可以配置。

优点

  • 更快的工作流程: 无需使用鼠标即可重用提示。
  • 更好的上下文: 轻松访问和构建在以前的交互之上。
  • 更少的中断: 保持专注于手头的任务。

常见问题

“为什么当我按上箭头时什么都没发生?”

  • 你可能在多行提示的中间。光标必须在第一行。
  • 当前上下文可能没有可用的历史记录。

“对话历史和任务历史有什么区别?”

  • 对话历史包括你当前、活跃聊天会话中的提示。
  • 任务历史包括你当前工作区中所有以前任务的初始提示。