sublime text 查找替换需精准配置:ctrl+f/h 仅限当前文件;跨文件搜索用 ctrl+shift+f 并在 where 填“.”;正则需点 .* 按钮并加 (?s) 跨行;replace all 不可撤销,务必先保存或 commit。

Sublime Text 的查找替换不是“按 Ctrl+F 就完事”,真正快不快,取决于你用对了哪个快捷键、开了哪个模式、填没填对 Where 路径——错一个,就可能搜不到、替错了、或者只改了当前文件却以为改了全项目。
Ctrl+F 和 Ctrl+H 只作用于当前文件,别指望它们跨标签页
很多人输完词按 Ctrl+F,跳了几下发现只在当前文件里转圈,换到另一个打开的文件还得重输。这是因为 Ctrl+F 和 Ctrl+H 的作用域就是当前视图(即当前文件),哪怕你打开了 30 个标签页,它们互不感知。
- 想快速定位当前文件内所有匹配位置:
Ctrl+F输入词后,按F3向下跳,Shift+F3向上跳 - 想一次性选中当前文件中所有相同词:
Alt+F3(macOS 是Ctrl+Cmd+G),进入多光标编辑状态,直接改 -
Ctrl+H替换时,如果文件有折叠区域(比如函数体被折叠),那些被折叠的内容默认不参与替换
跨文件全局搜索必须用 Ctrl+Shift+F,Where 填 “.” 才真搜整个项目
Ctrl+Shift+F(macOS 是 Cmd+Shift+F)是唯一能触发项目级搜索的快捷键。右键菜单里的“在文件中查找”或误点 Ctrl+F 弹出的面板,都只是假入口,点了没反应或只搜已打开文件。
-
Where输入框必须填.(一个英文点),才代表从当前项目根目录递归搜索;留空 = 只搜当前已打开的文件 - 要排除
node_modules和dist:., -node_modules/, -dist/(注意斜杠统一用/,Windows 上也一样) - 只改 TypeScript 文件?写
./src/**/*.ts, ./tests/**/*.ts,双星号**表示递归子目录,逗号分隔多个 pattern - 快捷键冲突导致
Ctrl+Shift+F失效?进Preferences → Key Bindings – User搜索ctrl+shift+f,删掉插件自定义的绑定项
正则替换不开启 .* 模式,$1 就是字面量,.* 也不会跨行
Sublime 的正则引擎是 PCRE 风格,但替换语法是自研的:$1 有效,\1 无效;. 默认不匹配换行符,.* 永远卡在单行内。
- 开启正则必须点面板左下角的
.*按钮(或按Alt+R),否则(\w+)、$1全当普通字符处理 - 想跨行匹配?在正则开头加
(?s),例如(?s)function.*?{,否则function和{分两行就找不到 - 捕获组编号从 1 开始:
(\d+)-(\d+)对应$1和$2,$0是整个匹配字符串 - 常见误操作:把
"tid":"(\d+)"替换为"tid":\1—— 这不会生效,得写成"tid":$1
Replace All 前不 commit 不保存,一按就回不去了
Sublime 不做二次确认,Replace All 是原子操作,执行后无法用 Ctrl+Z 撤销跨文件更改。
- 执行前务必先
Git commit当前工作区,或至少手动保存全部文件(Ctrl+K然后Ctrl+B) -
Where路径写错(比如填成src却忘了前面的.),可能导致只搜了子目录,漏掉关键文件 - 替换后标签页右上角出现星号(*)?说明该文件已被修改但未保存,必须手动保存,否则关掉就丢
最常被忽略的一点:正则模式下 . 不跨行是默认行为,没人提醒你加 (?s),结果明明写了 .* 却搜不到换行内容——这种问题往往卡人半小时,最后发现就差两个字符。











