> ## Documentation Index
> Fetch the complete documentation index at: https://openidea.sh/llms.txt
> Use this file to discover all available pages before exploring further.

# 编辑器基础

> 多光标与选区、行编辑、剪贴板历史、代码折叠、格式化、编辑器标签页和拆分编辑器。

编辑器的行为和默认快捷键沿用 IntelliJ IDEA。下文的快捷键在 macOS 上是 **macOS** 键位映射的默认值，在 Windows 和 Linux 上是 **Windows** 键位映射的默认值；任何一个都可以在 **设置 › 按键映射** 中修改（见 [键位映射](https://openidea.sh/zh/guide/keymap.md)）。所有命令也都能在 **查找操作**（`⇧⌘A` / `Ctrl+Shift+A`）里找到。

## 光标与选区

| 操作 | macOS | Windows / Linux |
| - | - | - |
| **添加或移除插入点** | `⌥⇧`+单击 | `Alt+Shift`+单击 |
| **在上方添加光标** | `⌥⌥↑` | `Ctrl Ctrl+Up` |
| **在下方添加光标** | `⌥⌥↓` | `Ctrl Ctrl+Down` |
| **添加下一个匹配项到选区** | `⌃G` | `Alt+J` |
| **取消选择匹配项** | `⌃⇧G` | `Alt+Shift+J` |
| **选择所有匹配项** | `⌃⌘G` | `Ctrl+Alt+Shift+J` |
| **在所选行末尾添加光标** | `⌥⇧G` | `Alt+Shift+G` |
| **列选择模式** | `⇧⌘8` | `Alt+Shift+Insert` |
| **扩展选区** | `⌥↑` | `Ctrl+W` |
| **缩小选区** | `⌥↓` | `Ctrl+Shift+W` |

* **在上方 / 下方添加光标**：连按两下修饰键并按住不放，再按方向键。
* **添加下一个匹配项到选区** 第一次按下时选中光标处的单词，之后每按一次加入下一个匹配。找不到更多时会给出提示，再按一次就从文件开头继续找。
* 按住 `⌥` / `Alt` 拖动鼠标（macOS 和 Windows 上也可以用鼠标中键拖动）可以直接做矩形选区，不用切换模式。
* **扩展选区** 依据语法树逐级扩大到所在的单词、表达式、语句和代码块。

## 编辑行与代码

| 操作 | macOS | Windows / Linux |
| - | - | - |
| **复制行或选区** | `⌘D` | `Ctrl+D` |
| **删除行** | `⌘⌫` | `Ctrl+Y` |
| **上移行** / **下移行** | `⌥⇧↑` / `⌥⇧↓` | `Alt+Shift+Up` / `Alt+Shift+Down` |
| **上移语句** / **下移语句** | `⇧⌘↑` / `⇧⌘↓` | `Ctrl+Shift+Up` / `Ctrl+Shift+Down` |
| **向左移动元素** / **向右移动元素** | `⌥⇧⌘←` / `⌥⇧⌘→` | `Ctrl+Alt+Shift+Left` / `Ctrl+Alt+Shift+Right` |
| **使用行注释** | `⌘/` | `Ctrl+/` |
| **使用块注释** | `⌥⌘/` | `Ctrl+Shift+/` |
| **合并行** | `⌃⇧J` | `Ctrl+Shift+J` |
| **切换大小写** | `⇧⌘U` | `Ctrl+Shift+U` |
| **开始新行** | `⇧↵` | `Shift+Enter` |
| **在当前行前开始新行** | `⌥⌘↵` | `Ctrl+Alt+Enter` |
| **拆分行** | `⌘↵` | `Ctrl+Enter` |
| **补全当前语句** | `⇧⌘↵` | `Ctrl+Shift+Enter` |
| **解包/移除…** | `⇧⌘⌦` | `Ctrl+Shift+Delete` |
| **将文本光标移至匹配的大括号** | `⌃M` | `Ctrl+Shift+M` |
| **将光标移至代码块开头** / **末尾** | `⌥⌘[` / `⌥⌘]` | `Ctrl+[` / `Ctrl+]` |
| **切换插入/改写** | `Insert` | `Insert` |

**编辑 › 对行排序** 和 **编辑 › 反转行** 对选中的行重新排序，默认没有快捷键。

输入时括号和引号会自动成对，选中文本后输入引号或括号会把选区包起来。这些以及其他输入辅助（智能 Home、用 Tab 跳出右括号、回车智能缩进、文档注释骨架、退格键如何处理缩进、粘贴时重新格式化）都在 **设置 › 编辑器 › 常规 › 智能键** 中。

## 剪贴板

| 操作 | macOS | Windows / Linux |
| - | - | - |
| **从历史记录粘贴…** | `⇧⌘V` | `Ctrl+Shift+V` |
| **粘贴为纯文本** | `⌥⇧⌘V` | `Ctrl+Alt+Shift+V` |
| **复制引用** | `⌥⇧⌘C` | `Ctrl+Alt+Shift+C` |
| **复制路径/引用…** | `⇧⌘C` | `Ctrl+Shift+C` |

**从历史记录粘贴…** 按时间倒序列出当前窗口最近复制或剪切的 30 段文本。用 `↵` / `Enter` 粘贴选中项，`⌫` / `Delete` 删除选中的条目。历史只保存在内存中，关闭窗口后清空。

从编辑器复制时，剪贴板里还会带上富文本（保留语法高亮颜色）；不需要的话在 **设置 › 编辑器 › 常规 › 富文本复制** 中关闭。

## 代码折叠

| 操作 | macOS | Windows / Linux |
| - | - | - |
| **折叠** / **展开** | `⌘-` / `⌘=` | `Ctrl+-` / `Ctrl+=` |
| **全部折叠** / **全部展开** | `⇧⌘-` / `⇧⌘=` | `Ctrl+Shift+-` / `Ctrl+Shift+=` |
| **递归折叠** / **递归展开** | `⌥⌘-` / `⌥⌘=` | `Ctrl+Alt+-` / `Ctrl+Alt+=` |
| **展开到级别** 1–5 | `⌘*` 后按 `1`–`5` | `Ctrl+*` 后按 `1`–`5` |
| **全部展开到级别** 1–5 | `⇧⌘*` 后按 `1`–`5` | `Ctrl+Shift+*` 后按 `1`–`5` |
| **折叠代码块** | `⇧⌘.` | `Ctrl+Shift+.` |
| **折叠所选内容/移除区域** | `⌘.` | `Ctrl+.` |
| **自定义折叠…** | `⌥⌘.` | `Ctrl+Alt+.` |

所有折叠命令也在 **代码 › 折叠** 菜单中。可折叠区域来自语言的语法结构和 region 注释；**自定义折叠…** 用来跳转到文件中的自定义区域。打开文件时默认折叠哪些内容（文件头、导入、文档注释）在 **设置 › 编辑器 › 常规 › 代码折叠** 中设置。

## 格式化

| 操作 | macOS | Windows / Linux |
| - | - | - |
| **重新格式化代码** | `⌥⌘L` | `Ctrl+Alt+L` |
| **重新格式化文件…** | `⌥⇧⌘L` | `Ctrl+Alt+Shift+L` |
| **自动缩进行** | `⌃⌥I` | `Ctrl+Alt+I` |
| **优化导入** | `⌃⌥O` | `Ctrl+Alt+O` |

**重新格式化代码** 格式化选区，没有选区时格式化整个文件，整体算一步撤销。格式化由文件的语言服务器或该语言配置的格式化工具完成（例如 Python 用 Ruff，Web 语言用 Prettier 或 oxfmt；在查找操作里搜 **使用 … 重新格式化** 可以指定工具）。**重新格式化文件…** 还能选择范围并顺便优化导入。

缩进等代码风格选项在 **设置 › 编辑器 › 代码样式** 中，每种语言一个页面。项目里的 `.editorconfig` 也会生效。

想每次保存时自动格式化，在 **设置 › 工具 › 保存时操作** 中勾选 **重新格式化代码**（可同时勾选 **优化导入**）。保存时如何处理行尾空格和末尾换行，在 **设置 › 编辑器 › 常规** 的 **保存文件** 一节中设置。

## 标签页

| 操作 | macOS | Windows / Linux |
| - | - | - |
| **关闭标签页** | `⌘W` | `Ctrl+F4` |
| **选择下一个标签页** | `⌃→` | `Alt+Right` |
| **选择上一个标签页** | `⌃←` | `Alt+Left` |
| **切换器** | `⌃⇥` | `Ctrl+Tab` |

**窗口 › 编辑器标签页** 中还有 **固定标签页**、**关闭其他标签页**、**关闭所有标签页** 和 **重新打开已关闭的标签页**，默认都没有快捷键。在查找操作中运行 **将标签页移到新窗口**，可以把当前标签页拆到一个独立窗口。

标签页的位置、数量上限以及达到上限后的处理方式、预览标签页、排序方式，以及关闭标签页后激活哪一个，都在 **设置 › 编辑器 › 常规 › 编辑器标签页** 中设置。

## 拆分编辑器

| 操作 | macOS | Windows / Linux |
| - | - | - |
| **向右拆分** | `⌘\` | — |
| **转到下一个拆分器** | `⌥⇥` | `Alt+Tab` |
| **转到上一个拆分器** | `⌥⇧⇥` | `Alt+Shift+Tab` |

**窗口 › 编辑器标签页** 中还有 **向下拆分**、**取消拆分**、**全部取消拆分**、**移动到另一组**、**在相对组中打开** 和 **更改拆分方向**。也可以把标签页拖到编辑区的某一侧边缘来拆分。

## 显示选项

| 操作 | macOS | Windows / Linux |
| - | - | - |
| **增大字体** | `⌥⇧.` | `Alt+Shift+.` |
| **减小字体** | `⌥⇧,` | `Alt+Shift+,` |
| **滚动到中央** | `⌃L` | `Ctrl+M` |

* **视图 › 活动编辑器 › 软换行** 让当前编辑器的长行自动折行。想让某些文件类型默认软换行，在 **设置 › 编辑器 › 常规** 的 **软换行** 一节中设置。
* **视图 › 重置所有编辑器中的字体大小** 撤销字体缩放。用 `⌘` / `Ctrl` + 鼠标滚轮调整字号的功能默认关闭，可在 **设置 › 编辑器 › 常规** 的 **鼠标控制** 一节中打开。
* **视图 › 外观 › 进入无干扰模式** 隐藏工具窗口、标签页、状态栏和装订区域，并让正文居中。再执行一次即可退出。
* 行号、空白字符、缩进参考线、光标样式和意图灯泡在 **设置 › 编辑器 › 常规 › 外观** 中设置。痕迹导航和粘滞行（滚动时把所在的声明固定在顶部）在 **设置 › 编辑器 › 常规** 下各有单独的页面。

## 保存

和 IntelliJ IDEA 一样，这里没有逐个文件保存的概念：切换到其他应用或内置终端时文件会自动保存，**文件 › 全部保存**（`⌘S` / `Ctrl+S`）立即保存所有文件。**设置 › 外观与行为 › 系统设置** 的 **自动保存** 一节还可以设置在 IDE 空闲一段时间后保存。

在 IDE 之外修改的文件，会在切回 IDE 窗口时同步。**从磁盘重新加载**（`⌥⌘Y` / `Ctrl+Alt+Y`）立即重新加载当前文件。

## 相关页面

* [代码智能](https://openidea.sh/zh/guide/code-intelligence.md)：补全、导航和文档。
* [Live Templates 与宏](https://openidea.sh/zh/guide/templates.md)
* [Vim 模式](https://openidea.sh/zh/guide/vim.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.