$只匹配每行末尾而非文件末尾,故用$替换会在每行后添加内容;要真正在文件末尾追加一行,需手动换行输入、ctrl+a+end定位,或用nppexec脚本。

Notepad++ 不能用 $ 批量在「整个文件末尾」追加内容——它只匹配「每行末尾」。真要往文件最底部加一行,得手动或换方法。
为什么 $ 替换不是往文件末尾加内容
$ 是正则里的「行尾锚点」,它在 Notepad++ 中匹配的是每一行的结尾位置(即换行符之前),不是整个文档的最后。所以你填 $ → // end,结果是每行后面都加了 // end,而不是只在最后一行之后加一次。
- 想给整个文件末尾加一行(比如加
# EOF),$不管用 - 想给每行末尾加符号(如逗号、分号),
$才是正确选择 - 误用
$去“加文件尾”,会得到 N 个重复的尾巴,而不是一个
真正往文件末尾追加一行的三种可靠做法
Notepad++ 没有内置“追加到文件末尾”的一键命令,但有三个稳定路径:
- 光标移到最后一行末尾,按
Enter换一行,再输入内容(适合偶尔操作) - 用「编辑 → 选择全部」
Ctrl+A,再按End键跳到文档末尾,输入内容(比手动翻页快) - 如果要自动化(比如处理多个文件),配合 NppExec 插件执行脚本:
sci_send_msg 2005 "text_to_append\r\n"(需提前安装插件并启用)
$ 在行尾追加时最容易踩的三个坑
即使目标只是每行末尾加内容,$ 也常因设置错导致失效或格式错乱:
- 没勾「正则表达式」——
$当普通字符处理,完全不匹配 - 误勾「匹配换行符」——
$只匹配\r\n或\n前的位置,替换后容易插入空行 - 文件混用换行符(比如 Git 拉下来的
\n和本地编辑存的\r\n)——部分行被跳过;先用「编辑 → 文档格式转换 → 转为 UNIX 格式」统一再操作
想只给非空行末尾加内容,正则怎么写
空行就是只有换行符的行。^.*$ 能覆盖所有含至少一个非换行符的行(包括单字符行),但必须确保「. 匹配换行符」未勾选,否则 . 会吞掉换行符,整篇变一行。
- 查找目标:
^.*$ - 替换为:
$0, // added($0表示原行全文) - 如果还要跳过纯空白行(含空格、Tab),用
^[^\r\n]*\S[^\r\n]*$,但多数情况先「编辑 → 删除空白行」更直接
真正麻烦的不是正则本身,而是混合编码(比如 GBK 文件里带 UTF-8 BOM)或自动换行开启状态下视觉光标和物理光标错位——这些会让 $ 看似失效,其实只是编辑器状态干扰了定位。











