ctrl+shift+f(win/linux)或cmd+shift+f(macos)是vscode中唯一触发真正全局搜索的快捷键,它直接扫描整个工作区;ctrl+f仅搜当前文件,ctrl+h和ctrl+shift+h分别用于当前文件替换和全局替换但不自动执行查找。

Ctrl+Shift+F 是唯一能触发真正全局搜索的快捷键
不是 Ctrl+F,也不是 Ctrl+H 或 Ctrl+Shift+H —— 后两者分别只作用于当前文件、或启动全局替换但不自动执行查找。真正“输入即扫整个工作区”的动作,只有 Ctrl+Shift+F(Windows/Linux)或 Cmd+Shift+F(macOS)这一条路径。
常见错误现象:按完快捷键后顶部显示“在当前文件中查找”(灰色文档图标),结果搜半天没反应。这不是 bug,是 VSCode 没进入全局模式,它安静地只扫你正在编辑的那个标签页。
- 点搜索面板右上角
⋯菜单 → 勾选「在文件中查找」 - 或者再按一次
Ctrl+Shift+F,强制重置为全局模式 - 确认输入框左侧图标是蓝色文件夹,不是灰色文档
搜不到 node_modules 或 src/api?search.exclude 在静默拦截
VSCode 默认跳过 node_modules、.git、dist 等目录,靠 search.exclude 控制。这个配置不报错、不提示,只默默过滤——你搜不到,往往就卡在这儿。
- 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
这是最隐蔽的坑:你填好替换内容、点了「全部替换」,结果文件内容纹丝不动。原因有两个——
- VSCode 的
Replace All按钮只作用于当前已高亮的匹配项,不是实时扫描;必须先手动点「Find All」(或回车),等下方列出所有匹配行,再点替换 - 替换操作不会自动保存文件;改完后需手动
Ctrl+S,或打开设置启用files.autoSave(设为afterDelay或onFocusChange) - 如果搜索范围太大(比如没限定
files to include),VSCode 可能因性能限制跳过部分文件,尤其在未保存的临时文件或编码非 UTF-8 的文件中
复杂点在于:这些行为没有视觉反馈,失败是静默的。最容易被忽略的是「Find All」这一步——很多人以为点了替换就等于扫完了,其实只是对当前缓存结果做操作。











