VSCode正则替换需手动开启(点.按钮或Alt/Option+R),否则d+等按字面处理;删空行用^s$,函数加日志用(w+)(([^)]*))→console.log('$1'); $1($2),import路径改写用froms+['"](./1+)['"]→from '$1.ts';注意跨行需显式 、转义括号、替换中反斜杠需双写\。'" ↩

VSCode 的替换框里正则怎么开
默认关闭,必须手动点开 .* 按钮(在搜索/替换输入框右侧),或者按快捷键 Alt+R(Windows/Linux)或 Option+R(macOS)。没点这个,写再多 d+ 或 ^.*$ 都当普通字符串处理,不会匹配。
常见替换场景与对应正则写法
实际用得多的不是语法大全,而是几个高频模式:
- 删空行:
^s*$→ 替换为空(注意勾选Match case一般不用,但Match whole word要关掉) - 给所有函数调用加日志:
(w+)(([^)]*))→ 替换为console.log('$1'); $1($2)(注意括号要转义,捕获组用$1、$2引用) - 批量改 import 路径:
froms+['"](./[^'"]+)['"]→ 替换为from '$1.ts'(s+匹配空白,[^'"]+防止跨引号匹配)
容易踩的坑:贪婪 vs 懒惰、换行、转义
VSCode 默认用 JavaScript 正则引擎,不支持 [sS] 这种写法跨行匹配——它根本不会匹配换行符。想匹配多行内容,得显式加上
:
- 错误写法:
function.*?{.*?}(.不含换行,直接失效) - 正确写法:
function[^{]*{[sS]*?}或更稳的function[^{]*{ (?:[^}]* )*[^}]*} -
.、(、)等符号必须转义,否则匹配字面量;但+、?、*在替换字符串里不是正则,只是普通字符,不用转义 - 反斜杠在替换字段里是字面量,要写两个
\才能变成一个(比如想插入换行,得写\n,而不是)
大文件或全项目替换前必须确认的三件事
VSCode 的全局替换(Ctrl+Shift+H)对性能敏感,尤其开启正则后:
- 先在单个文件里试好表达式,用
Find in Files(Ctrl+Shift+F)预览匹配结果,别一上来就点Replace All in Files - 检查是否误开了
files to include或files to exclude,比如写了**/*.ts却漏了.js,或 exclude 里有node_modules但没生效(路径区分大小写,且需用正斜杠) - 如果正则里用了
^或$,注意它们匹配的是每行首尾,不是整个文件首尾;想锚定文件开头得用^+ 手动限定范围(比如先打开目标文件夹再操作)
最麻烦的不是写不对,是替错了还找不到备份——VSCode 不自动存替换前快照,改完立刻 Ctrl+Z 只在当前编辑器有效,跨文件就没了。


















