notepad++语法折叠需同时满足语言识别正确、语法结构合规、总开关开启三条件。常见问题包括右下角显示plain text而非python、未启用折叠总开关或python专用折叠选项、缩进混用导致折叠点缺失等。

Notepad++ 的语法折叠不是“设一次就全局生效”,它必须同时满足语言识别正确、语法结构合规、折叠总开关开启这三件事,缺一不可。
为什么刚打开的 .py 文件没折叠箭头
最常见原因是右下角显示的是 Plain text 而非 Python——编辑器根本没加载 Python 折叠规则。即使代码写得再标准,Ctrl+8 也只会静默失效。
- 点击右下角语言名 → 手动选
Python(或按Alt+T→Language菜单选择) - 确认
Settings → Preferences → Editor → Code folding → Enable code folding已勾选(这是总开关,不勾则全关) - Python 用户额外检查:
Settings → Preferences → Language → Enable folding for Python必须启用(老版本默认关闭) - 用
View → Show Symbol → Show All Characters查一遍缩进:混用\t和空格会导致 def/if 块不生成折叠点
折叠快捷键没反应?先排除这三类干扰
快捷键失灵几乎从不因为功能损坏,而是折叠点压根没被识别出来。
-
Ctrl+Shift+F没反应 → 光标是否在合法折叠块内?比如def关键字后换行缩进的那一行;单行if x: pass不触发折叠 -
Ctrl+8无效 → 当前文件是否过大(>10MB)?FTP 插件打开的远程文件可能延迟响应,建议本地保存后重试 - 侧边栏无
+/-图标 → 检查View → Margin → Show line number margin是否开启(折叠图标显示在该区域)
想让长配置文件(如 .ini、.yaml)也能折叠
这些格式 Notepad++ 默认不支持语法折叠,强行切换语言也没用。
- INI/YAML/JSON 等非编程语言,需走「用户自定义语言」路线:
Language → User Defined Language → Define your language… - 新建语言后,勾选
Allow user defined folding points,设置开始标记为/*{*/、结束标记为/*}*/(必须独占一行、前后无空格) - 在配置文件中插入标记,例如:
/*{*/ [database] host = localhost port = 5432 /*}*/ - 切回该自定义语言,再按
Ctrl+8—— 此时只折你标记的段落,不依赖语法
折叠状态重启即丢是 Scintilla 底层行为,不是 bug;如果你需要持久化折叠或嵌套注释折叠,说明 Notepad++ 已经不是合适工具了。











