Ctrl+Shift+F(Windows/Linux)或Cmd+Shift+F(macOS)是唯一真正全局搜索快捷键;搜不到主因是面板未切至“在文件中查找”模式、search.exclude默认过滤node_modules等目录、正则替换须用$1而非\1、替换后需手动保存。

Ctrl+Shift+F(Windows/Linux)或 Cmd+Shift+F(macOS)是唯一能触发真正全局搜索的快捷键,不是 Ctrl+F ——后者只搜当前打开的文件,跟项目结构完全无关。
为什么按了 Ctrl+Shift+F 还是搜不到?先看顶部是不是“在文件中查找”
很多人输完词回车没结果,是因为面板顶部显示的是“在当前文件中查找”(灰色文档图标),它根本没扫描其他文件。这个状态不报错,只安静地搜你当前编辑的那个标签页——而那页很可能压根没匹配项。
- 点搜索面板右上角的 ⋯ 菜单 → 勾选「在文件中查找」
- 或者再按一次
Ctrl+Shift+F,强制重置为全局模式 - 确认输入框左侧图标是蓝色文件夹,不是灰色文档
- 大项目首次搜索会延迟 1–2 秒,右下角显示「搜索中…」时别急着重输
搜不到 node_modules 或 src/api?search.exclude 在拦路
VSCode 默认跳过 node_modules、.git、dist 等目录,靠 search.exclude 控制。这不是 bug,是默认配置——但没人告诉你它正在悄悄过滤。
- VSCode 1.118 点搜索面板右上角 ⋯ → 展开高级选项 → 清空
files to exclude输入框,或改成!**/node_modules/**显式包含 - 取消勾选「Use Exclude Settings and Ignore Files」,否则
.gitignore和settings.json里的search.exclude仍生效 - 想只搜源码?在
files to include填src/**/*.{js,ts},通配符和.gitignore规则一致 - 注意:只填
node_modules或node_modules/**无效;必须用**/node_modules/**才能匹配所有层级
正则替换写 \1 没效果?VSCode 只认 $1
VSCode 使用 JavaScript 正则引擎,捕获组引用必须用 $1、$2,写成 \1 或 ${1} 都不会触发替换——界面不报错,只是原样保留。
- 开启正则(点
.*图标)后,查找class="([^"]+) primary",替换填class="$1 is-primary",不是class="\1 is-primary" -
$后必须紧跟数字,$1abc会被解释为变量$1加字符串abc;要字面量输出$1,得写成$$1 - 中文括号、全角符号、未转义的点号
.或斜杠/会让正则静默失效,建议先关掉.*确认普通文本能搜到,再逐步加正则
替换了但文件没变?你只改了内存,没写入磁盘
VSCode 的「Replace All」默认只修改编辑器内存中的内容,不会自动保存到文件系统。即使标题栏出现 ● 圆点,也得手动 Ctrl+S 才真正落盘。更隐蔽的是:如果你没打开过那个文件,它甚至根本不会出现。
- 批量替换前,先检查是否已打开目标文件;没打开的文件不会出现在编辑器中,也就无法被保存
- 右下角若显示
Read-only,替换按钮会灰掉,必须解除只读或用管理员权限重启 VSCode - 对大量文件执行替换后,务必逐个检查并保存,或使用命令面板运行
File: Save All
真正卡住新手的,往往不是功能不会用,而是状态没切对、过滤没关掉、替换没保存——这三个地方一漏,搜索就变成“搜得到但看不见,替得了但留不下”。


















