Sublime如何设置代码全部折叠及快捷键改写?
- 内容介绍
- 文章标签
- 相关推荐
本文共计974个文字,预计阅读时间需要4分钟。
很多人使用快捷键 Ctrl+Shift+[ 来折叠整个文件,但结果只折叠了一个 if 块或函数体——这是因为它只作用于光标所在的单个语法块,并且与光标位置强绑定。而 Ctrl+K, Ctrl+0(Windows/Linux)或 Cmd+K, Cmd+0(macOS)才是 Sublime Text 原生的 fold_all 命令,它不会考虑光标位置,直接折叠当前视图中的所有已识别折叠点。
容易踩的坑:
-
Ctrl+K必须先按住、松开,再按0(数字零,不是字母 O),连按或卡顿会失效 - 对
.md、.txt或右下角显示Plain Text的文件完全无效——它根本不识别任何折叠结构 - 某些 Vue/JSX 插件会覆盖语法定义,导致
<script>块无法被识别为可折叠区域
为什么 Ctrl+K, Ctrl+1 到 Ctrl+K, Ctrl+9 折叠效果不一致?
这些不是“按缩进层数”折叠,而是按**作用域嵌套深度**折叠。比如 Ctrl+K, Ctrl+1 折叠所有顶层结构(Python 的 def/class、JS 的 function/const 函数声明、JSON 的根对象),Ctrl+K, Ctrl+2 再往里一层(类内部的方法、函数体内的 if、对象里的子字段)。
关键差异:
- Python 依赖缩进,所以
Ctrl+K, Ctrl+2可能只折叠到for循环体;JS 依赖{},同一级的if和function会被同等处理 - 如果某一级没反应,说明当前文件在那个深度没有被语法定义标记为
foldable(比如原生 JS 不识别箭头函数体为独立折叠单元) -
Ctrl+K, Ctrl+0和Ctrl+K, Ctrl+1行为不同:0是“所有已注册折叠点”,1是“作用域深度为 1 的所有块”
折叠失效?先检查这三件事
快捷键没反应,90% 不是快捷键错了,而是底层折叠能力没启用:
- 右下角状态栏是否显示正确语言?如写 Python 却显示
Plain Text→ 点击切换为Python - 用户设置中是否禁用了折叠按钮?检查
"fold_buttons": false→ 改成true,否则部分 UI 交互异常 - 语法包是否缺失
fold规则?打开命令面板Ctrl+Shift+P→ 输入View Package File→ 查看Python.sublime-syntax或JavaScript.sublime-syntax,搜索fold:,确认function、class等 scope 下有fold: true
临时解决:装 Enhanced Native Folding 插件,它会补全原生缺失的函数/方法级折叠支持,不用改 YAML。
手动创建折叠区:Ctrl+Shift+Alt+[ 仅限当前会话
当语法不支持某段逻辑折叠(比如配置文件中的大段 YAML 注释),可以用这个方式强行收起:
- 选中任意多行代码(不要跨不可折叠区域,比如从注释跳到代码)
- 按
Ctrl+Shift+Alt+[(Windows/Linux)或Cmd+Ctrl+Option+[(macOS) - 折叠后显示为
... {N lines},关闭文件即消失,不写入磁盘
注意:它不依赖语法定义,但也不参与 Ctrl+K, Ctrl+0 的批量操作——那些命令只处理语法层定义的折叠点,不碰手动创建的。
本文共计974个文字,预计阅读时间需要4分钟。
很多人使用快捷键 Ctrl+Shift+[ 来折叠整个文件,但结果只折叠了一个 if 块或函数体——这是因为它只作用于光标所在的单个语法块,并且与光标位置强绑定。而 Ctrl+K, Ctrl+0(Windows/Linux)或 Cmd+K, Cmd+0(macOS)才是 Sublime Text 原生的 fold_all 命令,它不会考虑光标位置,直接折叠当前视图中的所有已识别折叠点。
容易踩的坑:
-
Ctrl+K必须先按住、松开,再按0(数字零,不是字母 O),连按或卡顿会失效 - 对
.md、.txt或右下角显示Plain Text的文件完全无效——它根本不识别任何折叠结构 - 某些 Vue/JSX 插件会覆盖语法定义,导致
<script>块无法被识别为可折叠区域
为什么 Ctrl+K, Ctrl+1 到 Ctrl+K, Ctrl+9 折叠效果不一致?
这些不是“按缩进层数”折叠,而是按**作用域嵌套深度**折叠。比如 Ctrl+K, Ctrl+1 折叠所有顶层结构(Python 的 def/class、JS 的 function/const 函数声明、JSON 的根对象),Ctrl+K, Ctrl+2 再往里一层(类内部的方法、函数体内的 if、对象里的子字段)。
关键差异:
- Python 依赖缩进,所以
Ctrl+K, Ctrl+2可能只折叠到for循环体;JS 依赖{},同一级的if和function会被同等处理 - 如果某一级没反应,说明当前文件在那个深度没有被语法定义标记为
foldable(比如原生 JS 不识别箭头函数体为独立折叠单元) -
Ctrl+K, Ctrl+0和Ctrl+K, Ctrl+1行为不同:0是“所有已注册折叠点”,1是“作用域深度为 1 的所有块”
折叠失效?先检查这三件事
快捷键没反应,90% 不是快捷键错了,而是底层折叠能力没启用:
- 右下角状态栏是否显示正确语言?如写 Python 却显示
Plain Text→ 点击切换为Python - 用户设置中是否禁用了折叠按钮?检查
"fold_buttons": false→ 改成true,否则部分 UI 交互异常 - 语法包是否缺失
fold规则?打开命令面板Ctrl+Shift+P→ 输入View Package File→ 查看Python.sublime-syntax或JavaScript.sublime-syntax,搜索fold:,确认function、class等 scope 下有fold: true
临时解决:装 Enhanced Native Folding 插件,它会补全原生缺失的函数/方法级折叠支持,不用改 YAML。
手动创建折叠区:Ctrl+Shift+Alt+[ 仅限当前会话
当语法不支持某段逻辑折叠(比如配置文件中的大段 YAML 注释),可以用这个方式强行收起:
- 选中任意多行代码(不要跨不可折叠区域,比如从注释跳到代码)
- 按
Ctrl+Shift+Alt+[(Windows/Linux)或Cmd+Ctrl+Option+[(macOS) - 折叠后显示为
... {N lines},关闭文件即消失,不写入磁盘
注意:它不依赖语法定义,但也不参与 Ctrl+K, Ctrl+0 的批量操作——那些命令只处理语法层定义的折叠点,不碰手动创建的。

