ctrl+shift+f(windows/linux)或cmd+shift+f(macos)是vscode唯一全局搜索快捷键,作用于当前工作区而非全盘扫描,需确保已打开文件夹、面板为“在文件中查找”、图标为蓝色文件夹,且排除规则未误拦。

Ctrl+Shift+F 打开的是全局搜索,不是目录限定搜索
VSCode 的 Ctrl+Shift+F(macOS 为 Cmd+Shift+F)默认作用于整个工作区,**不会自动限制到某个子目录**。如果你只希望在 src/components 或 packages/ui 这类路径下替换,必须手动指定范围——否则它可能扫到 node_modules、dist 甚至配置文件,导致误改或卡顿。
在“包含文件”框里填对 glob 模式才能真正限定目录
打开搜索面板后,关键操作在底部的 files to include 输入框。这里不接受绝对路径,只认 glob 语法:
-
src/components/**/*.ts:匹配src/components下所有层级的 TypeScript 文件 -
{src,tests}/**/*.js:同时覆盖src和tests目录下的 JS 文件 -
packages/*/src/**/*.{ts,tsx}:适用于 monorepo 中多个包的源码目录 - 错误写法:
/home/user/project/src/components(绝对路径无效)、src/components/(缺少**/*.ext,不匹配任何文件)
如果留空,VSCode 就按默认规则扫描全部文件;哪怕你当前正编辑 src/components/Button.tsx,也不代表搜索会自动局限于此目录。
排除目录比包含更常用,但二者可叠加使用
有时你想“在 src 下替换,但跳过 src/generated”,这时要同时用 files to include 和 files to exclude:
-
files to include填src/**/*.ts -
files to exclude填src/generated/**或**/mocks/**
注意:search.exclude 配置(如 "**/dist": true)是全局生效的,会干扰你的临时限定;若发现范围异常,先点搜索面板右上角 ⋯ → 取消勾选 使用排除设置,再单独用 files to exclude 控制。
替换前务必确认工作区根目录和状态栏路径
即使你填了 src/components/**/*.ts,如果 VSCode 底部状态栏显示 No folder opened 或只显示单个文件名(如 index.html),那所有 glob 都不会生效——因为根本没有工作区上下文。
- 必须通过
File → Open Folder…打开项目顶层文件夹(如my-app/),而非只打开某个文件 - 多根工作区(
.code-workspace)也支持,但需确认所有文件夹图标旁无黄色感叹号(表示加载失败) - 右下角状态栏显示的路径,就是 VSCode 实际认定的“根目录”,所有 glob 都基于它解析
这个细节最容易被忽略:路径写得再准,根没设对,就等于在空房间里找钥匙。











