notepad++默认普通模式下“\n”被当作字面字符而非换行符,必须切换至扩展模式(\n匹配lf、\r\n匹配crlf)或正则模式(启用“.匹配换行符”或用\r通配所有换行)。

Notepad++里为什么直接输\n搜不到换行符
因为默认的「普通模式」把 \n 当成两个普通字符——反斜杠和字母 n,根本不会触发换行匹配。哪怕你肉眼看见文本里有空行,\n 也只会去搜字面量 "n"。
必须手动切换搜索模式:扩展模式 或 正则模式。两者区别在于:
- 扩展模式下,
\n表示 LF,\r\n表示 Windows 换行,\t表示制表符——简单直接,适合基础替换 - 正则模式下,
\n仍只匹配 LF;要兼容 Unix/Windows/Mac 换行,得用\R(Notepad++ 7.9+ 支持),它能自动识别\r\n、\n、\r - 老版本(\R,强行用会失效;稳妥起见统一写
\r\n,并确认文档确实是 Windows 换行(看右下角状态栏是否显示CRLF)
怎么把多行合并成一行(去掉换行)
典型场景:日志拼接、SQL 语句压缩、JSON 行转单行。关键不是“删换行”,而是“替换成什么”——留空?加空格?加逗号?
操作步骤:
- 按
Ctrl + H打开替换框 - 查找内容填:
\r\n(扩展模式)或\R(正则模式,7.9+) - 替换为填:
(一个空格)或留空(直接粘连) - ⚠️ 如果原文有空行(即连续
\r\n\r\n),直接替换会导致多个空格堆叠;建议先单独处理空行:\r\n\r\n→\r\n,再执行主替换 - 大文件(>10MB)慎用“全部替换”,偶尔卡死或丢内容;先备份,或分批用“查找全部”预览命中行数
怎么用正则跨行匹配(比如匹配 /* ... */ 块注释)
Notepad++ 的 PCRE 引擎默认关闭单行模式(s flag),所以 .* 绝对不跨行。想跨行,必须显式写换行符,不能靠 . 碰运气。
正确写法(正则模式):
- 匹配块注释:
/\*.*?\R.*?\*/(注意中间是\R,不是.*?) - 匹配函数体(简化):
function\s+\w+\(\)\s*\{\R.*?\R\}(首尾各一个\R,避开空行干扰) - 别用
^和$定位跨行结构——它们只认单行首尾;改用上下文特征,比如\R\{或\}\R -
Ctrl + Shift + H(在文件中替换)不会继承Ctrl + Shift + F(在文件中查找)的上下文,即使你刚搜出一堆结果,也得在替换框里重新写一遍\R
替换后没变化?先盯住这三个地方
最常白忙活的原因就三个,挨个检查比重来快得多:
- 右下角状态栏是否写着
正则表达式?不是「普通」或「扩展」——错一个模式,整个正则就失效 - 开了「显示所有字符」吗?按
Ctrl + Shift + P(视图 → 显示符号 → 显示所有字符),确认换行符显示为CR LF(↵¶)还是只有LF(¶)。前者用\r\n,后者用\n - 文件是 UTF-8 with BOM 吗?BOM 有时会让
\R失效;临时另存为「UTF-8(无 BOM)」再试
换行符看着是换行,实际是编辑器、文档编码、搜索模式三者咬合的结果。少一个对不上,\R 就只是个字母 R。











