# Lesson 3.2: 效率工作流：快捷键、编辑器与 tmux

## 本课目标

- 掌握 Claude Code 的 7 个常用键盘快捷键——每个都能省你几秒钟
- 了解编辑器与 Claude Code 的最佳搭配方式（Zed / VSCode / Cursor）
- 学会用 tmux 管理长时间运行的任务
- 理解 Git Worktree——比 /fork 更彻底的并行开发方式

> **互动版**：打开 [lesson-3.2-shortcuts.html](lesson-3.2-shortcuts.html)，用快捷键训练器练习和测试你的掌握程度。

## 核心内容

### 键盘快捷键速查

上一课你学了双击 ESC（回退编辑）和 /btw（侧问题）。但 Claude Code 还有更多快捷键，掌握它们能显著提升你的操作效率。

```
┌─────────────────────────────────────────────────────┐
│           Claude Code 键盘快捷键                      │
├──────────────┬──────────────────────────────────────┤
│  快捷键       │  效果                                │
├──────────────┼──────────────────────────────────────┤
│  Esc Esc     │  回到上一条输入重新编辑               │
│  Esc（单击）  │  打断 Claude 当前操作                │
│  Shift+Enter │  多行输入（不发送，换行继续写）       │
│  Tab         │  切换"思考过程"显示/隐藏              │
│  Ctrl+U      │  删除当前输入的整行（比反复退格快）   │
│  !           │  快速执行 bash 命令（如 !ls）         │
│  @           │  搜索并引用文件                        │
│  /           │  发起斜杠命令                          │
├──────────────┴──────────────────────────────────────┤
│  来自 Lesson 3:                                      │
│  /btw        │  侧问题，不污染上下文                 │
│  /rename     │  重命名会话                           │
└─────────────────────────────────────────────────────┘
```

#### 重点讲解几个最实用的

**Shift+Enter——多行输入**

当你要给 Claude 一段复杂的指令时，单行写不清楚。Shift+Enter 让你在发送前写多行：

```
你（按 Shift+Enter 换行，不发送）:
  请帮我做三件事：
  1. 读取 src/auth/login.ts
  2. 找到验证邮箱格式的函数
  3. 把正则表达式改成支持带 + 号的邮箱
（按 Enter 发送）
```

如果不用 Shift+Enter，你只能把这些挤在一行里，或者分三次发送（浪费上下文）。

**Tab——切换思考过程显示**

Claude 在处理复杂问题时会有内部"思考过程"（extended thinking）。按 Tab 可以展开/收起这个过程：

- **展开**：看到 Claude 的推理链条，理解它为什么做出某个决定
- **收起**：只看结果，界面更干净

#### Plan Mode vs Thinking Mode——广度 vs 深度

Claude Code 有两种"加强"模式，适用于不同场景：

| | Plan Mode（Shift+Tab 两次） | Thinking Mode（"Ultra think"） |
|--|----------------------------|-------------------------------|
| **侧重** | **广度**——搜索更多文件，制定详细计划 | **深度**——更长的推理链，更深入的分析 |
| **适用场景** | 多步骤任务、跨多文件的重构 | 复杂逻辑、棘手 Bug 调试 |
| **触发方式** | Shift+Tab 连按两次 | 在提示词中说"Ultra think"或 Option+T |
| **可组合** | 是——两个可以同时开启 | 是——复杂任务建议都开 |

```
Plan Mode 像侦探——先把所有线索都收集齐，再制定行动方案
Thinking Mode 像学者——对单个问题反复推敲，直到想通

复杂任务？两个都开——既全面收集又深度推理
```

> **注意**：两种模式都会消耗额外 token。简单任务不需要开启。

**!——快速 bash 命令**

不需要退出 Claude 就能执行终端命令：

```bash
# 在 Claude 对话中直接执行
!git status
!ls -la src/
!npm test
```

这比每次退出 Claude → 执行命令 → 重新启动 Claude 快得多。

**@——引用文件**

需要让 Claude 关注某个文件？用 @ 搜索并引用：

```bash
@src/auth     # 搜索并选择 auth 相关文件
@package.json # 直接引用
```

@ 引用的文件会被加载到上下文中，Claude 可以直接读取和操作。

### 编辑器集成

Claude Code 运行在终端里，但你通常还需要一个编辑器来查看代码。选对编辑器、配好工作方式，效率会翻倍。

#### 推荐工作方式：分屏

```
┌─────────────────────┬──────────────────────┐
│                     │                      │
│    编辑器            │    终端              │
│    （查看代码）      │    （Claude Code）   │
│                     │                      │
│  实时看到 Claude     │  给 Claude 指令      │
│  修改了哪些文件      │  看 Claude 的回复    │
│                     │                      │
└─────────────────────┴──────────────────────┘
```

**关键设置（任何编辑器都适用）**：

| 设置 | 为什么 |
|------|--------|
| 开启 auto-save | Claude 修改的文件能立即反映在编辑器里 |
| 开启 file watcher | 编辑器检测到外部文件变化时自动重新加载 |
| Git 集成 | 提交前在编辑器里 diff 审查 Claude 的改动 |

#### Zed 编辑器（速度最快）

[Zed](https://zed.dev) 是用 Rust 写的编辑器，启动极快、资源占用极低——当 Claude 在跑重型任务（比如 Opus 模型）时，你的编辑器不会抢 CPU。

**Zed + Claude Code 的优势**：

- **Agent Panel**：Zed 内置了 Claude 集成面板，可以实时跟踪 Claude 的文件操作
- **CMD+Shift+R**：快速打开命令面板，搜索自定义命令
- **跟随模式**：Claude 编辑某文件时，Zed 自动跳转到那个文件
- **Vim 模式**：完整 vim 键绑定（如果你喜欢的话）

#### VSCode / Cursor

VSCode 和 Cursor 也是很好的选择，生态更丰富。

**两种使用方式**：

```
方式 1：终端格式
  在 VSCode 的内置终端里运行 Claude Code
  → 编辑器和 Claude 在同一个窗口

方式 2：Claude Code 扩展
  安装 VSCode 扩展，Claude Code 变成编辑器面板
  → 更原生的集成 UI，但功能和终端版完全一致
```

**Cursor 用户**：Cursor 自带 AI 编辑能力，但 cc4pm 的代理、技能、Hook 系统只能通过 Claude Code 使用。两者可以互补——Cursor 做快速的单文件编辑，Claude Code 做跨文件的复杂工作流。

### Web 可视化交互层——Claude Code Viewer

如果你更喜欢在浏览器中操作，或者需要更直观地查看 Claude 的执行过程，可以使用社区提供的 Web 可视化层。

**Claude Code Viewer**（由 kimuson 开发）是一个基于 Claude Agent ADK 的本地 Web UI，它能让你在浏览器中与 Claude Code 交互。

#### 快速启动

在你的项目根目录下运行：

```bash
npx @kimuson/claude-code-viewer @latest --port 3400
```

#### 核心优势

- **直观的可视化**：比终端更清晰地展示文件修改、思考过程和执行状态。
- **操作便捷**：支持鼠标操作，适合不习惯纯命令行环境的用户。
- **基于 ADK**：基于官方 Claude Agent ADK 构建，兼容性好。
- **可扩展性**：开发者可以方便地基于此进行二次开发和功能扩展。

> **提示**：这与终端版 Claude Code 共享同一个会话逻辑，你可以随时在终端和 Web UI 之间切换（或同时开启以获得不同视角）。

### tmux——长时间任务不断线

#### 为什么需要 tmux

场景：你让 Claude 跑一个 20 分钟的 E2E 测试套件，但你需要去开会。

```
没有 tmux：
  关掉终端 → Claude 进程被杀 → 20 分钟白跑 → 回来重新开始

有 tmux：
  detach（离开会话）→ 去开会 → 回来 attach（恢复会话）→ 看结果
```

tmux 让终端会话在后台持续运行，不受终端窗口关闭的影响。

#### 基本用法

```bash
# 创建一个命名会话
tmux new -s dev

# 在 tmux 内正常使用 Claude Code
claude

# 需要离开时：按 Ctrl+B 然后按 D（detach）
# → 终端可以安全关闭，Claude 继续运行

# 回来时：重新附着到会话
tmux attach -t dev
# → 看到 Claude 的所有输出，继续工作
```

#### 常用命令

```
┌─────────────────────────────────────────────────────┐
│           tmux 常用操作                               │
├──────────────────────┬──────────────────────────────┤
│  命令/快捷键          │  效果                        │
├──────────────────────┼──────────────────────────────┤
│  tmux new -s NAME    │  创建命名会话                │
│  tmux attach -t NAME │  附着到已有会话              │
│  tmux ls             │  列出所有会话                │
│  Ctrl+B → D          │  detach（离开，不关闭）      │
│  Ctrl+B → [          │  滚动模式（查看历史输出）    │
│  exit                │  关闭当前 tmux 会话          │
└──────────────────────┴──────────────────────────────┘
```

> **和 Hooks 的关系**：cc4pm 内置了 `tmux-reminder` Hook——当你运行长时间命令（npm test、cargo build 等）但不在 tmux 内时，Hook 会提醒你"考虑使用 tmux"。详见 Lesson 8。

### Git Worktree——真正的并行开发

Lesson 3 讲了 `--continue --fork` 来分叉会话。但 fork 有一个限制：**两个分叉共享同一份代码文件**——如果分支 A 修改了 login.ts，分支 B 也在改同一个文件，就会冲突。

Git Worktree 解决了这个问题：它创建**完全独立的代码副本**，每个 Claude 实例操作自己的文件。

```
--fork（会话级分叉）：
  共享文件系统，只是对话上下文分叉
  ⚠️ 不能同时修改同一个文件

Git Worktree（文件级分叉）：
  每个 worktree 是独立的代码副本
  ✅ 可以同时修改同一个文件的不同版本
```

#### 基本用法

```bash
# 创建 worktree（基于当前分支创建新副本）
git worktree add ../feature-auth feature-auth

# 在新目录里启动独立的 Claude 实例
cd ../feature-auth
claude

# 同时在原目录继续另一个 Claude 实例
# → 两个 Claude 各改各的，互不干扰
```

#### 什么时候用 fork vs worktree

| 场景 | 用 --fork | 用 Git Worktree |
|------|----------|----------------|
| 探索不同实现方案（只讨论不改文件） | 适合 | 过重了 |
| 同时开发两个不相关的功能 | 不适合（文件冲突） | 适合 |
| 对比两种架构的代码实现 | 不适合（会互相覆盖） | 适合 |
| 一个跑测试，另一个继续开发 | 适合（测试只读） | 也适合 |

#### ⚠️ 依赖需要重新安装

Worktree 只复制源码文件，**不会复制 `node_modules`、`.venv` 等依赖目录**。进入新 worktree 后第一步是安装依赖：

```bash
cd ../feature-auth
npm install   # 或 pnpm install / yarn / bun install
# 依赖装好后再启动 Claude
claude
```

#### 清理 worktree

```bash
# 合并完成后，清理 worktree
git worktree remove ../feature-auth
```

#### Worktree 之后：Docker 级隔离

Worktree 解决了**代码文件**的隔离，但数据库、Redis、环境变量等**全局资源**仍然是共享的。如果你的多个功能分支需要不同的数据库状态或环境配置，考虑给每个 Claude 实例分配一个 Docker 容器——这是"小隔间"之上的"独立房间"。大多数场景下 Worktree 已经够用，Docker 是进阶选项。

### 语音输入——比打字更快的方式

如果你觉得在终端里打长指令太慢，可以试试语音转录工具：

- **superwhisper**（Mac）：在任何应用中用语音输入，自动转为文字
- **MacWhisper**：类似功能的替代选择

语音输入特别适合给 Claude 描述需求——即使转录有小错误，Claude 也能理解你的意图。对产品主理人来说，"说"比"打"效率高很多。

### 并行级联模式

当你同时运行多个 Claude 实例时（见 Git Worktree 部分），用"级联"模式组织它们：

```
终端布局（从左到右）：

[主编码]  [辅助任务1]  [辅助任务2]
  ↑ 最旧      ↑ 较新        ↑ 最新

规则：
• 新任务在右侧新标签页打开
• 从左到右扫描，旧的先完成
• 一次最多专注 3-4 个任务
• 用 /rename 命名每个会话
```

**主聊天用于代码变更，分叉/辅助终端用于提问和研究**——这是避免并行实例代码冲突的关键原则。

### 综合速查表

```
┌─────────────────────────────────────────────────────┐
│           效率工作流·速查表                             │
├─────────────────────────────────────────────────────┤
│                                                      │
│  快捷键                                              │
│  Shift+Enter     多行输入                            │
│  Tab             展开/收起思考过程                    │
│  Ctrl+U          清空当前输入行                      │
│  !               快速 bash 命令                      │
│  @               搜索引用文件                        │
│  /               斜杠命令                            │
│  Esc             打断当前操作                        │
│  Esc Esc         回退到上一条输入                    │
│                                                      │
│  编辑器                                              │
│  Zed             速度快、资源少、有 Agent Panel      │
│  VSCode/Cursor   生态丰富、扩展支持                  │
│  Viewer (Web)    npx @kimuson/claude-code-viewer     │
│  关键：auto-save + file watcher + git 集成           │
│                                                      │
│  会话持久化                                          │
│  tmux new -s dev    创建持久会话                     │
│  Ctrl+B → D         离开（不关闭）                   │
│  tmux attach -t dev 回来继续                         │
│                                                      │
│  并行开发                                            │
│  --fork             对话级分叉（轻量）               │
│  git worktree add   文件级分叉（重量）               │
│                                                      │
└─────────────────────────────────────────────────────┘
```

## 常见问题

**Q: 我不用 Zed，VSCode 够用吗？**

A: 完全够用。Zed 的优势是快——当你同时跑 Claude Opus 和编辑器时，Zed 几乎不占 CPU。但 VSCode 的插件生态更强大，如果你已经习惯了 VSCode 的工作流，没必要换。

**Q: tmux 必须装吗？**

A: 不是必须的。如果你的任务都在几分钟内完成，不需要 tmux。当你开始跑长时间的测试套件、构建任务，或者需要下班后让 Claude 继续工作时，tmux 才变得必要。macOS 安装：`brew install tmux`。

**Q: Git Worktree 会不会占很多磁盘空间？**

A: 不会太多。Worktree 共享 Git 对象库（.git），只是多了一份工作目录的文件副本。一个中等项目（100MB 源码）的 worktree 大约额外占 100MB。用完记得 `git worktree remove` 清理。

**Q: Shift+Enter 在我的终端不起作用？**

A: 某些终端模拟器需要额外配置才能正确识别 Shift+Enter。确认你使用的是 Claude Code 推荐的终端环境（macOS Terminal、iTerm2、Warp 等）。

## 相关概念

- **Agent Loop 11 Steps**（Lesson 1.1）— 快捷键在 Agent Loop 的不同阶段生效（如 Tab 切换思考过程）
- **Session Management**（Lesson 3）— tmux 和 Git Worktree 都是会话管理的扩展手段
- **Agent Teams**（Lesson 7.1）— tmux 是实现多终端 Agent Teams 的基础设施

## 下一步

请调用 `AskUserQuestion` 展示以下选项，让学习者点击选择；从每条中提炼 1-5 个词作为 label，其余写入 description，不要要求输入数字：

- 进入下一课：Lesson 4 - 快速上手：第一次实操
- 返回主菜单
- 退出学习

---
*阶段 1 | Lesson 3.2/26 | 上一课: Lesson 3.1 - Status Line | 下一课: Lesson 4 - 快速上手*
