ctrl+shift+f/cmd+shift+f是唯一全局搜索快捷键,按两次可强制切回全局模式;搜不到node_modules需检查search.exclude和.gitignore;正则替换用$1而非\1;replace all不自动保存,须手动ctrl+s/cmd+s。

Ctrl+Shift+F(Windows/Linux)或 Cmd+Shift+F(macOS)是唯一真正触发全局搜索的快捷键,Ctrl+F 永远只作用于当前打开的文件,不是“简写”,是完全不同的功能。
为什么按了 Ctrl+Shift+F 却只搜当前文件?
搜索面板顶部显示“在当前文件中查找”(灰色文档图标),说明它卡在局部模式——这不是崩溃,是状态残留。VSCode 不会自动重置,也不会报错,只是安静地搜你正编辑的那一个标签页。
- 立刻解决:再按一次
Ctrl+Shift+F(Windows/Linux)或Cmd+Shift+F(macOS),强制切回全局模式 - 手动干预更稳:点搜索面板右上角 ⋯ → 勾选「在文件中查找」
- 确认左侧图标是蓝色文件夹,不是灰色文档;右下角出现「搜索中…」才代表真正在扫工作区
搜不到 node_modules 或 src/api?检查 search.exclude 和 .gitignore
VSCode 默认跳过 node_modules、.git、dist 等目录,靠 search.exclude 控制,且默认开启 search.useIgnoreFiles,会尊重项目根目录下的 .gitignore。
- 想临时包含
node_modules:在搜索面板右上角 ⋯ → 展开高级选项 → 清空files to exclude,或填!**/node_modules/** - 取消全局过滤:勾掉「Use Exclude Settings and Ignore Files」,否则
settings.json和.gitignore仍生效 - 只搜源码?在
files to include填src/**/*.{js,ts};注意node_modules单独写无效,必须用**/node_modules/**
正则替换写 \1 没效果?VSCode 只认 $1
VSCode 使用 JavaScript 正则引擎,捕获组引用必须用 $1、$2,写成 \1 或 ${1} 都不会替换——界面不提示,只是原样保留。
- 正确写法:
class="([^"]+) primary→ 替换为class="$1 is-primary" -
$后必须紧跟数字;$1abc被解释为变量$1加字符串abc;要字面输出$1,得写成$$1 - 中文括号、全角符号、未转义的
.或/会让正则静默失效;建议先关掉.*确认普通文本能搜到,再逐步加正则
替换了但文件没变?你没保存
Replace All 默认只改编辑器内存中的内容,不会自动写入磁盘。即使标题栏出现 ● 圆点,也必须手动 Ctrl+S(Windows/Linux)或 Cmd+S(macOS)才真正落盘。
- 更隐蔽的是:如果目标文件从未被打开过,它甚至根本不会出现在编辑器里——替换操作对它完全不可见
- 不确定效果?别直接点
Replace All,先点单个Replace或看左侧文件树里的高亮标记,防误改字符串字面量 - 右下角若显示
Read-only,替换按钮会灰掉,需解除只读或用管理员权限重启 VSCode
最常被忽略的其实是「状态残留」和「写入惰性」:VSCode 的搜索面板不会主动告诉你它卡在哪个模式,替换也不会主动提醒你该保存——它默认假设你清楚自己在做什么。











