sublime全局替换需先加载项目根目录并显式限定where路径,否则仅作用于当前文件;安全写法应排除node_modules等目录,且所有操作前必须点击find all预览。

全局替换前必须确认项目已加载且 Where 路径显式限定
Sublime 的 Ctrl+Shift+F 全局搜索替换不会在单文件或未加载文件夹状态下生效——Replace All in Files 按钮始终灰色,不是权限问题,是缺少项目上下文。你必须先执行 File → Open Folder… 加载整个 Node.js 项目根目录(如 ./ 或 ./src),否则所有正则操作都只作用于当前标签页。
Where 字段填 * 是高危行为:它会匹配 node_modules、dist、package-lock.json 等二进制/第三方文件,导致内存暴涨甚至卡死。安全写法应显式限定:
-
src/**/*.js, src/**/*.ts:只搜源码,逗号分隔多后缀 -
!node_modules, !dist, !build:排除黑名单(减号或感叹号均可) -
controllers/**/*.js:精准到模块目录,避免波及 utils 或 tests
执行前务必点 Find All,预览列表第一行若出现 node_modules/axios/,立即中止。
函数调用格式转换:从回调转 async/await 或加对象参数
Node.js 项目升级时常见需求:把 getUser(id, callback) 改成 await getUser({ id }),或统一为 Promise 风格。关键在捕获参数边界,避免跨行或嵌套括号误匹配。
将一个或多个视频上传至YouTube。当用户想“上传到YouTube”“发YouTube”“批量上传”“upload to YouTube”“post videos to YouTube”或发布到YouTube时使用此技能。
查:getUser\(([^)]+)\)
替:await getUser({ $1 })
-
[^)]+比.*?更可靠:它明确拒绝右括号,防止匹配到getUser(fn(), callback)中的内部括号 - 若参数含换行(如多行对象字面量),需先开启
. matches newline(面板右下角 ⇧ 图标),再改用getUser\(([\s\S]*?)\) - 替换前检查
$1是否含多余空格;如需清理,可先用[ \t]+(?=\))单独删掉括号前尾随空白
安全删除 console.log 且不破坏注释与字符串
直接搜 console.log 全删会误伤:比如字符串里的 "console.log(1)",或已被注释的 // console.log(x)。必须用行级锚定 + 空白容错。
查:^\s*console\.log\([^)]*\);\s*$
替:(留空)
-
^\s*和\s*$锚定整行,确保是独立语句,跳过注释行和字符串内内容 -
[^)]*限制参数内无右括号,防跨行和嵌套干扰 - 想转为注释而非删除?替换框填:
// console.log$0($0表示整行匹配内容) - 若项目用 Prettier,删完建议立刻
Save All触发格式化,避免缩进残留
变量名重命名(如 user_id → userId)必须加词边界与大小写控制
正则无法理解 JavaScript 语义,user_id 直接替成 userId 会连带改掉 post_user_id_flag 或 username。必须用 \b 锁定单词边界,并利用 Sublime 特有转义实现首字母大写。
查:\b([a-z]+)_([a-z])([a-z]*)\b
替:$1\u$2$3
-
\u$2是 Sublime 独有语法,将捕获组 2 的首个字符转大写(id→Id) - 若字段含数字(如
user_id_123),改用\b([a-z0-9]+)_([a-z])([a-z0-9]*)\b,但注意user_123仍可能被误捕,此时应加负向先行断言:\b([a-z0-9]+)_(?=[a-z]) - 绝对不要跳过
Find All预览——尤其跨test/和src/目录时,it('should handle user_id')这类测试描述也会被卷入
真正容易被忽略的是:正则写对了,但 .* 图标没点亮、Where 路径漏写、或 \s 吞掉了换行符。三秒看一眼图标颜色、扫一遍路径、点一次预览,比 Git revert 快十倍。










