Notepad++不支持自动折叠到第N层,无相关配置项;Alt+数字键按语法结构而非缩进层级折叠;Python折叠需关键字、换行、缩进三者同时满足;模拟“自动”需宏+插件配合。

Notepad++ 没有“自动折叠到第 N 层”的配置项
Notepad++ 不支持设置默认展开/折叠层级,config.xml 里没有对应字段,设置界面也不暴露该参数。每次打开文件,所有代码块都处于初始展开态——这是硬限制,不是设置遗漏。
所谓“自动折叠”,实际是手动触发后状态暂存,关掉再开就重置。如果你反复需要某类文件(如 .py 或 .a2l)一打开就处于折叠状态,唯一可行路径是:先用 Alt+0 折叠全部,再录制宏保存操作流程。
Alt+数字键只能折叠“已识别的同级结构”,不是按缩进深度分级
很多人误以为 Alt+1 是“折叠所有一级缩进”,其实它折叠的是语言解析器标记的“第 1 级折叠点”——比如 Python 中所有 def 和 class 块(无论它们嵌套多深),C++ 中所有顶层 { 块。
这些层级编号由语法定义决定,不等于 PEP 8 缩进层级数。你写 8 层缩进的 if 嵌套,Alt+1 也不会把它当“第 1 级”处理;它只在最外层 if 关键字处生成一个折叠点。
-
Alt+1折叠所有顶层函数/类/条件块(非缩进级) -
Alt+2折叠这些块内部的下一级可识别结构(如函数内嵌的for、try) - 若某层没被语法识别(比如纯缩进无关键字),
Alt+2对它无效
Python 折叠层级依赖关键字 + 换行 + 缩进三者同时成立
Notepad++ 对 Python 的折叠不是靠 AST,而是词法匹配:def、class、if、for、while、try 这些关键字必须独占一行或紧跟冒号后,且下一行必须有缩进内容,才会生成折叠点。
-
def foo():\n pass→ 可折叠(换行 + 缩进) -
def foo(): pass→ 不折叠(单行,无后续缩进行) -
if x:\n print(1)→ 可折叠 -
if x: print(1)→ 不折叠 - 混用
\t和空格 → 折叠可能中断,用View → Show Symbol → Show All Characters检查
想让折叠状态“看起来像自动生效”,得靠宏 + 文件关联
Notepad++ 本身不记折叠状态,但你可以模拟“自动”效果:
- 先确保文件语言正确(右下角显示
Python,不是Normal text) - 用
Alt+0折叠全部 - 录制宏:
Macro → Start Recording → Alt+0 → Macro → Stop Recording → Save - 给该宏绑定快捷键(如
Ctrl+9),或通过Settings → Shortcut Mapper → Macros分配 - 对特定扩展名(如
.py)设置“打开时运行宏”需配合插件(如 PythonScript),原生不支持
真正容易被忽略的是:即使你设置了所有开关、语言也对了,只要粘贴进来的代码带零宽空格(\u200B)或 BOM 头,折叠点就可能消失——务必用 Ctrl+Shift+P 显示所有字符排查。


















