Files
openidea/docs/zh/guide/editor.mdx
T

144 lines
11 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
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)