--- title: "编辑器基础" description: "多光标与选区、行编辑、剪贴板历史、代码折叠、格式化、编辑器标签页和拆分编辑器。" --- 编辑器的行为和默认快捷键沿用 IntelliJ IDEA。下文的快捷键在 macOS 上是 **macOS** 键位映射的默认值,在 Windows 和 Linux 上是 **Windows** 键位映射的默认值;任何一个都可以在 **设置 › 按键映射** 中修改(见 [键位映射](/zh/guide/keymap))。所有命令也都能在 **查找操作**(`⇧⌘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`)立即重新加载当前文件。 ## 相关页面 - [代码智能](/zh/guide/code-intelligence):补全、导航和文档。 - [Live Templates 与宏](/zh/guide/templates) - [Vim 模式](/zh/guide/vim)