Ctrl+Shift+F(Windows/Linux)或Cmd+Shift+F(macOS)是Sublime Text跨文档全局查找替换的唯一入口;必须调出find_in_files面板,Where填“.”启用项目扫描,正则需加(?s)才跨行匹配,替换后须手动Save All。

Ctrl+Shift+F 是唯一能跨多行搜索的入口
Sublime Text 的跨行搜索不是靠 Ctrl+F 或右键菜单实现的,它必须走 find_in_files 面板。按 Ctrl+Shift+F(Windows/Linux)或 Cmd+Shift+F(macOS)调出面板后,. 填在 Where 框里才真正启用项目级扫描——否则你搜的只是当前文件,连换行都进不去。
正则模式必须开,且 . 默认不匹配 \n
即使启用了正则(点右下角 .* 图标),. 依然只匹配单行内的任意字符。想让 foo.*bar 匹配 foo\nbar,必须显式加 (?s) 前缀:
-
(?s)console\.log$$[^)]*$$才能捕获跨行的console.log(调用 -
(?s)export\s+{[^}]*user_id[^}]*}可匹配分散在多行的导出对象 - 不加
(?s)时,哪怕开了正则,也永远卡在单行内
Where 填错一个字符,就等于放弃跨行能力
Where 不是路径补全框,是 Shell 风格过滤器。填错会导致搜索范围被砍掉大半,根本没机会触发跨行匹配:
- 填
./src:Linux/macOS 下大小写敏感,./SRC就漏掉全部 - 填
src/(无点):可能只扫子目录,父级配置文件不参与 - 填
., -node_modules/, -dist/:逗号后必须有空格?错——Sublime 要求紧挨逗号,空格会中断解析 - 填空或
open_files:压根不读磁盘文件,跨行搜索自动失效
替换时 $1 能用,但跨行结果可能被截断
用 (?s)(foo)(.*?)(bar) 捕获后,$1$3 确实能引用,但要注意:
- 如果匹配内容超长(比如整个 JSX 组件),Sublime 可能只显示前几行,实际替换仍生效——别光看预览面板就判断失败
- 含中文或 emoji 时,确保右下角状态栏编码是
UTF-8,否则(?s)可能错位切分字节 - 替换后务必手动执行
Ctrl+K→Ctrl+B(Windows)或Cmd+K→Cmd+B(macOS)保存全部,否则跨行改动全丢

















