VSCode正则替换每行加双引号的正确写法是查找^(.*)$、替换"$1";需启用正则模式且不勾选“.匹配换行”;处理空行用^(?!\s*$)(.\*)$;注意文件末尾换行符影响匹配。

VSCode 正则替换给每行加双引号:核心是匹配整行内容
直接用 ^.*$ 匹配每一行(不含换行符),替换为 "$1" 会失败——因为没捕获。正确做法是加括号捕获整行:^(.*)$,再用 "$1" 替换。注意 ^ 和 $ 在 VSCode 中默认匹配行首/行尾(不是整个字符串首尾),前提是勾选了「Use Regular Expression」和「Match Case」旁边的「. matches newline」不要勾选(否则 .* 会吞掉换行)。
- 确保启用了正则模式(右下角图标显示
.*) - 输入查找:
^(.*)$ - 输入替换:
"$1" - 按
Ctrl+H(Windows/Linux)或Cmd+H(macOS),选中目标文本后点「Replace All」
处理空行或只含空白字符的行:避免变成 ""
如果原文有空行,^(.*)$ 会匹配到空字符串,结果就是 ""。这不是错,但常不符合预期。想跳过空行或纯空白行,得加负向断言:^(?!\s*$)(.*)$。其中 (?!\s*$) 表示“这一行不能是结尾前全是空白字符”。这样空行和只有空格、制表符的行就完全不参与替换。
- 查找:
^(?!\s*$)(.*)$ - 替换仍为:
"$1" -
\s包含空格、\t、\r、\n,但因^/$是行边界,这里\s*实际只匹配本行内的空白 - 如果想保留原空白缩进(比如代码里某行是
hello),这个写法会把缩进也包进$1,引号会套在缩进外:" hello"—— 这通常是想要的
单引号、反引号或拼接前缀/后缀:改替换字段就行
VSCode 的替换字段支持 $1、$2 等捕获组,也支持字面量。想加单引号?替换写 '$1';想加反引号(如模板字符串)?写 `$1`;想统一补上 const x = 前缀?查找仍用 ^(?!\s*$)(.*)$,替换写 const x = "$1";。注意:替换字段里不能用正则语法,所有内容都当字面量处理,$ 开头的只有 $1、$&(全匹配)、$`(左边文本)、$'(右边文本)这几种有效。
-
$&是整行原始内容,等价于$1当你只有一组捕获时 - 如果查找里用了多个括号,比如
^(\w+)\s+(.*)$,就能分别用$1和$2提取第一词和后续内容 - 替换字段中普通
$字符要写成$$,否则会被误解析
跨平台换行符和结尾无换行:真实项目里容易漏的细节
VSCode 内部按当前文件的换行格式(\n 或 \r\n)处理 ^/$。但如果文件末尾没有换行符(EOF without newline),最后一行可能不被 ^.*$ 匹配到——因为 $ 要求后面是行尾或文件尾,而某些正则引擎对 EOF 处理不一致。稳妥做法是额外加一个或条件:^(.*?)(?:\r\n|\r|\n|$),但太重。更简单:确保文件以换行结尾(VSCode 状态栏会提示「LF」或「CRLF」,点它可转换),或手动在最后加一行再删——实际批量处理时,几乎没人真去处理 EOF 边界,因为影响仅限最后一行。
- 检查状态栏右下角换行符类型,统一为
LF可减少歧义 - 如果替换后发现最后一行没加引号,八成是文件没换行结尾,补一个再试
- 别用
[\s\S]*代替.*—— VSCode 不支持[\s\S]跨行匹配,且会破坏^/$行锚定行为


















