Sublime多行替换本质是多光标编辑,Ctrl+Shift+L仅对含换行符的选区生效;鼠标拖选若未覆盖末尾换行符则只生成一个光标;安全做法是先用Ctrl+L逐行选中再执行该快捷键。

用 Ctrl+Shift+L 拆光标前必须确保选区含换行符
Sublime 的“多行替换”本质是多光标编辑,不是靠选中多行再输入——Ctrl+Shift+L 只对**已有换行符的选区**生效。鼠标拖选看似选中了多行,但若末尾没覆盖到换行符(即停在最后一行最后一个字符上),它只会生成一个光标。
安全做法:Ctrl+L 逐行选中目标行(每按一次加一行),或先用 Shift+↓ 多选并确保光标跨过行尾进入下一行开头;确认选区里有 \n 后再按 Ctrl+Shift+L,才能把每行转成独立光标。
- 空行也会被拆出光标,但光标落在行首,容易漏改——处理配置文件时得手动检查
- 如果目标行有缩进,所有光标会卡在相同列位置,输内容会导致整体右移,看起来齐、实际错位
- 想统一在行尾加内容(如分号),比列编辑更稳的是用正则:打开
Ctrl+H,启用正则,搜$,替换为;
用正则匹配“指定行”得靠 ^ 和 $ 锚定 + (?m) 多行模式
默认情况下,^ 和 $ 只匹配整个文本的开头和结尾,不是每行。想让它们作用于每一行,必须启用多行模式:Ctrl+H → 点右下角 .* 图标 → 再点 ↩(或按 Alt+.)启用 . matches newline,这步同时激活 (?m) 行模式。
例如:要把所有以 console.log 开头的行全替换成 debugger;,正则写法是:^console\.log\([^)]*\);?$,替换为 debugger;。不加 ^ 和 (?m),它可能只匹配到某行中间的 console.log 字符串。
-
^匹配行首,但对缩进敏感——如果代码有空格或 tab,得写成^\s*console\.log - 想排除注释行干扰?加负向先行断言:
^(?!\s*//).*console\.log - 替换后务必点
Find All看高亮是否只落在你预期的那些行上,跳过这步,90% 的误操作就发生在这里
全局批量改指定行,Where 路径填错等于扫整个磁盘
用 Ctrl+Shift+F 批量改多个文件时,Where 框不能留空或填 ./——留空只搜已打开文件,填 ./ 会从系统根目录开始扫描,极慢且危险。真正可控的写法是明确路径+排除规则。
比如只改业务 JS 文件,推荐:src/**/*.js,-node_modules,-dist(逗号分隔,减号排除)。斜杠统一用 /,Windows 下也一样;** 表示递归子目录。
- 如果项目没加载为文件夹(状态栏没显示路径),
Ctrl+Shift+F面板会灰显或Where框只显示Open Files,此时必须先File → Open Folder… - Mac 用户若
Cmd+Shift+F无反应,大概率是系统 Spotlight 快捷键冲突,需去「系统设置 → 键盘 → 快捷键」禁用 - 大量匹配时 Sublime 可能卡顿,建议先限定目录(如
src/utils),验证无误后再扩到src
替换后不 Save All = 白干
Sublime 不像 VS Code 或 WebStorm 那样自动保存修改。点完 Replace All 后,所有改动都只是内存里的临时状态。关掉窗口、切标签、甚至重启软件,只要没点 File → Save All(或 Ctrl+K Ctrl+S),所有替换全部丢失。
更隐蔽的是:有些文件可能是只读状态(右下角显示 RO),Replace All 会灰掉或静默失败——得先改文件权限或在编辑器里取消只读(右键文件 → Properties → Permissions)。
- 批量操作前建议先备份关键文件,或开启
atomic_save: true设置防意外中断 - Git 用户注意:替换后未
Save All就执行git status,会发现没有任何变更,以为没生效,其实是根本没落盘 - 最常被忽略的一点:正则替换里用了捕获组
(),但替换字段没写$1、$2,结果所有匹配全被替成空字符串——这种错误不会报错,只默默删掉内容

















