ClaudeCode 备忘清单

ClaudeCode 命令行开发工具快速参考备忘单。

CLI 参考

命令行

命令描述示例
claude启动交互式 REPLclaude
claude "query"使用初始提示启动 REPLclaude "explain this project"
claude -p "query"通过 SDK 查询,然后退出claude -p "explain this function"
cat file | claude -p "query"处理管道内容cat logs.txt | claude -p "explain"
claude -c继续最近的对话claude -c
claude -c -p "query"通过 SDK 继续claude -c -p "Check for type errors"
claude -r "<session-id>" "query"通过 ID 恢复会话claude -r "abc123" "Finish this PR"
claude update更新到最新版本claude update
claude mcp配置模型上下文协议 (MCP) 服务器请参阅 Claude Code MCP 文档

CLI 标志

使用这些命令行标志自定义 Claude Code 的行为:

标志描述示例
--add-dir添加额外的工作目录供 Claude 访问(验证每个路径是否作为目录存在)claude --add-dir ../apps ../lib
--allowedTools除了 settings.json 文件 之外,应该在不提示用户许可的情况下允许的工具列表"Bash(git log:*)" "Bash(git diff:*)" "Read"
--disallowedTools除了 settings.json 文件 之外,应该在不提示用户许可的情况下禁止的工具列表"Bash(git log:*)" "Bash(git diff:*)" "Edit"
--print, -p打印响应而不使用交互模式(有关编程使用详细信息,请参阅 SDK 文档claude -p "query"
--append-system-prompt附加到系统提示(仅与 --print 一起使用)claude --append-system-prompt "Custom instruction"
--output-format为打印模式指定输出格式(选项:textjsonstream-jsonclaude -p "query" --output-format json
--input-format为打印模式指定输入格式(选项:textstream-jsonclaude -p --output-format json --input-format stream-json
--verbose启用详细日志记录,显示完整的轮次输出(在打印和交互模式中都有助于调试)claude --verbose
--max-turns在非交互模式下限制代理轮次数量claude -p --max-turns 3 "query"
--model使用最新模型的别名(sonnetopus)或模型的全名为当前会话设置模型claude --model claude-sonnet-4-20250514
--permission-mode在指定的权限模式下开始claude --permission-mode plan
--permission-prompt-tool指定一个 MCP 工具来处理非交互模式下的权限提示claude -p --permission-prompt-tool mcp_auth_tool "query"
--resume通过 ID 恢复特定会话,或在交互模式下选择claude --resume abc123 "query"
--continue在当前目录中加载最近的对话claude --continue
--dangerously-skip-permissions跳过权限提示(谨慎使用)claude --dangerously-skip-permissions

内置斜杠命令

命令用途
/add-dir添加额外的工作目录
/agents管理用于专门任务的自定义AI子代理
/bug报告错误(将对话发送给Anthropic)
/clear清除对话历史
/compact [instructions]压缩对话,可选择性地提供重点指令
/config查看/修改配置
/cost显示令牌使用统计(请参阅成本跟踪指南了解订阅特定详情)
/doctor检查您的Claude Code安装的健康状况
/help获取使用帮助
/init使用CLAUDE.md指南初始化项目
/login切换Anthropic账户
/logout从您的Anthropic账户登出
/mcp管理MCP服务器连接和OAuth身份验证
/memory编辑CLAUDE.md内存文件
/model选择或更改AI模型
/permissions查看或更新权限
/pr_comments查看拉取请求评论
/review请求代码审查
/status查看账户和系统状态
/terminal-setup安装Shift+Enter键绑定用于换行(仅限iTerm2和VSCode)
/vim进入vim模式以在插入和命令模式之间切换

键盘快捷键

通用控制

快捷键描述上下文
Ctrl+C取消当前输入或生成标准中断
Ctrl+D退出 Claude Code 会话EOF 信号
Ctrl+L清除终端屏幕保留对话历史
上/下箭头导航命令历史回调之前的输入
Esc + Esc编辑上一条消息双击 Esc 键修改
Shift+Tab切换权限模式在自动接受模式、计划模式和正常模式之间切换

多行输入

方法快捷键上下文
快速转义\ + Enter在所有终端中有效
macOS 默认Option+EntermacOS 上的默认设置
终端设置Shift+Enter/terminal-setup 之后
控制序列Ctrl+J多行换行符
粘贴模式直接粘贴用于代码块、日志

快速命令

快捷键描述注释
开头的 #内存快捷键 - 添加到 CLAUDE.md提示文件选择
开头的 /斜杠命令参见斜杠命令
开头的 !Bash 模式直接运行命令并将执行输出添加到会话中

Vim 编辑器模式

模式切换

命令操作从模式
Esc进入 NORMAL 模式INSERT
i在光标前插入NORMAL
I在行首插入NORMAL
a在光标后插入NORMAL
A在行尾插入NORMAL
o在下方打开新行NORMAL
O在上方打开新行NORMAL

导航(NORMAL 模式)

命令操作
h/j/k/l向左/下/上/右移动
w下一个单词
e单词末尾
b上一个单词
0行首
$行尾
^第一个非空白字符
gg输入开头
G输入末尾

编辑(NORMAL 模式)

命令操作
x删除字符
dd删除行
D删除到行尾
dw/de/db删除单词/到末尾/向后
cc更改行
C更改到行尾
cw/ce/cb更改单词/到末尾/向后
.重复上次更改

Hooks 参考

配置

  • ~/.claude/settings.json 用户设置
  • .claude/settings.json 项目设置
  • .claude/settings.local.json 本地项目设置(不提交)
  • 企业管理策略设置

结构

{
    "hooks": {
        "EventName": [
            {
                "matcher": "ToolPattern",
                "hooks": [
                    { "type": "command", "command": "your-command-here" }
                ]
            }
        ]
    }
}

matcher 匹配工具名称的模式,区分大小写(仅适用于 PreToolUsePostToolUse

  • 简单字符串精确匹配:Write 仅匹配 Write 工具
  • 支持正则表达式:Edit|WriteNotebook.*
  • 使用 * 匹配所有工具。您也可以使用空字符串("")或留空 matcher

hooks 当模式匹配时要执行的命令数组

  • type:目前仅支持 "command"
  • command:要执行的 bash 命令(可以使用 $CLAUDE_PROJECT_DIR 环境变量)
  • timeout:(可选)命令应该运行多长时间(以秒为单位),在取消该特定命令之前。

项目特定的 Hook 脚本

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Write|Edit",
        "hooks": [
{
    "type": "command",
    "command": "$CLAUDE_PROJECT_DIR/.claude/hooks/check-style.sh"
}
        ]
      }
    ]
  }
}

可通过环境变量 CLAUDE_PROJECT_DIR 引用项目中的脚本,确保无论 Claude 当前目录如何都能正常使用(仅在生成 hook 命令时可用)

Hook 事件

PreToolUse

常见匹配器

  • Task - 子代理任务(参见子代理文档
  • Bash - Shell 命令
  • Glob - 文件模式匹配
  • Grep - 内容搜索
  • Read - 文件读取
  • EditMultiEdit - 文件编辑
  • Write - 文件写入
  • WebFetchWebSearch - Web 操作

在 Claude 创建工具参数之后、处理工具调用之前运行。

其它 Hook

Hook描述
PostToolUse在工具成功完成后立即运行。
UserPromptSubmit当用户提交提示时、Claude 处理之前运行。这允许您根据提示/对话添加额外的上下文、验证提示或阻止某些类型的提示。
Stop当主 Claude Code 代理完成响应时运行。如果停止是由于用户中断而发生的,则不会运行。
SubagentStop当 Claude Code 子代理(Task 工具调用)完成响应时运行。

Notification

当 Claude Code 发送通知时运行。通知在以下情况下发送:

Hook描述
Claude 需要您的权限来使用工具。示例:“Claude needs your permission to use Bash”
提示输入已空闲至少 60 秒。“Claude is waiting for your input”

​PreCompact

在 Claude Code 即将运行压缩操作之前运行。

匹配器

Hook描述
manual/compact 调用
auto从自动压缩调用(由于上下文窗口已满)

SessionStart

当 Claude Code 启动新会话或恢复现有会话时运行(目前确实会在底层启动新会话)

匹配器

  • startup - 从启动调用
  • resume - 从 --resume--continue/resume 调用
  • clear - 从 /clear 调用
  • compact - 从自动或手动压缩调用。

对于加载开发上下文(如现有问题或代码库的最近更改)很有用。

SessionEnd

hook 输入中的 reason 字段将是以下之一

  • clear - 使用 /clear 命令清除会话
  • logout - 用户注销
  • prompt_input_exit - 用户在提示输入可见时退出
  • other - 其他退出原因

当 Claude Code 会话结束时运行。对于清理任务、记录会话统计信息或保存会话状态很有用。

Hook 输入

示例

Hooks 通过 stdin 接收包含会话信息和事件特定数据的 JSON 数据:

{
  // 通用字段
  session_id: string
  // 对话 JSON 的路径
  transcript_path: string  
  // 调用 hook 时的当前工作目录
  cwd: string              

  // 事件特定字段
  hook_event_name: string
  ...
}

PreToolUse 输入

tool_input 的确切模式取决于工具。

{
  "session_id": "abc123",
  "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",
  "cwd": "/Users/...",
  "hook_event_name": "PreToolUse",
  "tool_name": "Write",
  "tool_input": {
    "file_path": "/path/to/file.txt",
    "content": "file content"
  }
}

PostToolUse 输入

tool_inputtool_response 的确切模式取决于工具。

{
  "session_id": "abc123",
  "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",
  "cwd": "/Users/...",
  "hook_event_name": "PostToolUse",
  "tool_name": "Write",
  "tool_input": {
    "file_path": "/path/to/file.txt",
    "content": "file content"
  },
  "tool_response": {
    "filePath": "/path/to/file.txt",
    "success": true
  }
}

Notification 输入

{
  "session_id": "abc123",
  "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",
  "cwd": "/Users/...",
  "hook_event_name": "Notification",
  "message": "Task completed successfully"
}

UserPromptSubmit 输入

{
  "session_id": "abc123",
  "transcript_path": "/Users/.../.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",
  "cwd": "/Users/...",
  "hook_event_name": "UserPromptSubmit",
  "prompt": "Write a function to calculate the factorial of a number"
}

Stop 和 SubagentStop 输入

{
  "session_id": "abc123",
  "transcript_path": "~/.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",
  "hook_event_name": "Stop",
  "stop_hook_active": true
}

当 Claude Code 已经因为 stop hook 而继续时,stop_hook_activetrue。检查此值或处理记录以防止 Claude Code 无限运行。

PreCompact 输入

{
  "session_id": "abc123",
  "transcript_path": "~/.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",
  "hook_event_name": "PreCompact",
  "trigger": "manual",
  "custom_instructions": ""
}

对于 manualcustom_instructions 来自用户传递给 /compact 的内容。对于 autocustom_instructions 为空。

SessionStart 输入

{
  "session_id": "abc123",
  "transcript_path": "~/.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",
  "hook_event_name": "SessionStart",
  "source": "startup"
}

SessionEnd 输入

{
  "session_id": "abc123",
  "transcript_path": "~/.claude/projects/.../00893aaf-19fa-41d2-8238-13269b9b3ca0.jsonl",
  "cwd": "/Users/...",
  "hook_event_name": "SessionEnd",
  "reason": "exit"
}

另见