Python Indent插件可固化Python缩进规则,需通过Plugin Manager联网安装并重启启用,否则仅语法高亮不干预缩进。

Notepad++ 默认的缩进行为不自动统一 Python 代码的缩进风格,直接用空格/Tab 混用会导致 IndentationError。靠手动替换或反复按空格/Tab 不现实,必须用插件固化规则。
安装 Python Indent 插件(解决缩进不生效问题)
Notepad++ 自带的「语言→Python」只做语法高亮,不干预缩进逻辑。真正起作用的是第三方插件 Python Indent,它会在你敲回车、缩进、退格时自动按 Python 规范补空格或删 Tab。
- 打开
Plugins → Plugin Manager → Show Plugin Manager,搜索Python Indent并安装(需联网) - 安装后重启 Notepad++,否则插件不加载
- 确认启用:菜单栏出现
Plugins → Python Indent,且子项勾选Enable - 若插件列表里找不到,说明你的 Notepad++ 版本太老(
设置缩进为 4 个空格(Python 官方推荐)
PEP 8 明确要求用空格而非 Tab 缩进,且每级缩进为 4 个空格。Notepad++ 需手动关闭 Tab 插入,并设为空格模拟。
- 菜单:
Settings → Preferences → Language → Tab Settings - 在右侧找到
Python,勾选Replace by space,并把Tab size设为4 - 关键一步:取消勾选
Default下的Replace by space,否则所有语言都强制空格,影响其他场景(如 Makefile) - 改完后,新建或重开 .py 文件才生效;已打开的文件需执行一次
Language → Python切换
一键转换已有混排代码(Tab ↔ 空格)
旧代码常混用 Tab 和空格,直接运行会报错。不能只靠查找替换,因为缩进位置和字符串里的 Tab 含义不同。
立即学习“Python免费学习笔记(深入)”;
- 先全选代码:
Ctrl+A - 菜单:
Edit → Blank Operations → TAB to Space(或Space to TAB) - ⚠️ 注意:这个操作是“无差别替换”,仅适用于整段代码不含制表符字面量的场景(比如没写
"\t"或正则中的\t) - 更安全的做法:用
Python Indent插件自带的Convert Indentation功能(右键编辑区 →Python Indent → Convert Indentation to Spaces),它只处理行首缩进,不碰字符串内容
为什么不用 TextFX 或 NppExec 脚本替代?
有人试过用 TextFX Characters → Trim trailing spaces / tabs 或写 NppExec 命令批量替换,但这些方法绕不开两个硬伤:
- 无法区分“缩进用的 Tab”和“字符串里的 Tab”,一换就破坏数据
- 不感知 Python 的嵌套层级逻辑,比如
if块内多缩进一级,脚本不会自动对齐 -
Python Indent是唯一能监听Enter、Backspace、Shift+Tab等动作并动态响应的插件,属于“活缩进”,不是“死替换”
真正麻烦的不是怎么转,而是转完之后没人检查是否漏了隐藏的混合缩进——尤其在从 Git 合并来的代码里,show all characters(Ctrl+Shift+P)得常开着看。


















