ctrl+shift+h(windows/linux)或 cmd+shift+h(macos)是唯一触发全局替换的快捷键;通配符须填入“files to include”框,search.exclude 优先级高于它,正则中需用 $$& 替代 $& 输出字面量$。

Ctrl+Shift+H 是唯一能触发全局替换的快捷键
别再试 Ctrl+F 或 Ctrl+H ——它们只作用于当前文件。真正跨文件批量改代码,必须用 Ctrl+Shift+H(Windows/Linux)或 Cmd+Shift+H(macOS)。这个快捷键打开的是「Replace in Files」面板,不是预览,而是直接准备写入磁盘的操作入口。
通配符只能填在 “files to include” 框里,不能塞进主搜索框
很多人输完关键词就按回车,结果扫了整个 node_modules,因为通配符没放对地方。正确做法是:
- 先输入搜索词到顶部
Find框 - 点击面板右上角的
…展开高级过滤栏 - 在
files to include输入框里填通配符,例如:src/**/*.ts、*.vue,*.jsx、**/api/** -
**/api/**会匹配所有含api的子路径(比如src/utils/apiClient),若只想限定顶层src/api,得写成src/api/** - 空格会被忽略,
*.js, *.ts和*.js,*.ts效果一样;但**/utils/**这类嵌套通配符不被识别——VSCode 只支持扁平化 glob 匹配
通配符和 search.exclude 冲突时,后者优先静默跳过
即使你在 files to include 里写了 **/*.ts,如果 search.exclude 里有 **/dist/** 或 **/node_modules/**,这些路径依然不会被扫描。常见翻车点:
- 想批量修
node_modules里的 patch 文件,却忘了检查Preferences: Open Workspace Settings (JSON)中的search.exclude - 临时绕过方式:点击搜索面板右上角
…→ 取消勾选Use Exclude Settings(仅本次生效) -
files to exclude字段可手动加例外,比如填!src/mock/**表示“排除所有,但保留 mock 目录”
正则开启后,通配符范围不变,但匹配逻辑升级
勾选 .* 按钮启用正则,不影响 files to include 的路径筛选逻辑,但它让 Find 框支持捕获组、锚点和特殊符号。关键细节:
-
$&表示整个匹配内容,$$&才输出字面量$加原文(比如想给数字前加$,搜\d+,必须替换为$$&) - 要引用括号捕获的内容,用
$1、$2,不是\1—— VSCode 只认美元符号语法 - 想匹配换行?光开
.*不够,还得点旁边的.按钮(启用 dotAll),否则.*遇到换行就停 - 全字匹配推荐用
\bword\b而非 UI 上的Aa按钮,前者更可控,尤其在正则上下文中
search.exclude 在后台悄悄拦截、还有正则里那个该写 $$& 却写了 $& 的瞬间。











