聊天命令

aider 支持多种聊天命令,这些命令以斜杠 / 开头。你可以输入 /help 查看可用命令列表。

文件操作命令

/add <file1> <file2> ...

将文件添加到聊天会话中。aider 将能够查看这些文件的内容并编辑它们。

/add main.py util.py

/drop <file1> <file2> ...

从聊天会话中移除文件。aider 将不再查看或编辑这些文件。

/drop old_file.py

/clear

从聊天会话中移除所有文件。

/clear

/ls [<dir>]

列出当前目录或指定目录中的文件。

/ls
/ls src/components

/show [<file>]

显示当前会话中某个文件的内容。如果不指定文件,则显示所有文件。

/show
/show main.py

/files

列出当前会话中的所有文件。

/files

模型控制命令

/model <model_name>

切换使用的 AI 模型。模型名称可以是 OpenAI 模型(如 gpt-4)或 Anthropic 模型(如 claude-2)。

/model gpt-4

/models

列出可用的模型。

/models

版本控制命令

/diff

显示所有已编辑文件的 git diff。

/diff

/commit [<message>]

提交所有已编辑的文件。如果未提供提交消息,aider 会生成一个。

/commit
/commit "修复了登录页面的bug"

系统命令

/run <command>

在 shell 中运行命令并显示输出。

/run ls -l
/run python test.py

/help

显示帮助信息。

/help

/exit

退出 aider。

/exit

其他命令

/voice

切换语音模式(如果已配置)。

/voice

/tokens

显示当前对话的 token 使用统计。

/tokens

/history

显示当前对话的历史记录。

/history

/system

显示当前的系统提示信息。

/system

/undo

撤销上一次的代码编辑。

/undo

聊天内命令

斜杠命令

Aider 支持在聊天中使用斜杠开头的命令。

命令 描述
/add 将文件添加到聊天中,以便 aider 可以编辑或详细查看它们
/architect 使用 2 个不同模型进入架构师/编辑器模式。如果未提供提示,则切换到架构师/编辑器模式。
/ask 在不编辑任何文件的情况下询问关于代码库的问题。如果未提供提示,则切换到询问模式。
/chat-mode 切换到新的聊天模式
/clear 清除聊天历史记录
/code 请求对代码进行更改。如果未提供提示,则切换到代码模式。
/commit 提交在聊天之外进行的编辑到仓库(提交消息可选)
/context 进入上下文模式查看周围代码上下文。如果未提供提示,则切换到上下文模式。
/copy 将最后一条助手消息复制到剪贴板
/copy-context 以 Markdown 格式复制当前聊天上下文,适合粘贴到网页界面
/diff 显示自上次消息以来的变更差异
/drop 从聊天会话中移除文件以释放上下文空间
/edit /editor 的别名:打开编辑器编写提示
/editor 打开编辑器编写提示
/editor-model 将编辑器模型切换到新的 LLM
/exit 退出应用程序
/git 运行 git 命令(输出不包含在聊天中)
/help 询问关于 aider 的问题
/lint 对聊天中的文件或所有未暂存文件进行 lint 和修复
/load 从文件加载并执行命令
/ls 列出所有已知文件并显示哪些包含在聊天会话中
/map 打印当前仓库地图
/map-refresh 强制刷新仓库地图
/model 将主模型切换到新的 LLM
/models 搜索可用模型列表
/multiline-mode 切换多行模式(交换 Enter 和 Meta+Enter 的行为)
/paste 从剪贴板粘贴图像/文本到聊天中。可为图像提供名称。
/quit 退出应用程序
/read-only 将文件添加为仅供参考,或将已添加的文件设为只读
/reasoning-effort 设置推理努力级别(值:数字或 low/medium/high,取决于模型)
/report 通过打开 GitHub Issue 报告问题
/reset 移除所有文件并清除聊天历史记录
/run 运行 shell 命令并可选地将输出添加到聊天中(别名:!)
/save 将命令保存到文件,可重建当前聊天会话的文件
/settings 打印当前设置
/test 运行 shell 命令并在非零退出码时将输出添加到聊天中
/think-tokens 设置思考令牌预算,例如:8096、8k、10.5k、0.5M 或 0 禁用。
/tokens 报告当前聊天上下文使用的令牌数量
/undo 撤销由 aider 完成的最后一次 git 提交
/voice 录制并转录语音输入
/weak-model 将弱模型切换到新的 LLM
/web 抓取网页,转换为 Markdown 并发送消息

您可以轻松地重新发送命令或消息。 使用上箭头 ⬆ 滚动浏览历史记录 或使用 CONTROL-R 搜索消息历史记录。

输入多行聊天消息

在聊天中发送多行长消息有以下几种方式:

  • 直接将多行消息粘贴到聊天框中
  • 在第一行单独输入 { 开始多行消息,在最后一行单独输入 } 结束
    • 或者以 {tag 开头(”tag”可以是任意字母/数字组合)并以 tag} 结尾。这在需要包含右大括号 } 时特别有用
  • 使用 Meta-ENTER 新建一行而不发送消息(某些环境下是 Esc+ENTER)
  • 使用 /paste 命令从剪贴板粘贴文本到聊天框
  • 使用 /editor 命令(如果终端支持,也可以按 Ctrl-X Ctrl-E)在编辑器中创建下一条聊天消息。详见编辑器配置文档
  • 使用多行模式(multiline-mode),该模式会交换 Meta-Enter 和 Enter 的功能,使 Enter 插入新行,而 Meta-Enter 提交命令。启用方式:
    • 在会话中使用 /multiline-mode 命令切换
    • 使用 --multiline 参数

带标签的示例:

{python
def hello():
    print("Hello}")  # 注意:包含右大括号
python}

用户常要求使用 SHIFT-ENTER 作为软换行。 遗憾的是,终端中没有可移植的方法来检测这个组合键。

使用 CONTROL-C 中断

当 aider 没有提供有用的响应时,随时可以使用 Control-C 安全地中断它。部分响应会保留在对话中,因此您可以在回复 LLM 时参考它,提供更多信息或方向。

快捷键绑定

交互式提示符基于 prompt-toolkit 构建,提供了 emacs 和 vi 风格的快捷键绑定。

Emacs 风格

  • 上箭头 : 在当前消息中向上移动一行。
  • 下箭头 : 在当前消息中向下移动一行。
  • Ctrl-上箭头 : 向后滚动查看之前发送的消息。
  • Ctrl-下箭头 : 向前滚动查看之前发送的消息。
  • Ctrl-A : 将光标移动到行首。
  • Ctrl-B : 将光标向后移动一个字符。
  • Ctrl-D : 删除光标下的字符。
  • Ctrl-E : 将光标移动到行尾。
  • Ctrl-F : 将光标向前移动一个字符。
  • Ctrl-K : 删除从光标到行尾的内容。
  • Ctrl-L : 清屏。
  • Ctrl-N : 向下移动到下一条历史记录。
  • Ctrl-P : 向上移动到上一条历史记录。
  • Ctrl-R : 在命令历史中进行反向搜索。
  • Ctrl-X Ctrl-E : 在外部编辑器中打开当前输入内容。
  • Ctrl-Y : 粘贴(恢复)之前剪切的内容。

Vi 模式

要使用 vi/vim 键位绑定,请使用 --vim 参数运行 aider。

  • 上箭头 : 在当前消息中向上移动一行
  • 下箭头 : 在当前消息中向下移动一行
  • Ctrl+上箭头 : 向后滚动浏览之前发送的消息
  • Ctrl+下箭头 : 向前滚动浏览之前发送的消息
  • Esc : 切换到命令模式
  • i : 切换到插入模式
  • a : 将光标向右移动一个字符并切换到插入模式
  • A : 将光标移动到行尾并切换到插入模式
  • I : 将光标移动到行首并切换到插入模式
  • h : 将光标向左移动一个字符
  • j : 将光标向下移动一行
  • k : 将光标向上移动一行
  • l : 将光标向右移动一个字符
  • w : 将光标向前移动一个单词
  • b : 将光标向后移动一个单词
  • 0 : 将光标移动到行首
  • $ : 将光标移动到行尾
  • x : 删除光标下的字符
  • dd : 删除当前行
  • u : 撤销最后一次更改
  • Ctrl+R : 重做最后一次撤销的更改

目录