{"id":19893135,"url":"https://github.com/atopx/helix_doc_zh","last_synced_at":"2025-10-24T19:07:20.464Z","repository":{"id":244560667,"uuid":"815603788","full_name":"atopx/helix_doc_zh","owner":"atopx","description":"Helix 中文文档","archived":false,"fork":false,"pushed_at":"2024-06-15T15:56:08.000Z","size":27,"stargazers_count":13,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-02T02:37:46.080Z","etag":null,"topics":["helix","helix-editor","hx","vim"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/atopx.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-06-15T15:46:23.000Z","updated_at":"2025-03-12T15:57:53.000Z","dependencies_parsed_at":null,"dependency_job_id":"7a4319fa-4156-488f-a44e-22aa17234155","html_url":"https://github.com/atopx/helix_doc_zh","commit_stats":null,"previous_names":["atopx/helix_doc_zh-"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/atopx/helix_doc_zh","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atopx%2Fhelix_doc_zh","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atopx%2Fhelix_doc_zh/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atopx%2Fhelix_doc_zh/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atopx%2Fhelix_doc_zh/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/atopx","download_url":"https://codeload.github.com/atopx/helix_doc_zh/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atopx%2Fhelix_doc_zh/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":275844429,"owners_count":25538991,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-18T02:00:09.552Z","response_time":77,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["helix","helix-editor","hx","vim"],"created_at":"2024-11-12T18:27:38.668Z","updated_at":"2025-09-18T22:33:14.195Z","avatar_url":"https://github.com/atopx.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Helix 编辑器教程\n\n## 简介\n\n欢迎使用 Helix 编辑器！\n\nHelix 不同于你可能习惯的其他编辑器，因为它是**模式化**的，这意味着它有不同的模式来编辑文本。\n\n你将主要使用的模式是**普通模式**和**插入模式**。在普通模式下，你按下的键不会实际输入文本，而是执行各种文本操作。这使得编辑更加高效。\n\n本教程将教你如何使用 Helix 的模式化编辑功能。开始前，请确保没有按下 `CapsLock` 键，并按住 `j` 键直到到达第一课。\n\n\n## 1.1 基本光标移动\n\n```plaintext\n          ↑\n          k       * h 在左\n      ← h   l →   * l 在右\n          j       * j 像一个向下的箭头\n          ↓\n```\n\n你可以使用 `h`, `j`, `k`, `l` 键来移动光标，如上图所示。光标/箭头键也可以工作，但使用 `hjkl` 键更快，因为它们离你将要使用的其他键更近。\n\n尝试移动以熟悉 `hjkl`。准备好后，按住 `j` 继续下一课。\n\n\n## 1.2 退出 Helix\n\n1. 输入 `:` 进入命令模式。光标会移动到屏幕底部。\n2. 输入 `q` 或 `quit` 然后按 `Enter` 退出 Helix。\n\n注意：如果有未保存的更改，`quit` 命令将失败。要强制退出并放弃这些更改，输入 `q!` 或 `quit!`。你将稍后学习如何保存文件。\n\n要退出命令模式而不输入命令，请按 `Escape`。\n\n\n## 1.3 删除字符\n\n输入 `d` 键删除光标下的字符。\n\n1. 将光标移动到下面标记为 `--\u003e` 的行。\n2. 将光标移动到每个多余的字符上，并输入 `d` 删除它。\n\n```plaintext\n--\u003e Thhiss senttencee haass exxtra charracterss.\n    This sentence has extra characters.\n```\n\n## 1.4 插入模式\n\n输入 `i` 键进入插入模式。\n\n1. 将光标移动到下面标记为 `--\u003e` 的行。\n2. 移动到行中缺少文本的地方，输入 `i` 进入插入模式。你输入的键现在会输入文本。\n3. 输入缺少的文本。\n4. 按 `Escape` 退出插入模式并返回普通模式。\n5. 重复直到该行与下面的行匹配。\n\n```plaintext\n--\u003e Th stce misg so.\n    This sentence is missing some text.\n```\n\n注意：状态栏会显示你当前的模式。注意当你输入 `i` 时，`NOR` 变为 `INS`。\n\n## 1.5 保存文件\n\n输入 `:w` 或 `:write` 保存文件。\n\n1. 使用 `:q!` 退出 Helix，如前所述，或打开一个新终端。\n2. 通过运行 `hx FILENAME` 在 Helix 中打开一个文件。\n3. 对文件进行一些编辑。\n4. 输入 `:` 进入命令模式。\n5. 输入 `w` 或 `write`，然后按 `Enter` 保存文件。\n\n你也可以输入 `wq` 或 `write-quit` 来保存并退出。\n\n注意：你可以在 `w` / `write` 命令后选择性地输入文件路径，以保存到该路径。\n注意：如果文件有未保存的更改，文件名旁边会出现一个加号 `[+]`。\n\n## 第1章总结\n\n- 使用 `h`, `j`, `k`, `l` 键移动光标。\n- 输入 `:` 进入命令模式。\n  - `q` / `quit` 和 `q!` / `quit!` 命令将退出 Helix。前者在有未保存的更改时失败。后者放弃这些更改。\n  - `w` / `write` 命令将保存文件。\n  - `wq` / `write-quit` 命令将同时保存并退出。\n- 输入 `d` 删除光标处的字符。\n- 输入 `i` 进入插入模式并输入文本。按 `Escape` 返回普通模式。\n\n\n## 2.1 更多插入命令\n\n如你所见，你可以输入 `i` 在光标当前位置进入插入模式。还有一些其他方法可以在不同位置进入插入模式。\n\n常见的插入命令包括：\n- `i` - 在选择之前插入。\n- `a` - 在选择之后插入。（`a` 表示“追加”）\n- `I` - 在行首插入。\n- `A` - 在行尾插入。\n\n1. 移动到下面标记为 `--\u003e` 的行的任何地方。\n2. 输入 `A`（Shift-a），光标将移动到行尾，你可以开始输入。\n3. 输入必要的文本，使其匹配下面的行。\n\n```plaintext\n--\u003e This sentence is miss\n    This sentence is missing some text.\n```\n\n## 2.2 打开新行\n\n输入 `o` 在光标下方添加一个新行并插入。\n输入 `O` 在光标上方添加一个新行并插入。\n\n1. 将光标移动到下面标记为 `--\u003e` 的行。\n2. 输入 `o` 打开一个新行并输入你的答案。\n\n```plaintext\n--\u003e What is the best editor?\n```\n\n## 第2章总结\n\n- 输入 `a` 在选择之后追加。\n- 输入 `I` 在行首的第一个非空字符处进入插入模式。\n- 输入 `A` 在行尾进入插入模式。\n- 使用 `o` 和 `O` 分别在光标下方和上方打开新行。\n\n\n## 3.1 移动和选择\n\n输入 `w` 向前选择到下一个单词。\n\n`d` 键实际上不会删除光标处的字符，它会删除所有选择的文本。你的光标就像一个单字符选择。\n\n1. 将光标移动到下面标记为 `--\u003e` 的行。\n2. 移动到需要删除的单词开头。\n3. 输入 `w` 选择到下一个单词的开头。\n4. 输入 `d` 删除选择。\n5. 重复删除行中的所有多余单词。\n\n```plaintext\n--\u003e This sentence pencil has vacuum extra words in the it.\n    This sentence has extra words in it.\n```\n\n## 3.2 更多移动\n\n如你所见，输入 `w` 将光标向前移动到下一个单词的开头，选择穿过的文本。这对于移动文本和选择要操作的文本很有用。\n\n常见的移动命令包括：\n- `w` - 向前移动到下一个单词的开头。\n- `e` - 向前移动到当前单词的结尾。\n- `b` - 向后移动到当前单词的开头。\n\n要选择光标下的单词，请结合使用 `e` 和 `b`。\n\n1. 将光标移动到下面标记为 `--\u003e` 的行。\n2. 移动到一个 `d` 字母。\n3. 输入 `e` 选择单词的一半。\n4. 输入 `b` 选择其余部分。\n\n```plaintext\n--\u003e The Middle Kingdom.\n```\n\n## 3.3 单词和单词\n\n`w`, `e`, `b` 的命令还有对应的版本 - `W`, `E`, `B` - 它们遍历 `WORDS` 而不是 `words`。`WORDS` 只由空白分隔，而 `words` 可以由其他字符以及空白分隔。\n\n1. 将光标移动到标记为 `--\u003e` 的行的开头。\n2. 重复输入 `w` 选择单个单词，直到到达行末。\n3. 注意 `one-of-a-kind` 需要7次按键来遍历。`\"modal\"` 需要3次按键。\n4. 将光标移回标记为 `--\u003e` 的行的开头。\n5. 重复输入 `W` 选择单个 `WORDS`。\n6. 注意 `one-of-a-kind` 和 `\"modal\"` 都被一次按键选中。\n\n```plaintext\n--\u003e Helix is a one-of-a-kind \"modal\" text editor\n```\n\n\n## 3.4 更改命令\n\n输入 `c` 更改当前选择。\n\n更改命令删除当前选择并进入插入模式，因此它是 `di` 的非常常见的简写。\n\n1. 将光标移动到下面标记为 `--\u003e` 的行。\n2. 移动到不正确的单词的开头并输入 `w` 选择它。\n3. 输入 `c` 删除单词并进入插入模式。\n4. 输入正确的单词。\n5. 重复直到该行匹配下面的行。\n\n```plaintext\n--\u003e This paper has heavy words behind it.\n    This sentence has incorrect words in it.\n```\n\n## 3.5 使用数字重复命令\n\n在移动命令前输入数字以重复多次。\n\n1. 将光标移动到下面标记为 `--\u003e` 的行。\n2. 输入 `2w` 向前移动2个单词。\n3. 输入 `3e` 向前移动到第三个单词的结尾。\n4. 输入 `2b` 向后移动2个单词。\n5. 尝试用不同的数字进行上述操作。\n\n```plaintext\n--\u003e This is just a line with words you can move around in.\n```\n\n\n## 3.6 选择模式\n\n输入 `v` 进入选择模式。\n再次输入 `v` 或按 `Escape` 返回普通模式。\n在选择模式下，每次移动都会扩展选择，而不是替换它。\n\n1. 将光标移动到下面标记为 `--\u003e` 的行。\n2. 移动到 `FOO` 的 `F` 并输入 `v2w` 选择两个单词。\n3. 输入 `d` 删除两个单词。注意 `d` 将你返回普通模式。\n4. 移动到 `BAZ` 的 `B` 并重复删除它们。\n\n```plaintext\n--\u003e Remove the FOO BAR distracting words BAZ BIZ from this line.\n```\n\n## 3.7 选择整行\n\n输入 `x` 选择整行。再次输入 `x` 选择下一行。\n\n1. 将光标移动到标记为 `--\u003e` 的第二行。\n2. 输入 `x` 选择行，并输入 `d` 删除它。\n3. 移动到第四行。\n4. 输入 `x` 两次或 `2x` 选择2行，并输入 `d` 删除。\n\n```plaintext\n--\u003e 1) Roses are red,\n--\u003e 2) Mud is fun,\n--\u003e 3) Violets are blue,\n--\u003e 4) I have a car,\n--\u003e 5) Clocks tell time,\n--\u003e 6) Sugar is sweet,\n--\u003e 7) And so are you.\n```\n\n注意：`X` 的作用类似于 `x`，但不会扩展到后续行。`X` 在空行上不起作用。\n\n\n## 3.8 收缩选择\n\n输入 `;` 收缩选择为单个光标。\n\n有时，你希望取消选择而不移动光标。这可以使用 `;` 键完成。\n\n1. 将光标移动到下面标记为 `--\u003e` 的行。\n2. 使用你学到的移动方法在行中移动，并尝试在选择文本后使用 `;` 取消选择。\n\n```plaintext\n--\u003e This is an error-free line with words to move around in.\n```\n\n注意：在选择模式下，效果相同。\n注意：另一个相关命令是 `Alt-;`，它翻转选择。\n\n\n## 第3章总结\n\n- 输入 `w` 向前选择到下一个单词。\n  - 输入 `e` 选择到当前单词的结尾。\n  - 输入 `b` 向后选择到当前单词的开头。\n  - 使用大写对应版本 `W`, `E`, `B` 遍历 `WORDS`。\n- 输入 `d` 删除整个选择。\n  - 输入 `c` 删除选择并进入插入模式。\n- 在移动命令前输入数字以重复多次。\n- 输入 `v` 进入选择模式，在该模式下所有移动扩展选择。\n- 输入 `x` 选择当前整行。再次输入 `x` 选择下一行。\n- 输入 `;` 收缩选择。\n\n\n## 4.1 撤销操作\n\n输入 `u` 撤销。输入 `U` 重做。\n\n1. 将光标移动到下面标记为 `--\u003e` 的行。\n2. 移动到第一个错误，并输入 `d` 删除它。\n3. 输入 `u` 撤销删除。\n4. 修复行中的所有错误。\n5. 多次输入 `u` 撤销修复。\n6. 多次输入 `U`（Shift-u）重做修复。\n\n```plaintext\n--\u003e Fiix the errors on thhis line and reeplace them witth undo.\n```\n\n\n## 4.2 复制和粘贴文本\n\n输入 `y` 剪切（复制）选择。\n\n输入 `p` 在光标后粘贴剪切的选择。\n\n输入 `P` 在光标前粘贴剪切的文本。\n\n1. 将光标移动到下面标记为 `--\u003e` 的行, 确保光标在 \"banana\" 的 `b` 上。\n2. 输入 `w` 选择 \"banana\" 并 `y` 剪切。\n3. 移动到 \"2\" 和 \"3\" 之间的空格并输入 `p` 粘贴。\n4. 在 \"3\" 和 \"4\" 之间重复。\n\n```plaintext\n--\u003e 1 banana 2 3 4\n    1 banana 2 banana 3 banana 4\n```\n\n注意：每当你删除或更改文本时，Helix 会复制更改的文本。使用 `Alt-d` / `Alt-c` 代替以避免此情况。\n\n注意：Helix 默认不共享系统剪贴板。输入 `Space + y` / `p` 剪切/粘贴到系统剪贴板。\n\n\n## 4.3 在文件中搜索\n\n输入 `/` 在文件中向前搜索，按 `Enter` 确认搜索。\n\n输入 `n` 跳到下一个搜索匹配项。\n\n输入 `N` 跳到上一个搜索匹配项。\n\n1. 输入 `/` 并输入一个常见单词，例如 'banana'。\n2. 按 `Enter` 确认搜索。\n3. 使用 `n` 和 `N` 循环浏览匹配项。\n\n搜索使用正则表达式，允许你定位更复杂的表达式，这将在选择命令的课程中学习。\n\n注意：要向后搜索，输入 `?`（Shift-/）。\n\n注意：与 Vim 不同，`?` 不改变搜索方向。\n\n`N` 总是向后，`n` 总是向前。\n\n\n## 第4章总结\n\n- 输入 `u` 撤销。输入 `U` 重做。\n- 输入 `y` 剪切（复制）文本并输入 `p` 粘贴。\n  - 使用 `Space + y` 和 `Space + p` 剪切/粘贴到系统剪贴板。\n- 输入 `/` 在文件中向前搜索，输入 `?` 向后搜索。\n  - 使用 `n` 和 `N` 循环浏览搜索匹配项。\n\n\n## 5.1 多光标\n\n输入 `C` 复制光标到下一个合适的行。\n\n1. 将光标移动到下面标记为 `--\u003e` 的第一行。将光标放在 `--\u003e` 后面。\n2. 输入 `C` 复制光标到下一个合适的行。注意它跳过了中间的行。你输入的键现在会影响两个光标。\n3. 使用插入模式更正这些行。两个光标将同时修复两行。\n4. 输入 `,` 删除第二个光标。\n\n```plaintext\n--\u003e Fix th two nes at same ime.\n--\u003e\n--\u003e Fix th two nes at same ime.\n    Fix these two lines at the same time.\n```\n\n注意：按 `Alt-C` 以上同样适用。\n\n\n## 5.2 选择命令\n\n输入 `s` 选择选择中的匹配项。\n\n1. 将光标移动到下面标记为 `--\u003e` 的行。\n2. 输入 `x` 选择行。\n3. 输入 `s`。将出现一个提示。\n4. 输入 'apples' 并按 `Enter`。行中的两个 `apples` 都会被选择。\n5. 现在你可以输入 `c` 更改 `apples` 为其他内容，例如 `oranges`。\n6. 按 `Escape` 退出插入模式。\n7. 输入 `,` 删除第二个光标。\n\n```plaintext\n--\u003e I like to eat apples since my favorite fruit is apples.\n    I like to eat oranges since my favorite fruit is oranges.\n```\n\n\n## 5.3 通过正则表达式选择\n\n像搜索一样，选择命令选择正则表达式，而不仅仅是精确匹配。\n\n1. 将光标移动到下面标记为 `--\u003e` 的行。\n2. 用 `x` 选择行，然后输入 `s`。\n3. 输入 '  +' 选择任意数量的连续空格 \u003e1，然后按 `Enter`。\n4. 输入 `c` 将匹配更改为单个空格。\n\n```plaintext\n--\u003e This  sentence has   some      extra spaces.\n    This sentence has some extra spaces.\n```\n\n注意：如果你想进行查找和替换，选择命令是方法。选择要替换的文本 - 输入 `%` 选择整个文件 - 然后执行上述步骤。\n\n\n## 5.4 对齐选择\n\n输入 `\u0026` 对齐选择的内容。\n\n1. 将光标移动到下面标记为 `--\u003e` 的第一行。将光标放在箭头后面的空白处。\n2. 输入 `C` 四次或 `4C`。\n3. 输入 `W` 选择数字和括号。\n4. 输入 `\u0026` 对齐单词。\n\n```plaintext\n--\u003e 97) lorem\n--\u003e 98) ipsum\n--\u003e 99) dolor\n--\u003e 100) sit\n--\u003e 101) amet\n```\n\n注意：`\u0026` 只关心选择的“头部”的对齐 - 移动的一端。另一端称为“锚点”。\n\n\n## 5.5 将选择拆分为行\n\n按 `Alt-s` 将选择拆分为行。\n\n1. 将光标移动到表格的第一行。\n2. 使用 `6x` 选择整个表格。\n3. 按 `Alt-s` 在每行拆分选择。\n4. 使用 `\u0026` 对齐表格。\n\n```plaintext\n| FRUIT   | AMOUNT |\n|---------|--------|\n| Apples  | 8      |\n| Bananas | 6      |\n| Oranges | 3      |\n| Donuts  | 4      |\n```\n\n\n## 第5章总结\n\n- 输入 `C` 复制光标到下一个合适的行，`Alt-C` 到上一个合适的行。\n- 输入 `s` 选择当前选择中的所有正则表达式模式实例。\n- 输入 `\u0026` 对齐选择。\n- 按 `Alt-s` 将选择拆分为行。\n\n\n## 6.1 选择到字符\n\n输入 `f\u003cch\u003e` 选择到并包括一个字符（查找）。\n\n输入 `t\u003cch\u003e` 选择到但不包括一个字符（直到）。\n\n输入大写 `F` / `T` 向后执行相同操作。\n\n1. 将光标移动到下面标记为 `--\u003e` 的行。将光标放在第一个破折号上。\n2. 输入 `f[` 选择到方括号。\n3. 输入 `d` 删除选择。\n4. 转到行末并用 `F]` 重复。\n5. 移动到第二行标记为 `--\u003e`，就在箭头之后。\n6. 使用 `t` 和 `T` 删除句子周围的破折号。\n\n```plaintext\n--\u003e -----[Free this sentence of its brackets!]----\u003e ------Free this sentence of its dashes!---```\n\n注意：与 Vim 不同，Helix 不将这些命令限制在当前行。它在文件中查找字符。\n```\n\n## 6.2 替换命令\n\n输入 `r\u003cch\u003e` 将所有选择的字符替换为 `\u003cch\u003e`。\n\n1. 移动到表格的第二行，将光标放在第一个 `=` 上。\n2. 输入 `t|`（Shift-\\）选择 `=` 分隔符。\n3. 输入 `r-` 将分隔符替换为破折号。\n\n```plaintext\n| Month | Days |\n|=======|------|\n| Jan   | 31   |\n| Feb   | 28   |\n| Mar   | 31   |\n| ...   | ...  |\n```\n\n\n## 6.3 重复\n\n输入 `.` 重复上一个插入命令。\n\n按 `Alt-.` 重复上一个 `f` / `t` 选择。\n\n1. 将光标移动到下面标记为 `--\u003e` 的行。\n2. 进行一次更改、插入或追加，并用 `.` 重复。\n3. 尝试使用 `Alt-.` 与 `f` 和 `t`，例如选择多个句子。\n\n```plaintext\n--\u003e This is some text for you to repeat things. You can repeat\n    insertions like changing words, or repeat selections like\n    f / t.\n```\n\n\n## 第6章总结\n\n- 输入 `f` / `F` 向前/向后扩展选择到并包括一个字符。\n- 输入 `t` / `T` 向前/向后扩展选择到但不包括一个字符。\n- 输入 `r` 替换选择的字符。\n- 输入 `.` 重复上一个插入。\n- 按 `Alt-.` 重复上一个 `f` / `t` 选择。\n\n\n## 7.1 用剪切文本替换\n\n输入 `R` 用之前剪切的文本替换选择。\n\n1. 将光标移动到下面标记为 `--\u003e` 的行。\n2. 输入 `w` 选择 \"watermelons\" 然后 `y` 剪切。\n3. 用 `w` 选择 \"oranges\"。\n4. 输入 `R` 用 \"watermelons\" 替换 \"oranges\"。\n\n```plaintext\n--\u003e I like watermelons because oranges are refreshing.\n    I like watermelons because watermelons are refreshing.\n```\n\n\n## 7.2 合并行\n\n输入 `J` 合并选择中的行。\n\n1. 将光标移动到下面标记为 `--\u003e` 的行。\n2. 输入 `x` 四次或 `4x` 选择所有四行。\n3. 输入 `J` 合并这些行。\n\n```plaintext\n--\u003e This sentence\nis spilling over\nonto other\nlines.\n\n    This sentence is spilling over onto other lines.\n```\n\n\n## 7.3 缩进行\n\n输入 `\u003e` 缩进行，输入 `\u003c` 取消缩进。\n\n1. 将光标移动到下面标记为 `--\u003e` 的行。\n2. 向下移动到第二行并输入 `\u003e` 缩进。\n3. 移动到第三行并输入 `\u003c` 取消缩进。\n\n```plaintext\n--\u003e These lines\n    are indented\n         very poorly.\n\n    These lines\n    are indented\n    much better.\n```\n\n\n## 7.4 增加和减少数字\n\n按 `Ctrl-a` 增加选择的数字。\n\n按 `Ctrl-x` 减少选择的数字。\n\n1. 将光标移动到下面标记为 `--\u003e` 的第三行。\n2. 按 `Ctrl-a` 增加标记为2的第二个点。\n3. 重复增加标记为3的点。\n4. 移动到最后一个点并按 `Ctrl-x` 减少6。\n\n```plaintext\n--\u003e 1) First point.\n--\u003e 2) Added point.\n--\u003e 2) Next point.\n--\u003e 3) Another point.\n--\u003e 6) Last point.\n```\n\n\n## 第7章总结\n\n- 输入 `R` 用剪切的文本替换选择。\n- 输入 `J` 合并选择中的行。\n- 输入 `\u003e` 和 `\u003c` 缩进/取消缩进行。\n- 按 `Ctrl-a` 增加选择的数字。\n- 按 `Ctrl-x` 减少选择的数字。\n\n\n## 8.1 寄存器\n\n寄存器是由字符标识的容器，用于存储诸如剪切文本之类的内容。寄存器还用于存储最近的搜索词以及宏，你将在下一部分学习。\n\n输入 `\" \u003cch\u003e` 选择寄存器 `\u003cch\u003e`。\n\n1. 将光标移动到下面标记为 `--\u003e` 的行。\n2. 输入 `w` 选择 \"watermelons\" 并剪切 `y`。\n3. 输入 `w` 选择 \"bananas\"。\n4. 输入 `\"b` 更改为寄存器 `b` 并剪切 `y`。\n5. 选择 \"mangoes\" 并输入 `R` 用 \"watermelons\" 替换。\n6. 选择 \"pineapples\" 然后输入 `\"b R` 用 \"bananas\" 替换。\n\n```plaintext\n--\u003e I like watermelons and bananas because my favorite fruits\n    are mangoes and pineapples.\n```\n\n\n## 8.2 宏\n\n宏是一种记录你想重复的一组操作的方法。你还可以将宏记录到特定寄存器（默认是 `@`）。\n\n输入 `Q` 开始录制宏 - 你应该在屏幕底部看到一个弹出窗口。\n\n再次输入 `Q` 停止录制。输入 `q` 从寄存器 `@`（默认）重复宏。\n\n1. 将光标移动到下面标记为 `--\u003e` 的第一行, 确保你的光标在箭头的 `\u003e` 上。\n2. 输入 `Q` 开始录制。\n3. 编辑该行使其看起来像下面的行。\n4. 退出插入并再次输入 `Q` 停止录制。\n5. 移动到下面的行并再次将光标放在 `\u003e` 上。\n6. 输入 `q` 重复宏。\n\n```plaintext\n--\u003e ... sentence doesn't have its first and last ... .\n--\u003e ... sentence doesn't have its first and last ... .\n    This sentence doesn't have its first and last word.\n```\n\n\n## 第8章总结\n\n- 输入 `\"` 选择不同的寄存器。\n- 输入 `Q` 开始并停止将宏记录到寄存器，默认是 `@`。\n- 输入 `q` 从 `@` 或选定的寄存器重放宏。\n\n\n## 9.1 搜索选择\n\n最近一次使用 `/` 搜索的内容存储在寄存器 `/` 中。\n\n`n` 和 `N` 都指向寄存器 `/`，这意味着我们可以设置该寄存器而无需输入搜索内容。\n\n输入 `*` 将选择复制到寄存器 `/`，将搜索词设置为选择内容。这会复制主要选择，你将在循环选择部分了解更多。\n\n1. 将光标移动到下面标记为 `--\u003e` 的行。\n2. 选择 \"horse\" 并输入 `e`，然后输入 `*`。\n3. 使用 `n` 和 `N` 跳转到 \"horse\" 的实例。\n\n```plaintext\n--\u003e A horse is a horse, of course, of course,\n--\u003e And no one can talk to a horse of course.\n```\n\n注意：`*` 类似于 `/y` 的简写，因为它实际上只是将选择复制到 `/` 寄存器。\n\n\n## 9.2 添加选择到下一个搜索匹配项\n\n在选择模式（`v`）中使用 `n` 和 `N` 的属性是它不会移动选择到下一个匹配项，而是在每个匹配项上添加一个新选择。\n\n1. 将光标移动到下面标记为 `--\u003e` 的行。\n2. 选择第一个 \"bat\" 并输入 `*` 设置为搜索。\n3. 输入 `v` 进入选择模式。\n4. 输入 `n` 选择其他 \"bat\"。\n5. 使用 `c` 或 `r` 将 \"bat\" 更改为 \"cat\"。\n\n```plaintext\n--\u003e Everybody wants to be a bat,\n--\u003e because a cat's the only bat\n--\u003e who knows where it's at.\n```\n\n\n## 9.3 使用跳转列表\n\nHelix 可以跟踪“大跳转”，如搜索或跳转到代码中的函数定义。它将这些存储在所谓的跳转列表中。\n\n按 `Ctrl-s` 手动保存当前位置到跳转列表。\n\n按 `Ctrl-i`（进入）和 `Ctrl-o`（退出）分别在跳转列表中前进和后退。\n\n1. 按 `Ctrl-s` 在某个位置。\n2. 在文件中移动到很远的地方。\n3. 按 `Ctrl-o`（只按一次！）返回到保存的位置。\n\n\n## 第9章总结\n\n- 输入 `*` 将搜索寄存器设置为主要选择。\n- 在选择模式中输入 `n` / `N` 在每个搜索匹配项上添加选择。\n- 按 `Ctrl-s` 保存位置到跳转列表。\n- 按 `Ctrl-i` 和 `Ctrl-o` 在跳转列表中前进和后退。\n\n\n## 10.1 循环和删除选择\n\n输入 `)` 和 `(` 分别在选择中前后循环主要选择。\n\n按 `Alt-,` 删除主要选择。\n\n1. 将光标移动到下面标记为 `--\u003e` 的行。\n2. 用 `xx` 或 `2x` 选择两行。\n3. 输入 `s` 选择，输入 \"would\" 并回车。\n4. 使用 `(` 和 `)` 循环主要选择并删除第二个 \"would\" 用 `Alt-,`。\n5. 输入 `c` 将剩余的 \"would\" 更改为 \"wood\"。\n\n```plaintext\n--\u003e How much would would a wouldchuck chuck\n--\u003e if a wouldchuck could chuck would?\n```\n\n\n## 10.2 循环选择内容\n\n按 `Alt-)` 和 `Alt-(` 分别在选择内容中前后循环。\n\n1. 将光标移动到下面标记为 `--\u003e` 的行。\n2. 用 `xx` 或 `2x` 选择两行。\n3. 输入 `s` 选择，输入 \"through|water|know\" 并回车。\n4. 使用 `Alt-(` 和 `Alt-)` 循环选择内容。\n\n```plaintext\n--\u003e Jumping through the water,\n--\u003e daring to know.\n```\n\n\n## 10.3 更改大小写\n\n输入 `~` 切换所选字母的大小写。\n\n输入 `` 将所选字母设为小写。\n\n按 `Alt-` 将所选字母设为大写。\n\n1. 将光标移动到标记为 `--\u003e` 的第一行。\n2. 选择每个错误的大写或小写字母并输入 `~` 更改它们。\n3. 移动到标记为 `--\u003e` 的第二行。\n4. 输入 `x` 选择整行。\n5. 输入 `` 将整行更改为小写。\n6. 移动到标记为 `--\u003e` 的第三行。\n7. 输入 `x` 选择整行。\n8. 按 `Alt-` 将整行更改为大写。\n\n```plaintext\n--\u003e thIs sENtencE hAs MIS-cApitalIsed leTTerS.\n--\u003e this SENTENCE SHOULD all be in LOWERCASE.\n--\u003e THIS sentence should ALL BE IN uppercase!\n```\n\n\n## 10.4 拆分选择\n\n输入 `S` 在正则表达式模式上拆分每个选择。\n\n1. 将光标移动到 --- 下的行。\n2. 输入 `xx` / `2x` 选择这些行。\n3. 输入 `S` 然后 `.` | `!` 回车（注意 `.` 和 `!` 后的空格）。这将有效地在每个句子上拆分选择。\n4. 按 `Alt-;` 翻转选择。\n5. 输入 `;` 将选择减少为单个字符 - 每个句子的第一个字母。\n6. 按 `Alt-` 将所有选定字母转换为大写。\n\n```plaintext\nthese are sentences. some sentences don't start with uppercase\nletters! that is not good grammar. you can fix this.\n```\n\n\n## 第10章总结\n\n- 使用 `)` 和 `(` 在选择中前后循环主要选择。\n  - 按 `Alt-,` 删除主要选择。\n  - 按 `Alt-)` 和 `Alt-(` 在选择内容中前后循环。\n- 输入 `~` 切换所选字母的大小写。\n  - 使用 `` 和 `Alt-` 分别将所选字母设为小写和大写。\n- 输入 `S` 在正则表达式模式上拆分选择。\n\n\n## 11.1 注释一行\n\n按 `Ctrl-c` 注释光标下的行。\n要取消注释行，再次按 `Ctrl-c`。\n\n1. 将光标移动到标记为 `--\u003e` 的行。\n2. 注释标记为 `--\u003e` 的行。\n3. 尝试取消注释行。\n\n```plaintext\n--\u003e Comment me please\n```\n\n\n## 11.2 注释多行\n\n使用选择和多光标功能，你可以注释多行，只要它在选择或光标下。\n\n1. 将光标移动到标记为 `--\u003e` 的行。\n2. 尝试选择或添加更多光标到其他标记为 `--\u003e` 的行。\n3. 注释这些行。\n\n```plaintext\n--\u003e How many are you going to comment?\n--\u003e Is this enough for a comment?\n--\u003e What are you doing?!\n--\u003e Stop commenting me!\n--\u003e AAAAaargh!!!\n```\n\n注意：如果在选择或多光标下已有注释行，它们不会被取消注释，而是再次注释。\n\n\n## 第11章总结\n\n- 使用 `Ctrl-c` 注释光标下的行。再次按 `Ctrl-c` 取消注释。\n- 要注释多行，请在输入 `Ctrl-c` 之前使用选择和多光标。\n- 注释行无法取消注释，而是再次注释。\n\n\n## 12.1 使用匹配模式跳转\n\n从普通模式切换到匹配模式，输入 `m`。此功能特别适用于处理括号对及其内容。\n\n有几种操作可以在匹配模式下执行，如帮助弹出窗口所示。要跳转到匹配的括号对，只需按 `mm`。例如，在下面的行（以 `--\u003e` 开头），在普通模式下将光标移动到 `(`，然后按 `mm` 跳转到匹配的 `)`。\n\n在下面的行中也可以这样做：例如，移动到 `]`，按 `mm` 跳转到 `[ `。\n\n```plaintext\n--\u003e you can (jump between matching parenthesis)\n--\u003e or between matching [ square brackets ]\n--\u003e now { you know the drill: this works with brackets too }\n```\n\n\n## 12.2 使用匹配模式选择内部\n\n匹配模式还允许你选择括号或其他定界符之间的“内部”内容。在下面的行中：\n\n- 移动到 `--\u003e` 行，将光标放在任意括号之间的位置，例如 `x`，然后按 `mi(` 或 `mi)` 选择整个括号内的内容（不包括括号）。如往常一样，你可以对选择执行任何操作（例如，按 `c` 更改它）。\n\n```plaintext\n--\u003e outside and (inside x parenthesis) - and outside again\n```\n\n在下面测试你是否可以对 `[]`，`{}` 或嵌套组合执行相同操作（这将作用于最近的括号对）。这也适用于 `\"\"` 等。\n\n```plaintext\n--\u003e test [ with square brackets ] !\n--\u003e try ( with nested [ pairs of ( parenthesis) and \"brackets\" ])\n```\n\n\n## 12.3 使用匹配模式选择周围\n\n你还可以选择“周围”的内容，即括号内的内容和定界符本身，使用 `ma` 选择。\n\n例如，移动到下面的行，将光标移动到 `()` 之间的任何位置，并输入 `ma(` 或 `ma)` 选择括号内的内容，包括括号本身。\n\n如往常一样，你可以对选择执行任何操作，例如用 `ma(d` 删除所有内容。\n\n```plaintext\n--\u003e you ( select x around ) to include delimiters in the select\n```\n\n这自然也适用于其他定界符：\n\n```plaintext\n--\u003e try [ with 'square' brackets ] too!\n```\n\n\n## 12.4 使用匹配模式包围\n\n匹配模式还可用于在当前选择周围添加包围。例如，移动到下面的行，然后：\n1. 选择 “select all of this” 行段（例如，将光标在普通模式下移动到 `select` 的开头，然后输入 `v` 进入选择模式，然后选择接下来的4个单词 `4e`）。\n2. 输入 `ms(` 或 `ms)` 将选择包围在一对括号内。\n\n```plaintext\n--\u003e so, select all of this, and surround it with ()\n```\n\n你可以对其他定界符执行相同操作：例如，在 `WORD` 上输入 `ms'` 将其包围在一对单引号内。你也可以尝试添加一对 `\"\"`、`{}` 或 `[]`。\n\n```plaintext\n--\u003e surround this WORD !\n```\n\n\n## 12.5 使用匹配模式删除包围\n\n你可以使用 `md` 命令删除包围的定界符对。在下面的行中，将光标移动到 `()` 的任何位置，例如 `x`，然后在普通模式下按 `md(` 或 `md)` 删除包围的括号。\n\n```plaintext\n--\u003e delete (the x pair of parenthesis) from within!\n```\n\n你当然可以删除其他种类的包围：\n\n```plaintext\n--\u003e delete (nested [delimiters]): \"this\" will delete the nearest\n    matching surrounding pair.\n--\u003e delete \"layers \"of\" quote marks\" too: this will delete the\n    nearest previous and following quote marks\n```\n\n尝试删除不存在的包围定界符将在底部栏打印错误并且不执行任何操作。\n\n\n## 12.6 使用匹配模式替换包围\n\n你可以使用 `mr` 命令替换包围的定界符对。在下面的行中，将光标移动到 `()` 内的任意位置，例如 `x`，然后在普通模式下按 `mr([` 将 `()` 替换为 `[]`。\n\n```plaintext\n--\u003e replace the (pair from x within), with something else\n```\n\n此命令将作用于最近的包围对，因此你可以在以下尝试替换不同的包围：\n\n```plaintext\n--\u003e some (nested surroundings [can be replaced])\n--\u003e this \"works with 'other surroundings' too\"\n```\n\n你可以尝试替换不存在的对：这将在底部栏显示错误警告并且不执行任何操作。\n\n\n## 第12章总结\n\n你可以通过 `m` 键进入匹配模式；这将显示可用操作的弹出窗口。它允许你：\n- 使用 `mm` 跳转到匹配的定界符对（光标下必须有属于一对的定界符）。\n- 使用 `mi(` 和类似命令选择包围光标的定界符对内的内容（即选择内容但不包括定界符）。\n- 使用 `ma(` 和类似命令选择包围光标的定界符对周围的内容（即选择内容和定界符）。\n- 使用 `md(` 和类似命令删除包围的定界符。\n- 使用 `ms(` 在选择周围添加定界符。\n- 使用 `mr([` 替换选择周围的定界符对。\n\n\n## 13.1 创建新分屏\n\n在普通模式下，按 `Ctrl-w` 打开窗口菜单，显示可用命令列表。\n\n要在当前窗口的右半部分垂直分屏中打开一个新空缓冲区，请使用 `Ctrl-w nv`（即同时按 `Ctrl` 和 `w`，然后按 `n`，再按 `v`）。\n\n当前窗口将垂直分为两部分。右半部分将出现一个新的空缓冲区分屏，光标将跳转到新的垂直分屏。\n\n要在水平分屏中创建一个新空缓冲区，按 `Ctrl-w ns`。此操作将当前窗口水平分为两部分，创建一个新缓冲区，并将光标移动到新的水平分屏。\n\n\n## 13.2 在分屏之间移动\n\n- 使用 `Ctrl-w k` 移动到当前分屏上方的分屏。\n- 使用 `Ctrl-w j` 移动到下方的分屏。\n- 使用 `Ctrl-w h` 移动到左侧的分屏。\n- 使用 `Ctrl-w l` 移动到右侧的分屏。\n- 按 `Ctrl-w w` 按打开顺序导航到下一个分屏。\n\n你现在可以在新的缓冲区和分屏中执行任何操作。完成后，可以按 `Ctrl-w q` 关闭分屏。使用 `Ctrl-w l` 移动到右下角的分屏，然后按 `Ctrl-w q` 关闭此特定分屏。\n\n你也可以按 `Ctrl-w o` 关闭除当前分屏外的所有分屏。使用 `Ctrl-w nv` 打开第三个垂直分屏，然后使用 `Ctrl-w h` 两次移动到最左边的分屏，再从分屏内按 `Ctrl-w o` 关闭除该分屏外的所有分屏。\n\n\n## 13.3 分屏当前缓冲区\n\n使用 `Ctrl-w s` 将当前缓冲区水平分屏，使用 `Ctrl-w v` 将其垂直分屏，并在两个分屏中打开缓冲区。\n\n使用 `Ctrl-w o` 关闭额外分屏，返回到单窗口视图。\n\n\n## 13.4 使用命令分屏\n\n可以使用 `:vsplit`（或简写 `:vs`）和 `:hsplit`（或简写 `:hs`）命令分别垂直或水平分屏特定缓冲区。例如，输入命令：\n\n```plaintext\n:vs something\n```\n\n在右侧打开一个名为 \"something\" 的新垂直分屏。这里，\"something\" 不是现有文件，因此将打开一个具有该名称的新缓冲区；\n\n但是，你可以用任何文件名替换 \"something\" 在新缓冲区中打开它。类似地，你可以输入命令：\n\n```plaintext\n:hs some_more\n```\n\n在下半部分打开一个名为 \"some_more\" 的新缓冲区。\"some_more\" 可以是任何文件或路径，以打开该特定文件或路径而不是新空缓冲区。\n\n\n## 13.5 交换分屏\n\n使用 `:vs hello1` 在左侧打开一个分屏，然后使用 `:hs hello2` 在下方打开一个分屏。\n\n在 `hello2` 中，按 `Ctrl-w K` 与上方的分屏交换。现在 `hello2` 在顶部而 `hello1` 在底部。\n\n仍然在 `hello2` 中，按 `Ctrl-w H` 与左侧的分屏交换：现在 `hello2` 在左侧，教程在右上角。按 `Ctrl-w` 后，可以使用 `HJKL` 与左侧/下方/上方/右侧的缓冲区交换。\n\n返回教程分屏，按 `Ctrl-w o` 仅保留此分屏。\n\n\n## 13.6 转换分屏\n\n使用 `:vs hello1` 在左侧打开一个分屏，然后使用 `:vs hello2` 在下方打开一个分屏。\n\n移动到教程分屏，然后按 `Ctrl-w t` 转换从此窗口打开的垂直分屏：现在 `hello1` 和 `hello2` 在教程下方，而不是右侧。再次按 `Ctrl-w t` 转换回来。\n\n移动到 `hello1` 分屏，然后按 `Ctrl-w t` 转换从此窗口打开的水平分屏：现在 `hello2` 在右侧，而不是 `hello1` 的下方。再次按 `Ctrl-w t` 转换回来。\n\n返回教程分屏并按 `Ctrl-w o` 关闭所有分屏，除教程外。\n\n\n## 13.7 从文件选择器打开分屏\n\n也可以直接从文件选择器打开分屏。按 `space f` 打开文件选择器。从那里，你可以输入文本执行模糊匹配文件查找，并使用上下箭头移动选定的文件（由 `\u003e` 符号指示）。要退出文件选择器，请按 `Escape`。\n\n在文件选择器中选择任意文件。你可以通过按 `Enter` 在当前视图中打开它（此时不要这样做）。但你也可以在新分屏中打开它。按 `Ctrl-v` 在新垂直分屏中打开选定的文件。再次按 `space f`，选择任意文件，然后按 `Ctrl-s` 在水平分屏中打开它。\n\n返回教程分屏，按 `Ctrl-w o` 关闭所有分屏，除教程外。\n\n\n## 第13章总结\n\n分屏可以用来显示相同的缓冲区多次或多个缓冲区。要访问主要窗口和分屏命令，按 `Ctrl-w`。你可以使用 `Ctrl-w hjkl` 在分屏之间移动，按 `Ctrl-w q` 关闭分屏，按 `Ctrl-w o` 关闭除当前分屏外的所有分屏。\n\n分屏也可以通过使用 `:vs FILENAME` 和 `:hs FILENAME` 命令打开。\n\n分屏也可以直接从文件选择器中打开，使用 `Ctrl-v` 在新垂直分屏中打开选定的文件，使用 `Ctrl-s` 在水平分屏中打开选定的文件。\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fatopx%2Fhelix_doc_zh","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fatopx%2Fhelix_doc_zh","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fatopx%2Fhelix_doc_zh/lists"}