sublime多光标批量替换需分场景选用:ctrl+d逐词严格匹配、ctrl+shift+l行末批量切片、ctrl+alt+enter正则捕获组定位;三者不可混用,且操作后须及时输入、手动保存。

Sublime 的多光标批量替换不是“选中就完事”,它依赖你控制光标精度和上下文边界——Ctrl+D 逐个扩展、Ctrl+Shift+L 全量生成、Ctrl+Alt+Enter 基于正则定位,三者适用场景完全不同,混用必出错。
Ctrl+D 适合手动确认的局部替换
它不智能识别变量作用域,只做严格字符串匹配,大小写、下划线、边界字符全算在内。
- 光标放在
user_id上按一次Ctrl+D,只选中当前词;再按一次,向后找下一个完全相同的user_id(不是user_id_list) - 若中途遇到
User_Id或user_id:,匹配中断,需按Ctrl+K Ctrl+D跳过当前项 - 想只改变量名不碰字符串或注释?先勾选查找面板的
Whole Word,再配合Ctrl+H+In Selection限定范围 - 输错一个字符或按方向键,所有光标立刻合并——必须在
Ctrl+D完成后**立刻输入**,别删、别移、别停
Ctrl+Shift+L 是行级批量编辑的主力
它把当前选中的每行末尾(换行符前)变成一个光标,本质是“按行切片”,不是按词匹配。
- 先用
Ctrl+L选中目标行,或鼠标拖选含换行符的文本块(视觉上要盖住行尾空白处) - 按
Ctrl+Shift+L后,所有光标默认落在行尾;想加前缀就先按Home或Ctrl+←移到行首 - 空行也会生成光标,但光标停在开头,容易漏改——处理配置文件时务必人工扫一眼空行
- 如果某几行缩进不一致(比如有的开头有 2 空格、有的有 4),光标不会自动对齐,得先用正则统一缩进:
^\s*→ 替换为空
Ctrl+Alt+Enter 基于正则精准定位捕获组
当你需要改的不是完整单词,而是结构化内容的一部分(如 HTML 属性值、JSON 键、URL 参数),就得靠它。
- 打开
Ctrl+H,输入正则如id="([a-zA-Z0-9_-]+)",点右下角.*激活正则,再点Find All - 确保下方预览区高亮了全部目标(比如 17 个
id值),再按Ctrl+Alt+Enter—— 此时光标只落在每个$1捕获的位置,不是整个id="xxx" - 替换时直接输入新值,不会误动引号或等号;若想保留部分原内容,用
$1引用,如替换为data-$1 - 注意捕获组编号:左括号从左到右数,
"(([^"]*))"中$1是整个引号内字符串,$2才是里面的内容
为什么替换后没生效?三个硬性检查点
多光标操作本身不保存、不跨文件、不校验语法,所有“没变”都是因为跳过了关键动作。
-
Replace All只在Ctrl+Shift+F面板里才跨文件;Ctrl+H里的Replace All永远只作用于当前文件可见区域 - 点完
Replace All后,所有被改文件标签页出现星号*—— 这是 Sublime 在说“我还没写进磁盘”,必须手动File → Save All或Ctrl+K Ctrl+B - Where 框填空 = 只搜已打开的标签页;填
.= 整个项目;填src,-node_modules= 业务代码目录且排除 node_modules(逗号分隔,减号排除)
最常被忽略的是:正则模式在 Ctrl+F、Ctrl+H、Ctrl+Shift+F 三个面板里各自独立,点一次 .* 只管当前面板。你刚在 Ctrl+Shift+F 里开了正则,切回 Ctrl+H 写 \d+,它还是当普通字符串处理。











