Ctrl+Shift+H 默认打开全局替换面板,但需确保聚焦编辑器、启用“在文件中查找”、正确设置包含/排除文件及正则替换语法(如用$1而非),并先执行“查找全部”再替换。

Ctrl+Shift+H 打开的是全局替换,不是搜索面板
很多人按 Ctrl+Shift+H 后发现只在当前文件里找,或者面板没反应——这通常是因为它卡在了「当前文件」模式。VS Code 的 Ctrl+Shift+H(Windows/Linux)或 Cmd+Shift+H(macOS)默认就是「在文件中替换」,但右上角若显示灰色文档图标,说明它没真正切到工作区范围。解决方法很简单:Ctrl+Shift+H 再按一次,或点面板右上角 ⋯ → 勾选「在文件中查找」。
另一个常见卡点:光标不在编辑器内(比如正聚焦在终端、调试控制台或输出面板),快捷键会完全失效。先点一下代码编辑区再试。
限定 .ts 或 .css 文件必须填 files to include
想只改 TypeScript 文件?别只输 console.log 就点全部替换——默认会扫整个工作区,包括 node_modules 和 dist。必须手动在「包含文件」框里填 *.ts;更稳妥写法是 src/**/*.ts,避免误触配置或测试文件。
同理,改 CSS 时填 *.css,但要注意:如果项目里有 .module.css 或 .scss,得改成 *.css,*.scss 或用 **/*.css 配合排除规则。
- 错误示范:
css(匹配所有含 css 字符串的路径,比如access.js) - 正确写法:
*.css或**/*.css - 排除干扰:
!node_modules/**或!dist/**填在「排除文件」框里
正则替换时 $1 能用, 会被当普通文本
启用 .* 按钮后,搜索字段里写 imports+(w+)s+froms+['"](.+?)['"] 是没问题的,但替换字段里必须写 import from ""。写成 或 ,VS Code 不识别,直接当字面字符串输出,结果变成 import from ""。
还有几个容易翻车的点:
-
$在替换字段里是特殊字符,要输出字面$abc,得写成$$abc - 想匹配字面点号
.,搜索时得写.;想匹配字面反斜杠,得写\ - 跨行匹配要小心:点一下
.按钮(跨行匹配)会让.匹配换行符,多数场景不需要,开了反而导致意外匹配
全字匹配优先用 AaBb 按钮,别硬套
想把 foo 替成 bar,但不想动 foobar 或 myfoo?最省事是点查找框旁的 AaBb 按钮(全字匹配),不用写正则。它等价于自动加 边界,但更稳定——foo 在某些 Unicode 或连字符场景下可能失效,而按钮逻辑是 VS Code 内置词边界判断,兼容性更好。
只有当你需要混合条件时才上正则,比如「开头是 const 、后面紧跟单词、且不以 Config 结尾」,这时候才手动写 consts+(w+)(?!Config) 这类复杂表达式。
最后提醒一句:VS Code 的「全部替换」只作用于当前已高亮的匹配项,不是实时扫描。所以务必先点「查找全部」(Find All),等下方列表刷出来、你确认过内容再点「全部替换」。漏这步,大概率改不全。


















