Notepad++无直接“指定行号转换”功能,需结合行号定位(Ctrl+G)、列模式选中或Python脚本实现精准控制。宏录制可处理固定行但需手动跳转,Python脚本最灵活但需注意行号从0开始及换行符处理。

Notepad++ 里没有“只转换指定行”的原生菜单项
它默认的 Ctrl+U(转小写)和 Ctrl+Shift+U(转大写)只作用于当前选中文本,而非“指定行号范围”。想精准控制某几行(比如第5–8行),必须先手动选中这些行——但逐行拖选容易出错,尤其当行数多、内容长或有折叠时。
真正可靠的做法是结合行号选择 + 大小写转换,关键在“怎么快速选中指定行”:
- 把光标移到目标行首(例如第5行),按住
Shift,滚动到第8行末尾,再按End键——这样会选中第5行开头到第8行结尾的全部内容(含换行符) - 更稳妥:按
Ctrl+G打开“转到”对话框,输入5回车跳到第5行,Shift+Alt+鼠标点击第8行任意位置(启用列模式后可跨行框选) - 如果只是想处理连续空行之间的段落,可先用正则
^.*$配合“标记”功能批量高亮,再用Ctrl+Click多选所有匹配行首,最后Shift+End扩展选区
用宏录制一次性处理多段不连续的指定行
当你需要反复对固定几组行(如每次改第3、12、27行)做大小写转换,手动选太累。Notepad++ 的宏能记住操作步骤,但要注意:宏录制时的“选中行为”是绝对坐标,不是相对行号。所以必须用“行号定位”作为第一步:
- 确保“显示行号”已开启(
设置 → 首选项 → 编辑器 → 显示行号) - 开始录制宏 → 按
Ctrl+G→ 输入第一个目标行号(如3)→Enter→Home→Shift+End→Ctrl+U→ 停止录制 - 回放前,先用
Ctrl+G跳到下一行号(如12),再回放宏——不能直接连播,否则会重复操作同一行
这方法适合固定行号、操作频次高的场景,但无法全自动跳转多行。
用 Python 脚本插件实现真正的“行号列表转换”
如果你装了 Python Script 插件(通过 Plugin Admin 安装),就能写几行代码精准控制。例如转第5、10、15行的小写:
editor.replaceText(editor.getLine(4), editor.getLine(4).lower()) # 行号从0开始 editor.replaceText(editor.getLine(9), editor.getLine(9).lower()) editor.replaceText(editor.getLine(14), editor.getLine(14).lower())
注意点:
-
getLine(n)返回的是不含换行符的字符串,replaceText()需传入原始行文本(含换行符)才能准确定位,实际应配合getLineEndPosition()计算长度 - 更安全的做法是用
editor.getSelText()配合正则提取行号,但前提是先把目标行列出并选中(比如粘贴成“5,10,15”在新文档里) - Windows 下脚本路径含空格时可能报错,建议插件安装到无空格路径(如
C:\npp\plugins\PythonScript)
别忽略编码和不可见字符的影响
转换后发现某些字母没变?常见原因不是操作错,而是:
- 文件编码是
UTF-8 with BOM或ANSI,导致非 ASCII 字符(如带重音的 é、中文标点)被误判为不可转换字符 - 行尾有
\r\n和\n混用,Shift+End选区可能漏掉换行符,导致下一行首字母被意外包含进选区 - 开启了“显示所有字符”(
视图 → 显示符号 → 显示所有字符),看到·(空格)、¶(换行)后,会意识到你选中的其实比肉眼看到的多一两个字符
最稳的验证方式:转换后立即按 Ctrl+Z 撤销,打开“列模式编辑”(Alt+鼠标拖选),只框选纯文本区域再试一次。


















