notepad++无真正“一键排版”,smart indent仅在行尾为{、[、(或:时回车才缩进;python的def后需手动tab或ctrl+i;reindent仅重算缩进不重构代码;xml/json格式化须用xml tools插件或ctrl+shift+f。

Notepad++ 本身没有“一键排版”功能,所谓“自动缩进”只是按语法规则在换行时补空格或 Tab,不是重格式化。真要对齐杂乱代码,得组合用插件、正则和语言模式,而不是指望一个开关。
为什么按 Enter 没缩进?检查 Smart Indent 的触发条件
NppAutoIndent 插件的 Smart Indent 模式只在当前行以 {、[、( 或 : 结尾时,回车才自动缩进。它不看语言上下文,也不管 Python 的 def 或 if 后是否该缩进。
- 验证方法:输入
if (x) {回车 → 应缩进;输入int x = 1;回车 → 不缩进(正常) - Python 用户注意:
def foo():后回车不会缩进,必须手动按Tab或用快捷键Ctrl+I触发单次缩进 - 如果连
{回车都不缩进,先确认插件是否装对:DLL 必须放进%ProgramFiles%\Notepad++\plugins\NppAutoIndent\NppAutoIndent.dll,不是 plugins 根目录
整段代码缩进错乱,用 Reindent 还是手动正则?
Reindent(插件菜单里)只是按当前语言定义重新计算每行缩进量,不改结构、不重排括号、不处理换行逻辑。它适合修复粘贴后缩进全乱的 C/Java/JSON 片段,但对 Python 或混排文本效果有限。
- 更稳的做法是:先确保右下角语言模式选对(如
Python或JavaScript),再选中代码块,按Ctrl+I(手动缩进)或Ctrl+Shift+I(反向缩进) - 若缩进单位不对(比如该 4 空格却缩了 8),去
设置 → 首选项 → 编辑器 → 制表符设置,勾选替换为空格并设制表符宽度和缩进大小均为 4 - 批量删行首空格:打开
查找 → 替换(Ctrl+H),勾选正则表达式,查找^\s+,替换为空
XML/JSON 怎么真正“格式化”而不是只缩进?
内置的 Ctrl+Shift+F 对 JSON 有效,但只处理基础缩进;XML 必须靠插件——XML Tools 是唯一靠谱选择。
- 安装后重启,打开 XML 文件,点
插件 → XML Tools → Pretty Print (with indentation) - 若报错“not well-formed”,说明 XML 有语法错误(如标签没闭合),先用
插件 → XML Tools → Check XML syntax定位 - 缩进风格可调:同菜单里选
Set indentation width,支持空格数或 Tab,不影响解析,只影响人眼可读性 - 别信“Reindent XML”命令——它只是按行重算缩进,不会把
<root><child>text</child></root>拆成多行,Pretty Print才会
最常被忽略的一点:Notepad++ 的所有缩进行为都依赖右下角的语言识别。状态栏显示 Normal text 时,Smart Indent、Reindent、甚至 Ctrl+Shift+F 都可能失效。遇到排版异常,第一反应不是重装插件,而是点一下语言名,选对对应语言。











