ctrl+shift+f(windows/linux)或cmd+shift+f(macos)是vs code唯一全局搜索入口;ctrl+f仅限当前文件,且全局替换需先展开replace区域、正确设置路径过滤与正则语法。

Ctrl+Shift+F 是唯一全局搜索入口,不是 Ctrl+F
很多人按 Ctrl+F 想搜整个项目,结果只在当前文件里跳来跳去——Ctrl+F 永远只作用于当前编辑器标签页。真正扫工作区的只有 Ctrl+Shift+F(Windows/Linux)或 Cmd+Shift+F(macOS)。焦点必须在编辑器内,如果右下角状态栏显示 TERMINAL 或 DEBUG CONSOLE,快捷键直接失效;切回编辑器再试。
中文输入法下组合键可能被拦截,临时切英文键盘最稳妥。插件冲突虽少,但若长期异常,可进命令面板运行 Preferences: Open Keyboard Shortcuts (JSON) 查是否被自定义覆盖。
全局替换必须手动展开 Replace 区域
输完关键词按回车,VS Code 只执行搜索,不会自动进入替换流程。替换功能默认收起,得主动点搜索面板下方的 Replace 标签,或用快捷键 Alt+R(Windows/Linux)/Option+R(macOS)展开。
- 不展开就点“全部替换”,界面上根本不会出现替换按钮
- 逐个替换更安全:每个匹配项右侧都有独立
Replace按钮,适合跨文件谨慎修改 -
Replace All会跳过只读文件、未保存的临时文件,以及被排除在工作区外的路径
文件筛选框不支持嵌套通配符,但支持逗号分隔
想只改 src 下所有 .ts 文件?填 src/**.ts 或 src/**/utils/** 都无效。VS Code 的路径过滤是扁平化逻辑,真正生效的是:
-
src/**:匹配src及其所有子目录下的任意文件 -
*.vue,*.ts:逗号分隔多个扩展名,空格会被忽略 -
ext:.vue:比*.vue更明确,推荐用于 VS Code 1.85+ - 路径过滤(如
src/components/**)必须写在“文件筛选”框里,不能塞进主搜索框
误填嵌套通配符会导致筛选失效,结果扫了 node_modules 或 dist,耗时且干扰大。
正则替换中 $& 和 $$& 容易混淆
启用 .* 按钮后,替换字段里 $& 表示原样插入匹配内容,$$& 才输出字面量 $ 加原文。这是高频翻车点:
- 想给所有数字加前缀
$,搜索\d+,替换必须写$$&;写成$&会导致空替换或报错 -
$1捕获组生效的前提是括号存在且编号正确:(?:)是非捕获组,不占编号 -
$在替换字段中是特殊字符,要字面输出$abc,得写成$$abc - 别用
\1,VS Code 只认$1;写成\1就当普通文本处理
批量替换前必须手动点 Find All,否则 Replace All 只作用于当前已高亮的匹配项——这个隐式依赖,最容易被忽略。











