ctrl+shift+l 默认将光标置于每行末尾,需配合 home/cmd+← 或 ctrl+home/cmd+home 跳至行首;正则替换用 ^ 需启用 .* 模式且统一换行符与编码;差异化前缀必须依赖 text pastry 插件。

Ctrl+Shift+L 拆光标后光标默认在行尾,不是行首
直接选中多行按 Ctrl+Shift+L(Windows/Linux)或 Cmd+Shift+L(macOS),所有光标会落在每行换行符前——也就是行尾。此时输入字符,会加在末尾,比如想加 //,结果变成 console.log(); //。
必须立刻补按 Home(Win/Linux)或 Cmd+←(macOS)让光标跳到行首;若某行有缩进,Home 第一次只停在缩进起点,再按一次才到真正行首。更稳的做法是连按两次 ←,或直接用 Ctrl+Home(Win)/Cmd+Home(Mac)一步到位。
- 别先
Ctrl+A全选再按Ctrl+Shift+L:全选后光标仍在各行末尾,且Home只移动第一行光标 - 选区必须跨换行符,否则
Ctrl+Shift+L静默失败(状态栏无提示) - 操作中途按了方向键、
Ctrl+Z或Esc,部分光标会消失;每次输前看一眼状态栏右下角是否还显示 “x cursors”
正则替换 ^ 是最稳的批量加法,但必须点开 .* 按钮
打开 Ctrl+H(Win/Linux)或 Cmd+H(macOS),务必点击右下角 .* 按钮启用正则模式——这是硬性前提。漏点它,^ 就被当普通字符处理,替换结果全是字面量 ^prefix,而不是加在行首。
-
^匹配的是“行首位置”,不消耗字符,安全;但误填^.+或^.*会导致整行被替换成前缀,原内容丢失 - 混合换行符(
\r\n和\n共存)会导致部分行漏匹配;操作前先运行Ctrl+Shift+P→Set Line Endings: Unix统一为LF - 文件带 UTF-8-BOM 时,
^可能匹配不到首行开头;执行File → Save with Encoding → UTF-8去除 BOM - 空行也会被
^匹配,加//后变成//,这是预期行为,不是错误
缩进不一致时强行 Home 输入只会放大对齐问题
Home 键在不同缩进下停靠位置不同,尤其混用 Tab 和空格时行为不可靠。别硬调光标,先统一结构。
- 选中目标行 →
Ctrl+Shift+P→ 输入Indentation: Convert to Spaces,把 Tab 全转为空格 - 或用正则预处理:查找
^(\s*)(.+)$,替换为$1// $2,这样前缀会紧贴缩进后内容,不破坏原有层级 - 列选择(
Alt+Shift+拖拽)看起来直观,但 Tab 宽度不一致时极易错位;开启View → Draw White Space显式查看空白符后再拖更稳
需要每行加不同前缀?必须用 Text Pastry 插件
原生 Sublime 不支持“差异化前缀”,Ctrl+Shift+L 和正则都只能插入相同字符串。强行用宏录制或多次手动改,光标错位、漏行、Esc 清空全部——这不是技巧问题,是机制限制。
- 安装:
Ctrl+Shift+P→Package Control: Install Package→ 搜索Text Pastry→ 点击安装(注意别装错成Text Paster) - 加序号:
Ctrl+Shift+P→Text Pastry: Insert Numbers→ 输入起始值(如001补前导零) - 加自定义文本:
Text Pastry: Insert Text→ 粘贴对应行数的文本(每行一个值),严格按顺序一一匹配 - 选中行数 ≠ 粘贴文本行数时,多余行被忽略、不足行不动——不会报错,也不会循环填充
Esc 或切换窗口,光标同步就断了;而 Text Pastry 的粘贴顺序和行数对齐,必须人工核对,没有自动容错。











