必须开启regex模式(点击.*图标或按alt+r),否则 仅作字面字符;跨平台换行需用[ ]+匹配,且替换框中 才生效为换行符。

VSCode里用
替换换行符必须开Regex模式
不点那个.*图标,
就只是两个普通字符,不会被识别为换行符。打开查找替换面板(Ctrl+H),先点击右侧的.*按钮启用正则表达式,否则所有换行相关操作都无效。
常见错误现象:输完
按“全部替换”没反应,或替换了但内容变成字面的“
”字符串——基本就是Regex没开。
- Windows用户尤其容易踩坑:文件里实际是
,只搜会漏掉一部分 - 想一网打尽,查找框直接用
[ ]+,它能同时匹配、和<code> - 如果只想处理已打开的文件,
Ctrl+H即可;要改整个项目,必须用Ctrl+Shift+H进全局替换面板
全局替换时
在替换框里才真正起作用
在查找框中输入
是匹配换行,在替换框中输入
才是插入换行——这是两件事,不能反。
比如要把逗号批量换成换行,查找填,(Regex开,但逗号无特殊含义,不用转义),替换填
;如果想在逗号前加换行,就填
,。
- 替换框中
永远代表LF换行符,不管源文件原先是CRLF还是LF - 想插制表符用
,插反斜杠用\,插美元符号用$ - 若替换后内容没保存,编辑器标题栏会出现●,务必手动
Ctrl+S,或提前开启Auto Save
批量转CRLF→LF别只靠VSCode界面操作
VSCode的替换功能本质是文本编辑,它不会修改文件底层的行尾序列元数据;Git或脚本执行时报错,往往是因为文件仍存CRLF,而VSCode只是把显示效果“看起来像LF”了。
真正可靠的跨平台换行统一,得靠外部工具或配置驱动:
- 设
"files.eol": " "到工作区.vscode/settings.json,新文件自动用LF - 终端跑
find . -type f -exec dos2unix {} ;,一步到位清理整个目录 - Git用户应配
.gitattributes:写* text=auto eol=lf,让Git自动标准化
多行替换时.默认不跨行,得手动开dotAll
比如你想把console.log("a");和下一行console.log("b");一起替换成一个块,写console.log("a");
console.log("b");太脆弱;更常见的是想用console.log("a");[sS]*console.log("b");——但[sS]啰嗦,.又默认不认换行。
解决方法很简单:在全局搜索面板(Ctrl+Shift+F)里,点一下.*按钮旁的.
小图标(VSCode 1.89+叫“match newlines”),等效于启用dotAll模式,此时.*就能跨行匹配了。
这个开关藏得深,且只在全局搜索面板生效,Ctrl+H里没有——所以做跨行查找时,千万别只用局部替换面板。











