必须先点击右下角 .* 图标或按 Alt+R 启用正则模式,再输入表达式,否则 \d+ 等会被当作字面字符串匹配;替换务必用 Ctrl+H/Cmd+H,全局多文件替换用 Ctrl+Shift+H。

怎么打开正则替换面板才不白忙活
Sublime 的正则替换根本没启动,90% 的失败都卡在这一步——你写了 \d+,结果它当普通字符串找 \d+ 三个字。必须点右下角那个 .* 图标(或按 Alt+R),让它高亮,正则才算真正生效。
- 别用菜单里「查找」→「在文件中查找」来干替换的事,那是只读搜索;要改内容,直接按
Ctrl+H(Win/Linux)或Cmd+H(macOS)呼出替换面板 - 全局多文件替换?用
Ctrl+Shift+H(不是Ctrl+Shift+F),后者只搜不替 - 面板里
Find和Replace框都空着时,.*开关点了也白点——得先输点东西,它才会按正则解析
为什么 getUser$$id$$ 替成 getUser({ id }) 总出错
括号、点号、星号这些在正则里全是元字符,不转义就匹配不了字面意思。写 getUser(id),实际是让引擎去找 “getUser 后跟任意字符再跟一个 d”,根本不是你想要的函数调用。
- 所有字面意义的
(、)、.、+、[、?等,一律加反斜杠:查getUser$$([^)]+)$$,不是getUser$$[^)]+$$ - 想跨行匹配(比如函数体换行了)?光靠
.*不行,默认它不认换行符;得加(?s)前缀,或勾选面板右下角「.\n」选项(Alt+R再按一次) - 捕获组用圆括号
(),替换时用$1、$2引用——不是\1,也不是${1},Sublime 只认美元符号语法
批量改 user_name → userName 却把 __init__ 改崩了
简单搜 _([a-z]) 替成 U$1,看着快,实则埋雷:它会把单词中间、开头、甚至注释里的下划线全咬住。Python 的双下划线方法、CSS 类名、JSON key 全遭殃。
- 加单词边界锚定:
\b_([a-z]),确保下划线前是空或非字母数字;但注意\b在中文环境可能不准,稳妥点用(?(负向先行断言) - 更安全的做法是限定上下文:比如只处理赋值语句开头的私有变量,用
^[ \t]*_([a-zA-Z][a-zA-Z0-9]*) = - 永远先点
Find All,看右侧边栏列出的所有匹配——__init__、__all__、class_这些是否混在里面,有就立刻停手调正则
替完发现文件没保存,Git 也没备份怎么办
点下 Replace All 的那一刻,改动只存在内存里,没写入磁盘。关掉一个带星号 * 的标签页,那一整页修改就彻底消失,Sublime 不提供跨文件撤销。
- 执行前必须做两件事:
git add -A && git commit -m "before rename user_name";替换后立刻按Ctrl+K松开再按Ctrl+B(全部保存) -
Where框千万别留空——它等价于“只搜当前已打开的几个文件”,不是整个项目;真要全项目,填.(单个英文点) - 排除
node_modules/、dist/、*.min.js这些目录,写法是:., -node_modules/, -dist/, -*.min.js,注意统一用正斜杠/
最常被跳过的其实是预览和路径控制:正则写对了,范围设错了,照样把构建脚本里的 console.log 全干掉;Find All 懒得点,就等于闭着眼开车。

















