ctrl+shift+l 是多光标同步输入而非插入模板,需确保按行选中才能正确拆分光标;行首/尾操作前应统一缩进、清理空白;动态内容须用正则替换;esc 是退出多光标唯一方式。

Ctrl+Shift+L 拆光标后直接输入,不是“插入模板”而是“同步输入”
Sublime Text 里没有“插入预设模板片段”的多行原生命令,所谓批量插入相同内容,本质是让多个光标同时处于可编辑位置,然后敲键盘——它不走 snippet 系统,不依赖 tab 触发,就是纯手动同步输入。
常见错误是:选中几行 → 按 Ctrl+Shift+L → 光标出现在每行开头 → 直接输 console.log(,结果发现有些行缩进被覆盖、有些行末尾没加括号、有些行中间插断了。
- 确保选区是“按行选中”,哪怕只选中每行第一个非空字符(比如
var的v),Ctrl+Shift+L才会拆出光标;纯空行默认被跳过 - 如果目标是行首插入(如加
//或if (),先按Ctrl+Shift+P运行Move to Beginning of Line,避免Home停在缩进后 - 如果目标是行尾追加(如加
;或/* */),拆光标后按End(Windows/Linux)或Cmd+→(macOS),再输入;别用→单键,它在有空白时可能停在空格处
行首/行尾位置不准?先清理缩进和尾部空白
多光标对齐失败,80% 是因为行首缩进不一致(空格 vs Tab)、行尾有多余空格或制表符。Sublime 不会自动帮你“归一化”这些位置,得手动干预。
- 批量清理:按
Ctrl+Shift+P→ 输入Trim Trailing Whitespace→ 回车,清掉所有行尾空白 - 统一缩进:选中目标区域 → 右键 →
Indentation → Convert Indentation to Spaces(或 Tabs),避免Home行为不一致 - 验证光标落点:拆光标后按一次
←(左箭头),看是否全部退到真正行首;若某行卡在缩进中间,说明那行用了混合缩进
想插带变量的模板?别硬记快捷键,用正则替换更稳
如果要插的是含动态部分的片段(比如 console.log('user_id:', user_id); 中的 user_id 要随行变化),多光标做不到,必须靠正则捕获 + 替换。
例如:把每行开头的 id: 替换为 console.log('id:', id);
- 打开替换面板:
Ctrl+H - 启用正则:
.*图标点亮 - 查找:
^id:\s*(\w+)(匹配行首id:后跟单词) - 替换:
console.log('id:', $1); - 注意:
$1是捕获组,不是字符串字面量;若需字面量$,写成\$1
插错位置或光标消失?Esc 是唯一退出键,别乱按 Ctrl+Z
多光标状态下误操作(比如按了 Ctrl+X 剪切了一行),Ctrl+Z 只会撤销最后一次输入,不会恢复光标数量。真正退出多光标编辑的唯一方式是按 Esc。
容易被忽略的细节:
-
Esc后所有光标消失,但已输入的内容保留;若想重来,得重新选行 →Ctrl+Shift+L - 如果某行内容被意外删空,
Ctrl+Shift+L会跳过它;此时需手动Ctrl+Click补上光标 - 装了 Emmet 插件时,
Ctrl+Shift+L可能被劫持;可在Preferences > Key Bindings中搜split_selection_into_lines确认绑定是否正常











