VS Code 全局搜索替换无需插件,快捷键 Ctrl+Shift+H(Win/Linux)或 Cmd+Shift+H(macOS)进入替换视图;点击搜索框右侧 .* 图标启用正则匹配,Aa 切换大小写敏感,\ 启用全字匹配,范围可调为当前文件或文件夹。
vs code 的搜索和替换本身不依赖插件,但默认开启正则模式需要手动勾选——很多人搜不到内容,只是因为 .* 写对了,却没点那个 .* 按钮。
怎么打开全局搜索并启用正则匹配
快捷键 Ctrl+Shift+H(Windows/Linux)或 Cmd+Shift+H(macOS)直接进入「替换」视图,左侧是搜索框,右侧是替换框。关键操作在搜索框右侧:
- 点击
.*图标(正则模式开关),它变蓝表示已启用 - 点击
Aa图标可切换大小写敏感 - 点击
\图标可启用“全字匹配”(等价于正则中的\bword\b) - 搜索范围默认为当前工作区,可点击右上角文件夹图标调整为“当前文件”或“选定文件夹”
常见正则写法与对应场景
VS Code 使用 JavaScript 风格正则引擎(ECMAScript),不支持 \K、(? 等 PCRE 特性,但基础能力足够覆盖 90% 的重构需求:
- 匹配所有注释行:
^\s*//.*$(注意开头^和结尾$在多行模式下有效) - 匹配带引号的字符串(单/双/反引号):
['"`](.*?)['"`],记得勾选.按钮(即“跨行匹配”)才能捕获换行符 - 替换 import 路径:
import\s+.*?\s+from\s+['"](.+?)['"]→ 替换为import $1 from '$1',其中$1是第一个捕获组 - 清除空行:
^\s*$\n(末尾加\n才能真正删掉整行,否则只删空白字符)
替换时容易踩的坑
正则替换不是“写完就跑”,VS Code 会严格按字面执行,几个高频翻车点:
-
$在替换字段里是特殊字符,要输出字面量$得写成$$ - 捕获组编号从
$1开始,没有$0;如果正则里用了非捕获组(?:...),它不占编号 - 搜索框里写
\d+没问题,但替换成$1前必须确保正则里有(\d+)这样的括号捕获 - 批量替换前务必先点
Enter或Find All,确认高亮结果符合预期——VS Code 不提供预览 diff,误操作无法撤回(除非你开了自动保存且 Git 已跟踪)
性能与大文件注意事项
正则本身无性能限制,但 VS Code 对超大文件(>50MB)或深度嵌套正则(如 (a+)+)会主动降级或中断:
- 若搜索框右下角显示
Too many results,说明匹配项超过默认阈值(约 10,000 行),可先缩小搜索范围(比如限定文件后缀*.ts) - 避免在未限定路径时用
.*开头的正则(如.*error.*),它会强制扫描全部文本,卡顿明显 - 搜索时按
Alt+Enter可快速选中所有匹配项,适合手动检查而非替换
正则不是万能钥匙,但 VS Code 的实现足够干净利落——真正麻烦的从来不是语法,而是你忘了关大小写开关,或者把 $1 写成了 \1。










