# 底部面板：大纲与 AI

底部面板一共**五页**，左边那一个字写着**当前是哪一页**：

| 页 | 装什么 |
|---|---|
| **问题** | 编译与检查出来的错误、警告，**点一条跳到那一行** |
| **输出** | 程序跑起来之后的输出；程序要键盘输入时，这里会出现发送框 |
| **查找** | 查找与替换（大小写 / 全词 / 正则三个开关，替换全部一步可撤销；范围可选**本文件 / 整个项目**） |
| **大纲** | 当前文件的函数与符号，**点一条跳过去** |
| **AI** | 针对**这个文件**提问，或者让它改代码 |

最右边两颗：**⋮** 是页面菜单，**✕** 是关掉面板。
状态栏最右边那颗终端图标是**开 / 关面板**（关掉之后从这儿再叫回来）。

## 页签会自己让位

屏幕窄的时候（**尤其是横屏**）页签栏摆不下五颗图标 —— 它会把**摆不下的那几页收进右端的 `⋮`**，
**装得下时那颗 `⋮` 根本不出现**。面板宽度是你自己拖出来的，所以这个"收"是**按实际宽度算的**，
不是按横屏竖屏分的。

当前页的名字一直写在**左边**，所以就算图标一时认不出来，也不会不知道自己在哪一页。

## 查找：本文件，还是整个项目

**查找** 页最右边那颗图标是**范围**开关，点一下在两种之间切：

| 图标 | 范围 | 列出什么 |
|---|---|---|
| 📄 | **本文件**（默认） | 当前文件里的命中；正文里会把它们**高亮**出来，点清单里一条就跳过去 |
| 📁 | **整个项目** | **工作区里所有文件**的命中，每条形如 `路径:行号　内容`，**点一条就打开那个文件并跳到那一行** |

「整个项目」这一档是给「**这个函数在哪儿被调用的**」这类问题用的 —— 不用一个文件一个文件开过去。

两点要知道：

- 它和 AI 搜索**用同一套规则**（同样跳过 `node_modules`、`.git` 这类目录），
  所以那边搜不到的东西，这边也搜不到。
- 「全词」与「大小写」这两个开关在**整个项目**这一档只是**近似**生效（实现上就是把它们拼进搜索式里）；
  「本文件」这一档是严格按这两个开关判的。

## 大纲：一眼看清函数签名

**大纲** 页把当前文件里的函数、类型这些符号列出来，每条都带着**参数表和返回类型**：

```
ƒ add(int a, int b) → int        L1
ƒ main(void) → int               L20
```

点一条就跳到那一行 —— 长文件里靠它来回翻，比手滑快得多。
文字带**语法高亮**，颜色跟正文里**是同一套**，所以扫一眼就能认出哪些是关键字。

它扫的是你**编辑器里当前的内容**（**没保存的改动也算**），刚写完的函数立刻就在里面。
它只在**你切到这一页时**重扫一次 —— 边打字边扫会在长文件上卡。

> ⚠ 太大的文件以**只读方式**打开时没有可分析的内容，这一页会直说，而不是给你一个空列表。

## AI：针对这个文件问答与改代码

**AI** 页是一个对话，它拿**整个文件**当上下文，可以**先问再改**：

- **询问** —— 纯问答。比如"这段 while 在干什么"、"这个函数在哪儿被调用"。
- **修改** —— 让它改代码。它先给出改好的**完整文件**，然后弹一个 **diff** 让你逐行看：
  点**应用**才真的写进去（**一步就能撤销**），点**取消**则一个字节都不动。

对话**按文件各存一份**：切到别的文件就是新的一段，切回来原来那段还在。

> ⚠ 每次都会把**整个文件**发出去 —— 文件特别大的时候要等久一点。
> 「询问」和「修改」是**两颗分开的按钮**：不会出现"我只想问问，它却弹了个 diff"。
> 正在跑的时候按钮会变成 **■ 停止**，随时可以中断。
