ctrl+shift+f(windows/linux)或cmd+shift+f(macos)是唯一触发vscode全局搜索的快捷键;ctrl+f仅限当前文件,搜索面板顶部须为蓝色文件夹图标“在文件中查找”,且需检查search.exclude配置与手动保存替换结果。

Ctrl+Shift+F 是唯一能触发全局搜索的快捷键,别用 Ctrl+F 替代
团队里新人常按 Ctrl+F 后抱怨“搜不到”,其实它只在当前打开的文件里找——和项目结构完全无关。真正全局搜索必须用 Ctrl+Shift+F(Windows/Linux)或 Cmd+Shift+F(macOS)。这个组合键不能被替换成其他键,否则会破坏协作一致性:比如有人把全局搜索改成 Ctrl+Alt+F,别人接手代码时根本找不到入口。
搜索面板顶部状态必须是「在文件中查找」,灰色文档图标=无效搜索
按完 Ctrl+Shift+F 后,先盯一眼搜索面板顶部:如果显示的是灰色文档图标(“在当前文件中查找”),那整个搜索就只是在你正在编辑的那个标签页里跑,不会扫任何其他文件。这状态不报错、不警告,只安静地返回空结果。
- 点右上角 ⋯ → 勾选「在文件中查找」
- 或再按一次
Ctrl+Shift+F,强制重置为全局模式 - 确认左侧图标是蓝色文件夹,不是灰色文档
search.exclude 默认拦掉 node_modules/.git/dist,团队需统一显式声明
VSCode 默认跳过这些目录,靠 search.exclude 控制。但这个配置藏在用户设置里,不同人本地可能开着不同的排除规则——比如 A 电脑没排除 node_modules,B 电脑却加了 **/node_modules/**,同一关键词在两人机器上搜出的结果数量差十倍。
- 团队应统一在工作区根目录的
.vscode/settings.json中写死:"search.exclude": { "**/node_modules": false, "**/dist": false, "**/.git": false } - 若真要排除某些目录,必须用完整 glob 模式:
**/node_modules/**,只写node_modules无效 - 禁用「Use Exclude Settings and Ignore Files」勾选项,否则个人
.gitignore会偷偷覆盖团队规则
正则替换必须用 $1,\1 和 ${1} 都不生效
团队做批量重构时常用正则替换,但 VSCode 用的是 JS 正则引擎,捕获组引用只认 $1。写成 \1 或 ${1} 界面不报错,只是原样保留,导致改了一堆文件却没真正替换成功。
- 开启正则(点 .* 图标)后,查找
class="([^"]+)",替换填class="$1 is-primary" -
$后必须紧跟数字;$1abc会被解释为变量$1加字符串abc;要字面量输出$1,得写成$$1 - 中文括号、全角符号、未转义的
.或/会让正则静默失效——建议先关 .* 搜纯文本,确认能命中,再逐步加正则
最易被忽略的一点:所有「Replace All」操作默认只改内存,不写磁盘。哪怕标题栏出现 ● 圆点,也得手动 Ctrl+S 才真正落盘。团队脚本化批量替换时,这点必须写进 SOP,否则有人以为改完了,实际全是假动作。











