
Claude Code 设置
了解如何通过全局和项目级设置、主题以及环境变量,配置 Claude Code 以满足你的需求。
Claude Code 提供多种设置选项,你可以通过在终端运行 claude config 或在交互 REPL 中使用 /config 命令进行配置。
配置层级
全新的 settings.json 文件是官方推荐的分层配置机制。
- 用户设置:保存在 ~/.claude/settings.json,对所有项目生效。
- 项目设置:
- 共享项目设置保存在项目目录下的 .claude/settings.json
- 本地项目设置保存在 .claude/settings.local.json,仅对当前用户生效。Claude Code 会自动配置 git 忽略本地设置文件。
- 企业部署:支持企业级策略设置,优先级最高。管理员可将策略文件部署至 macOS 的 /Library/Application Support/ClaudeCode/policies.json 或 Linux/Windows(WSL)的 /etc/claude-code/policies.json。
示例 settings.json:
{
"permissions": {
"allow": [
"Bash(npm run lint)",
"Bash(npm run test:*)",
"Read(~/.zshrc)"
],
"deny": [
"Bash(curl:*)"
]
},
"env": {
"CLAUDE_CODE_ENABLE_TELEMETRY": "1",
"OTEL_METRICS_EXPORTER": "otlp"
}
}
设置优先级
设置的生效顺序如下(后者覆盖前者):
- 用户设置
- 项目共享设置
- 本地项目设置
- 命令行参数
- 企业策略
配置选项
Claude Code 支持全局和项目级别的配置。
常用命令:
- 列出设置:claude config list
- 查看设置:claude config get <key>
- 更改设置:claude config set <key> <value>
- 向列表型设置添加:claude config add <key> <value>
- 从列表型设置移除:claude config remove <key> <value>
默认操作作用于当前项目配置。如需管理全局配置,加 –global 或 -g。
全局配置
设置全局参数(加 -g):
键 | 值 | 说明 |
---|---|---|
autoUpdaterStatus | disabled 或 enabled | 启用或禁用自动更新器(默认启用) |
env | JSON(如 {“FOO”: “bar”}) | 应用于每个会话的环境变量 |
preferredNotifChannel | iterm2, iterm2_with_bell, terminal_bell, notifications_disabled | 通知方式(默认 iterm2) |
theme | dark, light, light-daltonized, dark-daltonized | 主题模式 |
verbose | true 或 false | 是否显示完整 bash 和命令输出(默认 false) |
项目配置
项目级配置不用 -g:
键 | 值 | 说明 |
---|---|---|
allowedTools | 工具数组 | 哪些工具可无需手动批准运行 |
ignorePatterns | 文件/目录模式数组 | 工具运行时忽略哪些文件/目录 |
示例:
# 允许 npm test 命令自动运行
claude config add allowedTools "Bash(npm test)"
# 允许 npm test 及其子命令自动运行
claude config add allowedTools "Bash(npm test:*)"
# 忽略 node_modules 目录
claude config add ignorePatterns node_modules
claude config add ignorePatterns "node_modules/**"
权限管理
可用 /allowed-tools 管理 Claude Code 工具权限。该界面会列出所有权限规则及其来源 settings.json 文件。
- Allow 规则:允许无需手动批准地使用指定工具
- Deny 规则:阻止使用指定工具,优先级高于 allow
- 权限规则格式为:Tool(可选限定符)
示例规则:
规则 | 描述 |
---|---|
Bash(npm run build) | 匹配精确的 Bash 命令 npm run build |
Bash(npm run test:*) | 匹配以 npm run test 开头的 Bash 命令 |
Edit(~/.zshrc) | 匹配 ~/.zshrc 文件 |
Read(node_modules/**) | 匹配任意 node_modules 目录 |
mcp__puppeteer__puppeteer_navigate | 匹配 puppeteer MCP 的 puppeteer_navigate 工具 |
WebFetch(domain:example.com) | 允许抓取 example.com 的请求 |
注意,Bash 规则可以精确匹配或以 :* 结尾作为前缀匹配。Read/Edit 规则遵循 gitignore 规范。// 表绝对路径,~/ 表主目录路径。例如:Read(//tmp/build_cache) 或 Edit(~/.zshrc)。
自动更新器权限选项
如检测到无权限写入全局 npm 目录(自动更新所需),会出现提示。详细解决方案请见疑难解答指南。
推荐:新建用户可写的 npm prefix:
# 备份现有全局包
npm list -g --depth=0 > ~/npm-global-packages.txt
# 创建全局包目录
mkdir -p ~/.npm-global
# 配置 npm 前缀为新路径
npm config set prefix ~/.npm-global
# 添加到 PATH(根据你的 shell 文件修改)
echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
# 重新全局安装 Claude Code
npm install -g @anthropic-ai/claude-code
# 可选:重新安装你需要的全局包
# 参考 ~/npm-global-packages.txt
推荐理由:
- 避免修改系统目录权限
- 为全局 npm 包创建独立目录
- 更安全
禁用自动更新器:
claude config set -g autoUpdaterStatus disabled
优化终端设置
Claude Code 建议你的终端配置良好,体验最佳。
支持的 shell:
- Bash
- Zsh
- Fish
主题与外观
Claude 无法控制你的终端主题,该设置由终端应用决定。你可在 Claude Code 入门或随时通过 /config 命令调整主题以匹配你的终端。
换行输入
多行输入方式:
- 输入 \ 后回车快速换行
- Option+Enter(需正确配置)或 Shift+Enter(iTerm2/VSCode 推荐)
设置方法:
- Mac Terminal.app:设置 > Profiles > Keyboard > 勾选“Use Option as Meta Key”
- iTerm2/VSCode 终端:设置 > Profiles > Keys > General 下将 Option 设为“Esc+”
- 建议 iTerm2/VSCode 用户在 Claude Code 内运行 /terminal-setup 自动配置 Shift+Enter
通知设置
任务完成时获得提醒:
- 终端铃声提醒:
claude config set --global preferredNotifChannel terminal_bell
- macOS 用户请在系统设置 > 通知 > [你的终端应用] 启用通知权限。
- iTerm2 系统通知:
- 打开 iTerm2 偏好设置 > Profiles > Terminal
- 启用 “Silence bell” 和 “Send notification when idle”
- 设置你想要的通知延时
- 注意:该通知仅 iTerm2 支持,macOS 默认终端不支持
处理大输入内容
- 避免直接粘贴超长内容,Claude 可能处理困难
- 建议把内容写入文件,让 Claude 读取
- 注意 VS Code 终端对长文本粘贴有限制,易被截断
Vim 模式
Claude Code 支持 Vim 子集快捷键,可用 /vim 或 /config 启用。
支持内容包括:
- 模式切换:Esc(NORMAL),i/I, a/A, o/O(INSERT)
- 导航:h/j/k/l, w/e/b, 0/$/^, gg/G
- 编辑:x, dw/de/db/dd/D, cw/ce/cb/cc/C, .(重复)
环境变量
Claude Code 支持以下环境变量控制其行为:
变量名 | 用途 |
---|---|
DISABLE_AUTOUPDATER | 设为 1 禁用自动更新 |
DISABLE_BUG_COMMAND | 设为 1 禁用 /bug 命令 |
DISABLE_COST_WARNINGS | 设为 1 禁用花费警告 |
DISABLE_ERROR_REPORTING | 设为 1 退出 Sentry 错误上报 |
DISABLE_TELEMETRY | 设为 1 退出 Statsig 统计 |
HTTP_PROXY | 指定 HTTP 代理服务器 |
HTTPS_PROXY | 指定 HTTPS 代理服务器 |
MCP_TIMEOUT | MCP 服务器启动超时(毫秒) |
MCP_TOOL_TIMEOUT | MCP 工具执行超时(毫秒) |