Notepad++代码折叠依赖语法结构或预设标记,不支持选中即折;函数能否折叠取决于语言模式正确、关键字后有合法缩进/括号、且对应折叠开关已启用。

Notepad++ 能折叠代码块,但不是“选中就折”,它只认语法结构或预设标记;函数能否折叠,取决于语言模式是否正确、关键字后是否有合法缩进/括号、以及对应语言的折叠开关是否启用。
为什么 def 或 function 块没折叠箭头
Notepad++ 不靠 AST 分析,而是用词法规则匹配:Python 模式下,def、class、if 等关键字必须独占一行,且下一行有缩进内容才生成折叠点;JavaScript 中 function 后必须跟 {(不能是单行箭头函数),且 { 不能和关键字写在同一行。
-
def foo():\n pass→ 可折叠;def foo(): pass→ 不折叠 -
if x > 0 { console.log(1); }→ 可折叠;if (x > 0) console.log(1);→ 不折叠 - Python 模式需确认
Settings → Preferences → Language → Enable folding for Python已勾选(老版本默认关) - 混用
\t和空格会导致缩进检测失败——建议统一设为 4 空格(Settings → Preferences → Language → Tab settings → Python → Replace by space)
Ctrl+Shift+F 没反应?先查这三件事
快捷键失效几乎从不因为功能损坏,而是编辑器“没识别出可折结构”。
- 右下角语言标识是不是
Plain text?必须手动切到Python、JavaScript、C++等对应语言 - 代码里有没有不可见字符?全选 →
Ctrl+Shift+P打开“显示所有字符”,重点排查\x{200B}(零宽空格) - 当前文件是否过大(>10MB)或通过 FTP 插件打开?折叠响应会延迟甚至卡死,建议本地打开再操作
想折叠注释或任意段落?得加标记
Notepad++ 默认不折叠纯注释行(如 # xxx 或 // xxx),也不支持“选中即折”。唯一可靠方式是插入折叠标记,并启用用户自定义语言。
- 新建用户语言:
Alt+T → 用户自定义语言 → 定义你的语言…,勾选「允许用户定义的折叠点」 - 设置开始/结束标记,例如:
/*{*/和/*}*/(必须独占一行,前后无空格) - 写完标记后,按
Ctrl+8触发折叠;标记不参与高亮,建议用/// FOLD:这类前缀避免混淆 - 注意:标记不嵌套,
/*{*/ ... /*{*/ ... /*}*/ ... /*}*/会错位;删掉结束标记也不会自动展开,得手动重载文件
折叠状态重启就丢,这不是 bug 是设计
Notepad++ 从不保存折叠状态,每次重启或重新加载文件,所有块都恢复展开。这不是配置问题,也无需找插件修复——它是 Scintilla 底层的默认行为。
如果你依赖折叠状态做长期开发,说明你已经超出 Notepad++ 的定位边界;真正需要持久化折叠的场景,该换 VS Code 或 Vim + foldmethod=syntax 这类支持 AST 的工具。Notepad++ 的折叠,本质是临时视觉过滤,不是结构管理。

















