sublime中路径正则必须用.*\.(js|ts|jsx|tsx)$并启用. *模式、关闭. matches newline,where栏限定路径如./src/**/*.{js,ts,jsx,tsx},排除-./node_modules等目录,中文路径用(?u)"([^"]*\.(js|ts|jsx|tsx))"。

查找时用.*\.(js|ts|jsx|tsx)$,别写.*\.(js|ts|jsx|tsx)漏掉换行符
Sublime 默认把 $ 当作“整文件结尾”,不是“行尾”。如果你的路径混在文本块里(比如 JSON 数组、注释列表或配置项中),不加 $ 就会跨行匹配到不该碰的内容。例如:
"src/utils/api.js",\n "src/components/Button.tsx",\n "README.md"
写 .*\.(js|ts|jsx|tsx) 可能吞掉逗号后的换行和下一行开头,导致高亮错乱甚至替换出界。
- 必须写
.*\.(js|ts|jsx|tsx)$,并确保右下角.*图标已点亮 - Windows 下若文件末尾是
\r\n,$有时停在\r前 → 改用\R更稳:.*\.(js|ts|jsx|tsx)\R? - 如果路径带引号,想连引号一起提取,就写
"(.*\.(js|ts|jsx|tsx))",后续用$1引用
替换时用$1而不是\1或${1}
Sublime 的替换引擎只认 这种美元符号引用法。 是 PCRE/Python 风格, 是 Shell 或某些编辑器风格,在 Sublime 里都会原样输出字符,不会展开为捕获内容。
- 查找:
"(.*\.(js|ts|jsx|tsx))" - 替换:
$1(正确) - 替换:
\1或${1}(错误,输出字面量) - 想输出字面
$?写成$$,比如path: $$1→ 输出path: $1
Where 栏必须显式限定路径,否则.*\.(js|ts|jsx|tsx)$可能扫进node_modules
全局替换(Ctrl+Shift+F)不设 Where 就等于裸奔。一个 log\((.*?)\) 都可能改掉 node_modules 里第三方包的源码,更别说路径提取这种宽泛模式。
- 安全写法:
./src/**/*.js,./src/**/*.ts,./src/**/*.jsx,./src/**/*.tsx - 排除目录:
-./node_modules -./dist -./build(减号开头,空格分隔) - 单星号
./src/*.js不递归,会漏掉src/api/下的文件;必须用双星号** - 点
Find All后务必看右下角列出的文件路径——如果出现package-lock.json或vendor/,立刻停手
中文路径或 Unicode 文件名匹配失败?关掉. matches newline,加(?u)
默认正则引擎对中文支持弱,\w 不匹配汉字,[a-z] 更是完全失效。而如果误勾了 . matches newline,^ 和 $ 就不再按行工作,整个提取逻辑就垮了。
- 先确认面板右下角
⇧(多行模式)已启用,.*已点亮,但. matches newline必须关闭 - 中文路径推荐写法:
"([^"]*\.(js|ts|jsx|tsx))"(否定字符集比.*更安全) - 或加 Unicode 标志:
(?u)"([^"]*\.(js|ts|jsx|tsx))",让\w等也能认汉字(但实际场景中,否定字符集更可控) - 如果路径含 BOM 或编码异常,状态栏显示非
UTF-8→ 先执行File → Save with Encoding → UTF-8 with BOM
\r、BOM、混合缩进,或者 Where 栏里那个没生效的 **。每次点 Replace All 前,花 5 秒看一眼 Find All 的预览列表,比重开 Git 恢复快十倍。











