教程Claude Code系列第 3 / 4 篇

把 Claude Code 的终端调顺手:换行、快捷键、提醒、全屏渲染和输出风格

Claude Code 默认就能用,但有几处天天碰到的小别扭:想换行却发出去了,跑完了没人提醒,屏幕闪,回答太啰嗦。本站逐项实测了对应的开关:两种不用配置的换行办法、自定义快捷键、全屏渲染、四种内置输出风格和自己写一种。要留意:快捷键写错了不报错,只记在调试日志里。

发布 · 约 12 分钟读完 · 经人工审核()· 本站的内容怎么来的

本站已实测,测试日期:2026-10-12。

本页目录(9 节)
  1. 一、换行
  2. 二、自己定快捷键
  3. 三、跑完了提醒我
  4. 四、屏幕闪、滚动乱跳:全屏渲染
  5. 五、回答太长或太短:输出风格
  6. 六、其余几样
  7. 通过中转站用,有什么不一样
  8. 这一趟花了多少
  9. 这次实测没有覆盖到的

这篇教程解决一个问题:Claude Code 不用配置就能用,但用上几天总会碰到几处小别扭。每一处都有一个开关,只是散在好几页文档里。

按你碰到的情况找:

你碰到的 看哪一节
想换行,一按回车就发出去了 一、换行
某个快捷键和别的软件冲突,或者想换个顺手的 二、自己定快捷键
让它跑一个长任务,跑完了没有任何提示 三、跑完了提醒我
屏幕闪,或者它干活的时候滚动位置乱跳 四、全屏渲染
回答太长,或者想让它每次都按固定的格式答 五、输出风格
实测环境
日期 2026-10-12
版本 Claude Code 2.1.296
系统 Ubuntu 24.04,tmux 3.4 里 110 列宽的终端
模型 Opus 5.5
连接方式 通过酷站AI 中转站,不是直连官方

测试是通过 tmux 发按键做的,所以只测了 tmux 能发出来的键。Shift+Enter、鼠标、桌面通知这几样没法这样测,下面会分别注明。

一、换行

回车是发送。要在输入框里换行而不发送,有两种办法在任何终端里都能用,不需要配置:

  • 按 Ctrl+J。
  • 先打一个反斜杠 \,再按回车。

两种本站都试了,结果一样:

──────────────────────────────────────────────
❯ 第一行
  第二行
──────────────────────────────────────────────

Shift+Enter 更顺手,但要看终端。文档的说法:

终端 Shift+Enter 能不能换行
Ghostty、Kitty、iTerm2、WezTerm、Warp、Apple 终端、Windows Terminal 能,不用配置
VS Code、Cursor、Zed、0.16 之前的 Alacritty 在 Claude Code 里运行一次 /terminal-setup
gnome-terminal、JetBrains 系列 IDE 的终端 不能,用上面两种办法

/terminal-setup 会往终端自己的配置文件里写一条按键绑定。文档提醒要在终端里直接运行,不要在 tmux 或 screen 里面运行。

在 tmux 里,即使外面的终端支持,Shift+Enter 默认也是发送。文档给的办法是在 ~/.tmux.conf 里加三行,然后 tmux source-file ~/.tmux.conf:

set -g allow-passthrough on
set -s extended-keys on
set -as terminal-features 'xterm*:extkeys'

后两行让 tmux 能分清 Shift+Enter 和普通回车。第一行让通知和进度能穿过 tmux 传到外面的终端,第三节会用到。本站的测试机上这两项都是关着的,没有改,所以 Shift+Enter 没有实测。

在 macOS 上,有些快捷键用到 Option 键(比如 Option+P 换模型)。多数终端默认不把 Option 当修饰键发出去,这些快捷键按了没反应。要在终端的设置里打开“把 Option 当作 Meta 键”。

二、自己定快捷键

快捷键写在 ~/.claude/keybindings.json 里。在会话里运行 /keybindings 会创建或打开这个文件。

格式是一个 bindings 数组,每一块指定一个“上下文”和一组“按键对应动作”:

{
  "bindings": [
    {
      "context": "Chat",
      "bindings": {
        "ctrl+n": "chat:newline"
      }
    }
  ]
}

这一段的意思:在输入框里(Chat),按 Ctrl+N 换行。

保存就生效,不用重启。 本站在会话开着的时候写入这个文件,前后各按了一次 Ctrl+N:

--- 加之前:
❯ 甲乙

--- 加之后:
❯ 甲
  乙

写法

  • 修饰键用 + 连接:ctrl、shift、alt(也可以写 opt、option、meta)、cmd。文档提醒 cmd 多数终端不会发出来,想到处都能用就选 ctrl 或 meta。
  • 连按用空格隔开:ctrl+k ctrl+s 表示先按 Ctrl+K,松开,再按 Ctrl+S。两次之间不能超过 3 秒。
  • 取消一个默认的快捷键,把它设成 null:"ctrl+s": null。
  • 字母不分大小写。要绑 Shift 加字母,写 shift+k。

常用的动作

输入框(Chat)里常改的几个,右边是默认的键:

动作 默认 做什么
chat:submit Enter 发送
chat:newline Ctrl+J 换行
chat:cycleMode Shift+Tab 切换权限模式
chat:modelPicker Meta+P 换模型
chat:thinkingToggle Meta+T 开关思考
chat:externalEditor Ctrl+G 用外部编辑器写这条消息
chat:stash Ctrl+S 把写了一半的消息先存起来
chat:undo Ctrl+_ 撤销

文档提到可以把发送和换行对调:让回车换行,另一个键发送,分别绑 chat:newline 和 chat:submit 就行。

上下文不止 Chat 一个。弹出权限确认时是 Confirmation,历史搜索是 HistorySearch,全局生效的是 Global,一共二十多个,完整的动作清单见官方文档。

哪些键别去动

键 原因
Ctrl+C、Ctrl+D 中断和退出,写死的,不能改
Ctrl+M、Ctrl+I、Ctrl+[ 终端里它们分别就是回车、Tab、Esc
Ctrl+B tmux 的前缀键,要按两次才能传进去
Ctrl+A GNU screen 的前缀键
Ctrl+Z 会把进程挂起

写错了不会报错

这是最容易踩的地方。本站故意写了一份有四处错误的文件:

{
  "bindings": [
    {
      "context": "Chat",
      "bindings": {
        "ctl+k": "chat:newline",
        "ctrl+y": "chat:nope",
        "ctrl+c": "chat:newline",
        "ctrl+n": "chat:newline"
      }
    },
    { "context": "Chatt", "bindings": { "ctrl+u": "chat:newline" } }
  ]
}

保存之后,界面上没有任何提示。四处错误都只记在调试日志里。用 claude --debug 启动,然后:

grep keybindings ~/.claude/debug/latest
[keybindings] Found 4 validation issue(s)
[WARN] "ctl" is not a modifier, so "ctl+k" in Chat applies to "k" instead — Did you mean "ctrl+k"?
[WARN] Unknown action "chat:nope" for "ctrl+y" in Chat — this binding is ignored — Valid "chat:" actions: …
[WARN] Unknown context "Chatt" — Valid contexts: Global, Chat, Autocomplete, …
[WARN] "ctrl+c" may not work: Cannot be rebound - used for interrupt/exit (hardcoded)
[keybindings] Reloaded: 230 bindings, 4 warnings

日志写得很清楚,连正确的写法都给了。四种错的后果不一样:

  • 修饰键拼错(ctl):认不出的部分被丢掉,绑定落到了剩下的那个键上。日志的原话是这条绑定改成对 k 生效。
  • 动作名写错:这条绑定被忽略,那个键原来的默认行为保留。
  • 上下文名写错:整块无效。
  • 绑了保留的键:给警告,不生效。

所以改完快捷键没反应时,先看调试日志,不要猜。

三、跑完了提醒我

(这一节没有实测。测试机是一台没有桌面的服务器,看不到通知。)

Claude 做完一个任务,或者停下来等你批准,而你看起来不在终端前,它会发一个通知事件。文档的说法:

  • 默认只有 Ghostty、Kitty、iTerm2 会弹桌面通知。 iTerm2 还要在设置里打开通知转发。
  • 其他终端,在设置里把通知渠道改成终端响铃:
{
  "preferredNotifChannel": "terminal_bell"
}
  • 想要自定义的声音或命令,用 Notification hook。hook 和内置的通知同时生效,不会互相替代。写法见 Hooks 实战。
  • 在 tmux 里,通知要穿过 tmux 才能到外面的终端,需要第一节那句 set -g allow-passthrough on。
  • 通过 SSH 连到远程机器,桌面通知也能传回你本机,Ghostty 和 Kitty 不用另外配置。

实测时看到一处相关的提示。在 tmux 里启动后,Claude Code 自己在底部打了一行:

tmux focus-events off · add 'set -g focus-events on' to ~/.tmux.conf and reattach for focus tracking

意思是 tmux 默认不把“窗口有没有焦点”告诉里面的程序。按提示加上那一行,Claude Code 才能跟踪你是不是正看着这个窗口。

四、屏幕闪、滚动乱跳:全屏渲染

如果 Claude 干活时屏幕一闪一闪,或者滚动位置突然跳回顶部,换成全屏渲染。文档说它在 VS Code 的内置终端、tmux、iTerm2 里改善最明显。

“全屏”说的是它像 vim 那样接管整个终端的绘制,和窗口是不是最大化没有关系。它还在研究预览阶段。

怎么开

  • 在会话里运行 /tui fullscreen。它会保存这个设置,然后带着当前对话重新启动,以后的会话也用全屏。/tui default 换回来。
  • 或者只在这一次启动时用环境变量:
CLAUDE_CODE_NO_FLICKER=1 claude

/tui 不带参数时只报告现在用的是哪一种。本站两种都看了:

❯ /tui
  ⎿  Current renderer: default. Usage: /tui <default|fullscreen>

用环境变量启动之后:

❯ /tui
  ⎿  Current renderer: fullscreen. Usage: /tui <default|fullscreen>

本站用的是环境变量这种,没有运行 /tui fullscreen,因为它会改设置文件。

新装的 Claude Code 有可能默认就是全屏。文档列了一张按情况判断的表,拿不准就运行一次 /tui 看。

开了之后哪里不一样

实测时最直观的一点:输入框固定在屏幕最下面,上面的内容滚动,输入框不动。

另一点是在终端的回滚记录里看到的。会话里已经有两轮对话,但 tmux 自己的回滚缓冲区里只有当前这一屏的十几行。对话不在终端的回滚里了,它在 Claude Code 自己管的那块屏幕上。

所以几个习惯要改,文档列的是:

以前 全屏渲染下
用终端的搜索(Cmd+F)或 tmux 的搜索找文字 按 Ctrl+O 进入记录模式,再按 / 搜索
用终端自带的拖选来复制 在 Claude Code 里拖选,松开鼠标自动复制
滚轮翻终端的回滚 滚轮或 PageUp 在 Claude Code 里翻

鼠标被接管是最常见的不适应。想临时用终端原生的选择,按住一个键再拖:多数终端是 Shift,iTerm2 是 Option,Apple 终端是 Fn。

在 tmux 里用

文档提了三点:

  • 滚轮要 tmux 开了鼠标模式才传得进去:set -g mouse on。不开的话用 PageUp 和 PageDown。
  • 3.6 及以前的 tmux 不支持同步输出,重绘时可能比直接在终端里跑闪得多一些。
  • 不要在 iTerm2 的 tmux 集成模式(tmux -CC)里开全屏渲染,鼠标和屏幕状态会出问题。

鼠标操作本站没有实测。

五、回答太长或太短:输出风格

输出风格是一组加在每次请求里的指令,管 Claude 用什么口气、多长、什么格式回答。换一种风格,整个会话都跟着变,不用每句话都交代一遍。

内置的除了默认还有四种:

风格 改变了什么 什么时候用
Proactive 拿到任务直接动手,常规的决定自己拿主意,不停下来问 想让它一路做下去,错了你再纠正
Concise 第一句就说结果,去掉铺垫、过程叙述和结尾的总结 觉得默认的回答太长
Explanatory 照常干活,另外加几段 Insight,解释为什么这么做 在熟悉一个陌生的代码库
Learning 加 Insight,并且把有设计取舍的那几行留给你自己写 想边做边练手

Proactive 不改变权限模式。哪些操作要你批准,还是权限模式说了算。

实测:同一个问题,五种设置

问题是“package.json 里 dependencies 和 devDependencies 有什么区别?”,每种设置各问一次:

设置 回答的长度 观察
默认 1759 字,36 行 分小标题,带代码块
Concise 1078 字,6 行 第一句就是结论,后面三条要点
Explanatory 2468 字,37 行 多了一个 Insight 块
explanatory(小写) 2028 字,33 行 没有 Insight 块,实际用的是默认风格
自定义的 next-step 1598 字,14 行 最后一行是“下一步:打开你项目的 package.json……”

Concise 的回答短了将近四成,行数从 36 降到 6。每种只问了一次,字数会有波动,但行数的差别很明显。

怎么换

  • 会话里运行 /output-style concise。不带参数会列出能选的风格。它把选择存进当前项目的 .claude/settings.local.json。
  • 或者 /config,选 Output style。
  • 或者直接在设置文件里写:
{
  "outputStyle": "Concise"
}

写在设置文件里要注意大小写。 上表第四行就是这个坑:写成小写的 explanatory,不报错,也不生效,悄悄用回了默认风格。内置的四个名字要写成 Proactive、Concise、Explanatory、Learning。/output-style 命令不区分大小写。

想对所有项目生效,写到 ~/.claude/settings.json。项目自己的设置优先。

自己写一种

自定义的输出风格是一个 Markdown 文件,放在项目的 .claude/output-styles/ 或者 ~/.claude/output-styles/ 下面。本站用的这个:

---
name: next-step
description: 回答用中文,最后固定给一条下一步
keep-coding-instructions: true
---

用中文回答。每次回答的最后另起一行,以“下一步:”开头,给出一条具体的、现在就能做的事。不要给出多条。

然后 "outputStyle": "next-step"。实测的回答最后一行确实是“下一步:……”。

keep-coding-instructions 要留意。自定义风格默认会去掉 Claude Code 那段关于怎么做软件工程的内置指令(怎么控制改动范围、怎么验证)。你只是想改说话的方式、还要它照常写代码,就把这一项设成 true。如果是让它扮演别的角色、不写代码,才不用加。

文档还提醒:风格文件是启动时读的,会话开着的时候新建或修改,要重启才生效。

它和 CLAUDE.md、hook 怎么分工

输出风格是指令,Claude 会照着做,但没有东西保证它一定做到。

你想要的 用什么
每次回答都用某种口气、长度、格式 输出风格
让它了解项目的约定、命令、结构 CLAUDE.md
某件事每次都必须发生,比如改完自动整理格式 hook

更完整的对比见该用哪个功能。

六、其余几样

这几项整理自文档,本站没有实测。

  • Vim 键位。 /config 里把 Editor mode 改成 vim,或者设置里写 "editorMode": "vim"。支持一部分普通模式和可视模式的操作。和真的 Vim 不同的一点:插入模式下回车仍然是发送,换行用 o、O 或 Ctrl+J。
  • 语音输入。 /voice 开启,按住空格说话。要求用 claude.ai 账号登录,录音会传到 Anthropic 的服务器转成文字;用 API key、中转站、云厂商接入时都不可用,SSH 连过去的会话也不行。
  • 读屏模式。 claude --ax-screen-reader,把界面换成一行一行的纯文字,给 VoiceOver、NVDA 这类读屏软件用。
  • 宽终端里限制行宽。 设置里的 maxProseWidth,让回答的正文在指定的列数换行,不铺满整个窗口。
  • 粘贴大段内容。 超过 800 个字符或三行的粘贴会被折叠成 [Pasted text #1 +120 lines] 这样的占位,发送时仍然是全文。特别长的内容(整个文件、长日志),文档建议写进文件让它去读,不要粘贴。

通过中转站用,有什么不一样

这篇里几乎所有东西都是本机的行为,和怎么接入没有关系。例外只有一个:语音输入要 claude.ai 账号,通过中转站用不了。

这一趟花了多少

约 1 美元,大头在输出风格那五次提问:每次都是一个新会话,各 0.14 到 0.15 美元,几乎全是新会话第一句写缓存的费用。换行、快捷键、/tui 这些操作本身不花钱。这是 Claude Code 按官方价格估算的数字,不是中转站实际扣的金额。

这次实测没有覆盖到的

  • Shift+Enter 和 /terminal-setup 没有测。 通过 tmux 发不出能和回车区分开的 Shift+Enter,测试机也不是那几种需要 /terminal-setup 的终端。
  • 通知没有测。 没有桌面环境。
  • /tui fullscreen 没有运行,只用环境变量开过一次。全屏渲染下的鼠标、搜索、复制都没有试。
  • 修饰键拼错之后,直接敲那个字母会怎样,没有测出确定的结果。 日志说绑定落到了 k 上;但测试是用 tmux 一次发一串字符,那串字符照常出现在了输入框里,和手敲不一定一样。
  • macOS 和 Windows 没有测。 Option 键、Windows 上退格删整词这些问题只看了文档。
  • Vim 键位、语音、读屏模式没有测。
  • 输出风格每种只问了一次,Proactive 和 Learning 没有试。

来源

通过 API 中转站使用这些模型?到 Veridrop 免费检测中转站给你的是不是它声称的模型,或者看看中转站排行榜前 100 名。

相关文章