vscode全局替换必须用ctrl+shift+h(win/linux)或cmd+shift+h(macos),而非ctrl+h/cmd+option+f(仅当前文件);若无反应,常因未打开文件夹工作区、光标不在编辑器内,或未手动执行find all即点replace all。

VSCode 全局替换不能靠 Ctrl+H 或 Cmd+Option+F —— 那只是当前文件替换,真要跨文件改,必须用 Ctrl+Shift+H(Windows/Linux)或 Cmd+Shift+H(macOS)。
为什么 Ctrl+Shift+H 没反应?
常见原因不是快捷键失效,而是面板卡在「当前文件」模式:右上角显示灰色文档图标,而非文件夹图标。这不是 bug,是状态残留。
- 再按一次
Ctrl+Shift+H通常能切回工作区范围 - 或手动点右上角 ⋯ → 勾选「在文件中查找」
- 光标若落在终端、调试控制台或只读文件里,快捷键也会静默失败
- 大项目首次打开面板有 1–2 秒延迟,右下角显示「搜索中…」时别急着重输
files to include 不填就等于扫整个工作区
默认行为是无差别扫描所有文件,包括 node_modules、dist、build 目录——不仅慢,还可能误改生成代码。
- 只改 CSS?填
*.css或src/**/*.css - 只改 TypeScript?填
**/*.ts,再在files to exclude里加**/*.d.ts - 想精确到组件目录?用
src/components/**/*.{ts,tsx} - Mac 用户注意:
Cmd+Alt+F和Cmd+Option+F是同一组物理按键,但 VSCode 文档只认后者
正则替换写 $1,别写 \1
VSCode 用 JavaScript 正则引擎,捕获组引用必须用 $1、$2,\1 会被当普通字符处理,不报错但不生效。
- 启用正则前,务必点搜索框右侧的
.*图标(变蓝才算开启) -
import\s+(\w+)\s+from\s+['"](.+?)['"]→ 替换为import $1 from '$2' - 要字面输出
$abc,得写成$$abc -
(?:)是非捕获组,不占编号,别指望它生成$1
全局替换真正危险的点不在语法,而在于「Replace All」只作用于已高亮的匹配项——如果你没手动点过「Find All」,它只会扫一部分结果。预览列表里看不到的,就不会被改。











