notepad++查找换行符需切换扩展或正则模式:扩展模式下\n匹配lf,crlf需写\r\n;正则模式须勾选“.匹配换行符”;跨文件替换须填绝对路径和正确过滤器;正则替换用$1等反向引用保留内容;编码须与文件一致防乱码。

查找时匹配换行符为什么没反应
Notepad++ 默认的「查找」模式不识别换行符,\n 或 \r\n 直接输入会被当普通字符处理,根本搜不到。必须先切到「扩展模式」或「正则模式」。
- 点开「查找」对话框 → 右下角勾选
扩展(\n,\r,\t,\0,\x...):这时\n表示换行,\t表示制表符,\r表示回车 - 如果要跨行匹配更复杂的结构(比如“以 class 开头、中间有换行、结尾是大括号”),就得用
正则表达式模式,并开启. 匹配换行符选项(在查找框下方勾选) - 常见坑:
扩展模式下\n仅匹配 LF(\x0A),Windows 文件若用 CRLF(\r\n)结尾,得写成\r\n;而正则模式下默认不跨行,忘了勾. 匹配换行符就永远找不到多行内容
批量替换所有文件时路径被忽略
用「在文件中查找」功能(Ctrl+Shift+F)批量替换时,Notepad++ 不会自动扫描子目录,也不会读取你当前打开的文件列表——它只认你手动填的「目录」和「过滤器」。
- 「目录」必须填绝对路径,比如
C:\project\src,不能写./src或留空 - 「文件过滤器」要明确,比如
*.js;*.ts,漏掉分号或写成*.js, *.ts就不生效 - 如果目标文件没在磁盘上(比如只是新建未保存的标签页),它压根不会参与替换——这个行为常被误以为是 bug
- 替换前务必点
查找全部预览命中结果,避免误操作覆盖无关文件
正则替换里怎么保留部分内容
用 正则表达式 替换时,想把匹配中的某段提取出来再复用,靠的是「捕获组」+「反向引用」,不是直接写变量名。
- 查找框写
(\d{4})-(\d{2})-(\d{2}),就能把日期里的年、月、日分别捕获到$1、$2、$3 - 替换框写
$3/$2/$1,就把2023-12-25变成25/12/2023 - 注意:
$0表示整个匹配项,$1是第一个()里的内容,编号按左括号出现顺序算,嵌套括号也一样 - 容易错:用
\1代替$1(旧版语法已不推荐),或在「扩展模式」下误用$1(该模式不支持反向引用)
替换后中文乱码或格式错乱
本质是编码不一致:你在 UTF-8 文件里用 GBK 编码执行替换,或者替换了 BOM 字节,都会导致显示异常。
- 操作前先看右下角状态栏显示的编码(如
UTF-8、ANSI),确保和文件实际编码一致 - 如果替换后出现 或空格变宽,大概率是编码切换了——点菜单「编码」→ 选回原始编码(比如从
ANSI切回UTF-8-BOM) - 避免在含 BOM 的 UTF-8 文件里替换开头内容,一不留神删掉
\xEF\xBB\xBF,后续编辑可能被识别为 ANSI - 批量替换多个不同编码的文件?别图省事——Notepad++ 不支持 per-file 编码设置,建议分批按编码类型操作
跨行、多文件、正则、编码,这四个点只要有一个没对齐,替换就容易出岔子。最稳妥的做法是:先小范围试,再开全局;每次改完立刻看状态栏编码和换行符标记(CR LF / LF),别等保存后才发现。










