ctrl+shift+h(windows/linux)或cmd+shift+h(macos)是vs code全局替换快捷键,打开即带查找+替换双框,默认作用于整个工作区;限定文件需在“files to include”填*.css等有效模式,正则替换用$1而非\1,replace all前须先点find all,且务必确认files to include已生效。

Ctrl+Shift+H 是全局替换入口,不是 Ctrl+Shift+F
很多人误用 Ctrl+Shift+F(全局搜索)来尝试替换,结果只能查不能换——这个快捷键只打开搜索视图,不带替换框。真正触发「在文件中替换」的快捷键是 Ctrl+Shift+H(Windows/Linux)或 Cmd+Shift+H(macOS)。它一打开就是查找+替换双输入框,且默认作用范围是整个工作区。
限定 .css、.ts、.php 等后缀必须填在 “files to include” 里
VS Code 不会自动识别你“想改 CSS 文件”这种意图,必须手动指定。关键操作在替换面板下方的 files to include 输入框:
- 填
*.css匹配当前工作区所有 CSS 文件(含子目录) - 填
src/**/*.ts只扫src下所有层级的 TypeScript 文件 - 填
{api,utils}/**/*.js同时限定多个目录和后缀 - 别写
.css或css——它们无效;也别漏掉星号,*.ts≠.ts
正则替换时 $1 能用,但 \1 会失效
启用 .* 按钮后,捕获组在替换字段中必须用 、 引用。常见错误包括:
- 正则写了
class="(\w+)",替换却填className="\1"→ 实际输出字面量\1,不是捕获内容 - 用了非捕获组
(?:prefix)(\w+),还指望$1是 prefix 后面那个词——其实没错,$1确实指向(\w+),但新手常误以为(?:)也占编号 - 想字面输出美元符号,比如替换为
price: $100,得写成price: $$100,否则$1会被解析为捕获组引用
全部替换前必须先按 Enter 或点 Find All
Replace All 按钮不会重新扫描,它只批量处理当前已高亮的匹配项。如果没手动触发查找,面板可能显示 “No results”,点了也白点。容易被忽略的细节:
- 输完查找内容后,务必按
Enter或点击面板右上角的Find All按钮 - 结果列表为空时,检查是否误开了
.(跨行匹配)按钮——它会让.匹配换行符,常导致正则意外失败 - 若提示
Too many results,不是报错,是 VS Code 主动限流(默认上限约 10,000 行),此时必须收紧files to include或加更具体的正则锚点(如^import)
最常被跳过的动作是:没确认 files to include 已生效就点 Replace All,结果改了 node_modules 里的文件——因为默认范围是整个工作区,而 files to include 是唯一能关掉它的开关。











