vscode正则需手动启用:点击.图标或快捷键alt+r/cmd+option+r;替换仅支持$1语法,不支持\1或${1};跨行匹配须同时开启.和↵按钮;replace all前须确认范围、上下文及排除规则。

正则模式没开,\d+ 就是字面量
VSCode 默认关闭正则,你输 \d+ 只会匹配字符串 "\d+",不是数字。必须手动点搜索框右上角的 .* 图标,或按 Alt+R(Win/Linux)/Cmd+Option+R(macOS),右下角出现 Regex 标签才算生效。常见误判:搜 console\.log 没结果,其实是点错了——要写 console\.log(点需转义),而不是 console.log(那会匹配 consolexlog)。大小写开关 Aa 和全字匹配 \ 也得看状态,别默认开着。
$1 是唯一合法捕获组引用,\1 和 ${1} 都无效
VSCode 用 JavaScript 正则引擎,替换时只认 、 这种写法。 会被当字面量输出, 直接报错或静默忽略。比如想把 import { foo } from 'bar' 改成 import foo from 'bar',查找写 import\s+\{\s*(\w+)\s*\}\s+from,替换必须写 import from,多一个括号、少一个 $ 都白搭。注意:非捕获组 (?:...) 不占编号,别指望它影响 的序号。
跨行匹配要两步:开 .* + 勾选 ↵ 按钮
.* 开启后,. 默认仍不匹配换行符,所以 foo.*bar 在多行里会断在第一行末尾。必须再点搜索框下方的 ↵(“匹配换行符”)按钮,[\s\S]* 或 (.|\n)* 才真正有效。这个 ↵ 按钮只在全局搜索(Ctrl+Shift+F)中起作用,Ctrl+F 当前文件搜索里它压根不显示。典型场景:匹配 JSX 属性含换行:className="[\s\S]*?";清空多行注释:/\*[\s\S]*?\*/。别用无锚点的 [\s\S]*error,大文件容易卡死或触发 Too many results。
替换前必须验证三件事:范围、上下文、副作用
Replace All 是直接写内存,没有预览 diff,点了就改,撤回只能靠 Ctrl+Z(且仅限当前会话)。务必先做这三步:
- 点
Enter或Find in Files,确认左侧结果树只包含你预期的文件和位置 - 逐个点开匹配项旁的 ▶,展开上下文,检查前后几行——比如别把
// console.log('user')里的user也替了 - 核对
files to include和files to exclude:默认排除node_modules,若真要搜它,得清空files to exclude字段或填!node_modules/**
(\w+)-(\w+),而是你忘了 files to include 里漏写了 **/*.ts,结果把 .md 里的示例代码也干掉了。











