Skip to content

多光标编辑 ​

VMark 在所见即所得模式和源码模式中均支持强大的多光标编辑,让你可以同时在多个位置进行编辑。

快速开始 ​

操作快捷键
在下一个匹配处添加光标Mod + D
跳过匹配,移动到下一个Mod + Shift + D
在所有匹配处添加光标Mod + Shift + L
在当前块内的所有匹配处添加光标Alt + Mod + Shift + L
撤销上一次添加的光标Alt + Mod + Z
在上方添加光标Mod + Alt + Up
在下方添加光标Mod + Alt + Down
点击添加/移除光标Alt + 点击
收起为单一光标Escape

TIP

Mod = macOS 上的 Cmd,Windows/Linux 上的 Ctrl Alt = macOS 上的 Option

添加光标 ​

选择下一个出现位置(Mod + D) ​

  1. 选中一个单词,或将光标放在某个单词上
  2. 按 Mod + D 在下一个出现位置添加光标
  3. 再次按下以添加更多光标
  4. 输入内容以同时编辑所有位置
示例:将变量 count 重命名为 total:
  1. 双击 count 选中它
  2. 反复按 Mod + D 选中每个出现位置
  3. 输入 total——所有出现位置同时更新

选择所有出现位置(Mod + Shift + L) ​

一次性选中当前单词或选区的所有出现位置:

  1. 选中一个单词或文本
  2. 按 Mod + Shift + L
  3. 文档中所有匹配的出现位置都被选中——若在代码块内,则只选中该块中的所有匹配(参见范围)
  4. 输入内容以一次性替换所有位置

若只想在当前所在的段落、标题或列表项内选择,请改用 Alt + Mod + Shift + L。

Alt + 点击 ​

按住 Alt(macOS 上为 Option)并点击:

  • 添加 一个光标到该位置
  • 如果该位置已有光标,则 移除 该光标

这对于在非匹配文本的任意位置放置光标非常有用。

跳过出现位置(Mod + Shift + D) ​

当 Mod + D 选中了你不需要的匹配时,可以跳过它:

  1. 按 Mod + D 开始添加匹配
  2. 如果最新的匹配不需要,按 Mod + Shift + D 跳过它
  3. 被跳过的匹配将被移除,并选中下一个匹配

这是多光标版的"查找下一个"——让你可以挑选要编辑的出现位置。

软撤销(Alt + Mod + Z) ​

撤销上一次添加的光标,而不丢失所有光标:

  1. 多次按 Mod + D 积累光标
  2. 如果多添加了一个,按 Alt + Mod + Z
  3. 最后添加的光标被移除,恢复到之前的状态

与 Escape(收起所有光标)不同,软撤销每次退回一个光标。

在上方/下方添加光标(Mod + Alt + Up/Down) ​

垂直添加光标,每次一行:

  1. 将光标放在某一行
  2. 按 Mod + Alt + Down 在下一行添加光标
  3. 继续按以向下添加更多光标
  4. 使用 Mod + Alt + Up 向上添加光标

这对于编辑列对齐的文本或在连续行上进行相同编辑非常理想。

使用多光标编辑 ​

拥有多个光标后,所有标准编辑操作都会在每个光标处执行:

输入 ​

  • 字符会在所有光标位置插入
  • 选区会在所有位置被替换

删除 ​

  • Backspace——删除每个光标前的字符
  • Delete——删除每个光标后的字符

导航 ​

  • 方向键——所有光标一起移动
  • Shift + 方向键——在每个光标处扩展选区
  • Mod + 方向键——在每个光标处按单词/行跳转

Tab 跳出 ​

Tab 跳出对每个光标独立工作:

  • 在 粗体、斜体、代码或删除线内的光标跳到格式末尾
  • 在链接内的光标从链接中跳出
  • 在闭合括号 ) ] } 前的光标跳过括号
  • 普通文本中的光标保持不动

这让你可以同时从多个格式化区域跳出。详情参见智能 Tab 导航。

剪贴板 ​

复制(Mod + C):

  • 复制所有选区的文本,以换行符连接

粘贴(Mod + V):

  • 如果剪贴板的行数与光标数相同,每行分别粘贴到对应光标处
  • 否则,完整的剪贴板内容粘贴到所有光标处

范围 ​

代码有范围限制,正文没有。在代码块(所见即所得)或围栏代码块(源码)内,光标绝不会越过围栏——在一个代码片段中匹配变量名,不会在另一个代码片段中放置光标。在普通正文中,Mod + D 和 Mod + Shift + L 会搜索整个文档。

这通常正是你想要的,但偶尔并非如此:在长文档中,匹配一个常见单词会在远离屏幕的段落中放置光标。

选择块内所有出现位置 ​

Alt + Mod + Shift + L 仅在当前块内选中所有匹配——即光标所在的段落、标题或列表项。在源码模式中,块以空行为界;在所见即所得模式中,以所在的块为界。在代码围栏内,它的行为与 Mod + Shift + L 完全相同,因为围栏本身就是块。

两者是并列的快捷键,而不是一种模式:Mod + Shift + L 仍然覆盖整个文档,因此你已经习惯的操作不会改变。

用哪一个?

当单词很常见时,使用块内版本——比如重命名正文中也提到的变量,或编辑某个列表项的模式。当你确实想要处处替换时,使用整个文档版本。

收起光标 ​

按 Escape 将所有光标收起为主光标位置的单一光标。

光标稳定性

收起的光标在光标位置插入文本时保持稳定。在映射的插入操作后,不会意外扩展为选区(已在 v0.6.x 修复)。

视觉反馈 ​

  • 主光标——标准闪烁光标
  • 次级光标——具有独特样式的额外闪烁光标
  • 选区——每个光标的选区都有高亮显示

在深色模式下,光标和选区颜色会自动调整以提高可见性。

模式对比 ​

功能所见即所得源码
Mod + D✓✓
Mod + Shift + D(跳过)✓✓
Mod + Shift + L✓✓
Alt + Mod + Z(软撤销)✓✓
Mod + Alt + Up/Down✓✓
Alt + 点击✓✓
围栏范围代码块代码围栏
块内全选Alt + Mod + Shift + LAlt + Mod + Shift + L
环绕搜索✓✓

技巧与最佳实践 ​

重命名变量 ​

  1. 双击变量名
  2. Alt + Mod + Shift + L 选中此块内的所有匹配(或用 Mod + Shift + L 选中整个文档中的匹配)
  3. 输入新名称

添加前缀/后缀 ​

  1. 将光标放在重复文本的前面/后面
  2. Mod + D 在每个出现位置添加光标
  3. 输入前缀或后缀

编辑列表项 ​

  1. 选中共同的模式(如行首的 - )
  2. Mod + Shift + L 选中所有
  3. 一次性编辑所有列表项

何时使用各快捷键 ​

场景最佳快捷键
谨慎、逐步选择Mod + D
跳过不需要的匹配Mod + Shift + D
替换当前块内的所有匹配Alt + Mod + Shift + L
替换整个文档中的所有匹配Mod + Shift + L
撤销上一个光标步骤Alt + Mod + Z
编辑连续行Mod + Alt + Up/Down
任意位置Alt + 点击
快速退出Escape

限制 ​

  • 原子节点:在所见即所得模式中,无法将光标放入图片、嵌入内容或数学块内部
  • 输入法输入:使用输入法(中文、日文等)时,组合输入只影响主光标
  • 代码块:在代码块(所见即所得)或围栏代码块(源码)内,出现位置匹配绝不会超出该块

键盘快捷键参考 ​

操作快捷键
选择下一个出现位置Mod + D
跳过出现位置Mod + Shift + D
选择所有出现位置Mod + Shift + L
软撤销光标Alt + Mod + Z
在上方添加光标Mod + Alt + Up
在下方添加光标Mod + Alt + Down
添加/移除光标Alt + 点击
收起为单一光标Escape
移动所有光标方向键
扩展所有选区Shift + 方向键
按单词跳转Alt + 方向键
按行跳转Mod + 方向键