Ctrl+Shift+L 是 Sublime 多行编辑核心:先选中多行(如 Ctrl+L 后 Ctrl+Shift+↓),再按此键生成多光标;加前缀按 Home,加后缀按 End(注意尾部空白干扰);大文件或复杂需求优先用正则替换或 Vintageous 插件命令。

用 Ctrl+Shift+L 快速进入多行编辑模式
Sublime 默认不启用列编辑(即按住 Alt 拖选),但批量加前缀/后缀最稳的方式是先选中所有目标行,再触发多光标。关键不是“怎么加字符”,而是“怎么让光标出现在每行的同一位置”。Ctrl+Shift+L 是核心:它会把当前选中的每一行拆成独立光标——前提是选中的是多行文本(哪怕只选中每行开头一个空格也行)。
常见错误:直接按 Ctrl+A 全选后按 Ctrl+Shift+L,结果光标跑到每行末尾,加前缀就失败。正确做法是先用 Ctrl+L 选中第1行 → Ctrl+Shift+↓ 向下扩选多行 → 再按 Ctrl+Shift+L。
- 如果目标是加行首字符:光标就位后,按
Home跳到行首(或手动点击每行开头),再输入字符 - 如果目标是加行尾字符:光标就位后,按
End跳到行尾(注意 Windows 下可能需关掉“Vintage”模式干扰),再输入字符 - 若行尾有空格或制表符,
End会停在空白处而非真·结尾,此时建议先用正则替换清理尾部空白:\s+$→ 空
用正则替换一次性处理行首/行尾(适合大文件或固定模式)
多行编辑适合几十行以内;上百行以上,或者要加的字符和原内容有关(比如给每行加编号、加引号包裹),就得靠 Find → Replace 配合正则。关键是理解 ^ 和 $ 在 Sublime 中默认匹配每行起止,不用开“multiline”选项。
示例:给每行开头加 //
Find: ^\s* Replace: //
说明:^\s* 匹配行首任意空白(含无空白),避免重复加空格;如果只要纯行首,用 ^ 即可。
- 加行尾字符(如分号):
Find: $→Replace: ;,但注意:若某行已存在换行符,$不匹配最后一行末尾(因 Sublime 把换行当作行的一部分)。稳妥做法是Find: \n→Replace: ;\n,再单独处理末行 - 想包裹每行内容(如加单引号):
Find: ^(.*)$→Replace: '$1',记得勾选.*正则按钮 - 性能提示:正则开启“Wrap around”和“In selection”能大幅减少误替换;大文件慎用
.*量词,容易卡死
安装 Vintageous 插件后可用 Ex 命令批量操作(类 Vim 用户首选)
如果你习惯 Vim,装 Vintageous 插件后,Ctrl+Shift+P 输入 Vintageous: Enter Command Mode,就能用 Ex 命令。这不是噱头——对复杂批量编辑(比如“只给注释行加前缀”),命令比鼠标快得多。
常用命令:
- 给第5到10行加前缀:
:5,10s/^/TODO: / - 给所有空行跳过,其余行加后缀:
:%s/\S$/&;/(&表示匹配到的非空白字符) - 加行号前缀:
:%s/^/\=line('.') . ' '/(\=启用表达式求值)
注意:Vintageous 的 s/// 默认不全局,要加 g 标志才替换每行多个匹配;且它的 $ 行尾匹配行为和原生正则略有差异,首次用建议先试小范围。
别忽略 Tab 键和缩进对“行首”的实际影响
很多人加完前缀发现错位,问题不在操作,而在没意识到 Sublime 的“行首”是逻辑位置,不是视觉左边界。如果文件用空格缩进且开启了 detect_indentation,某行缩进是 4 个空格,Home 键可能直接跳到缩进后——这时光标根本不在真正行首。
- 临时强制跳到物理行首:按
Ctrl+Home(Windows/Linux)或Cmd+Left(macOS) - 永久统一缩进行为:在
Preferences → Settings里设"detect_indentation": false,再手动设"tab_size": 2等 - 检查当前缩进:状态栏右下角显示 “Tab Width: 4” 或 “Indentation: spaces”,点它可快速切换
真正麻烦的是混合缩进(空格+Tab)文件——这种情况下,正则 ^ 依然可靠,但多光标 Home 行为不可预测,优先走正则路线。










