ctrl+shift+f(windows/linux)或cmd+shift+f(macos)是vscode工作区级全文搜索唯一入口;ctrl+f仅限当前文件,全局搜索需确认左侧图标为蓝色文件夹、清空search.exclude、关闭排除设置、正则用$1而非\1、替换后须手动保存。

Ctrl+Shift+F 是唯一入口,不是 Ctrl+F
按 Ctrl+Shift+F(Windows/Linux)或 Cmd+Shift+F(macOS)才能真正触发工作区级全文搜索;Ctrl+F 只搜当前打开的文件,哪怕你开了 50 个标签页,它也只扫那个正在编辑的文件。很多人输完词没结果,第一反应是“引擎坏了”,其实是面板顶部显示着“在当前文件中查找”(灰色文档图标),根本没进全局模式。
解决方法很简单:
- 点搜索面板右上角
⋯菜单 → 勾选「在文件中查找」 - 或者再按一次
Ctrl+Shift+F,强制重置为全局状态 - 确认输入框左侧图标是蓝色文件夹,不是灰色文档
搜不到 node_modules 或 .vscode?检查 search.exclude
VSCode 默认跳过 node_modules、.git、dist、.vscode 等目录,靠 search.exclude 控制——这不是 bug,是默认行为,但不会提示你它正在过滤。
想搜这些目录里的内容,必须显式干预:
- 点搜索面板右上角
⋯→ 展开「高级选项」→ 清空files to exclude输入框,或填入!**/node_modules/**(注意开头的!表示“包含”) - 取消勾选「Use Exclude Settings and Ignore Files」,否则
.gitignore和settings.json里的排除规则仍生效 - 搜
.vscode/settings.json时,files to include填.vscode/*.json比填.vscode更稳,避免路径解析歧义
正则替换写 \1 没效果?VSCode 只认 $1
VSCode 用的是 JavaScript 正则引擎,捕获组引用必须写成 $1、$2,写 \1 或 ${1} 都不会替换,界面也不报错,只是原样保留。
实操要点:
- 开启正则(点
.*图标)后,查找class="([^"]+) primary",替换必须填class="$1 is-primary",不能写\1 -
$1abc会被解释为变量$1加字符串abc;要字面输出$1,得写成$$1 - 中文括号、全角空格、未转义的
.或/会让正则静默失效——先关掉.*确认普通文本能搜到,再逐步加正则
替换了但文件没变?你没保存
Replace All 只改内存,不写磁盘。即使标题栏出现 ● 圆点,也得手动按 Ctrl+S 才真正落盘。更隐蔽的是:如果某个匹配文件你从未打开过,它甚至不会出现在编辑器里,也就没有保存入口。
安全做法:
- 别一上来就点
Replace in Files,先点单个Replace看效果 - 替换前留意左侧文件树里是否已高亮目标文件——没高亮说明它被
search.exclude拦了,或根本不在当前工作区 - 多行替换要在替换框里按
Shift+Enter换行,不是Enter











