讲师中心 微信公众号
AI工具推荐 视频效率加速

sublime怎么设置代码折叠级别_sublime快捷折叠所有函数教程【教程】

陌雪姑娘_1605

陌雪姑娘_1605

发布时间:2026-01-18 13:18:09

|

490人浏览过

|

来源于php中文网

原创

Sublime Text 默认不折叠函数,因其折叠机制基于语法作用域而非AST解析,官方Python/JS语法包未为def/function行配置foldingStartMarker;需通过BracketHighlighter插件自定义正则或修改语法文件添加标记才能实现函数级折叠。

sublime怎么设置代码折叠级别_sublime快捷折叠所有函数教程【教程】

Sublime Text 默认不按函数级别折叠代码,必须手动配置语法定义或启用插件才能实现「快捷折叠所有函数」——原生功能只支持基础的括号级({}、if 块等)折叠,无法识别 def、function、method 等语义层级。

为什么 Sublime 默认不折叠函数?

Sublime 的代码折叠基于「作用域(scope)」和语法高亮规则,不是解析 AST。它只看当前语言的 .sublime-syntax 或旧版 .tmLanguage 文件里是否定义了 foldingStartMarker 和 foldingStopMarker。Python、JavaScript 等主流语法包默认没为 def / function 行设置折叠标记。

  • Python 语法包(官方):只对 class、if、for 等缩进块折叠,def 行本身不触发折叠
  • JavaScript 语法包(官方):function 关键字行不带 foldingStartMarker,只有 { 才算起点
  • 即使开了 "fold_buttons": true,也只影响 UI 按钮,不改变折叠逻辑

用 BracketHighlighter + 自定义规则实现函数级折叠

这是目前最稳定、无需改语法文件的方法:借助 BracketHighlighter 插件扩展折叠能力,配合自定义正则匹配函数声明行。

  • 安装 Package Control 后,用 Ctrl+Shift+P → Package Control: Install Package → 搜 BracketHighlighter
  • 安装后,打开 Preferences → Package Settings → BracketHighlighter → Bracket Settings – User
  • 在配置中添加以下规则(以 Python 为例):
{
    "brackets": [
        {
            "name": "python-function",
            "open": "^\s*def\s+\w+\(",
            "close": "^\s*(#.*|)$",
            "style": "solid",
            "enabled": true,
            "ignore": false,
            "icon": "function"
        }
    ]
}

⚠️ 注意:close 行必须匹配函数体结束位置(比如空行或注释行),否则折叠会错位;JS 可类似配 ^s*functions+w+(|^s*consts+w+s*=s*function 等。

jm-jsjkxyjs02-zlm-405
jm-jsjkxyjs02-zlm-405

使用约定式提交(Conventional Commits)生成标准化的 Git 提交信息。适用于以下场景: (1) 暂存更改时需要提交信息; (2) 审查 diff 时希望获得结构化摘要; (3) 编写 PR 描述或变更日志(changelog)条目; (4) 用户明确要求“为本次更改编写提交信息”。 该功能会分析已暂存/未暂存的 diff,并生成按类型(type)划分范围的提交信息。

下载

直接修改语法文件(高级用户适用)

如果你用的是 Python,可复制并修改内置语法定义,在 def 行注入折叠标记。路径通常为:Packages/Python/Python.sublime-syntax(通过 Preferences → Browse Packages 进入)。

  • 找到 main scope 下的 def 规则(搜索 def:)
  • 在其 push 分支中加入 folding_start_marker,例如:
- match: '(def)(?=s+w+()'
  scope: keyword.control.flow.python
  push:
    - meta_scope: meta.function.python
    - folding_start_marker: '^\s*def\s+\w+\('
  • 重启 Sublime;之后 def 行左侧会出现小箭头,Ctrl+Shift+[ 即可折叠该函数
  • ⚠️ 风险:升级 Python 插件时该文件会被覆盖,建议用 Override 方式或 fork 到 User/Python.sublime-syntax

快捷键与实际操作建议

无论用哪种方式,折叠行为最终依赖 Sublime 的原生快捷键,不是新命令:

  • Ctrl+Shift+[:折叠光标所在层级(需光标在可折叠行上)
  • Ctrl+K, Ctrl+1:折叠所有一级代码块(如所有 def、class)
  • Ctrl+K, Ctrl+J:展开所有
  • 若 Ctrl+K, Ctrl+1 无效,说明语法未正确注册折叠范围,优先检查 foldingStartMarker 是否生效

真正起作用的是折叠标记是否被语法引擎识别,而不是快捷键本身。很多用户反复试 Ctrl+K Ctrl+1 却没反应,问题几乎都出在语法层没配对,不是快捷键冲突。

热门AI工具

更多
讯飞智作

讯飞智作是一款AI视频创作工具,AI文本配音工具,数字人课程、营销视频制作。

咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

创客贴AI

创客贴AI是一款AI图像与设计工具,AI辅助的智能在线设计工具。

音述AI
音述AI Hot

一款AI音频处理工具,主要用于音述AI是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区,适合需要提升相关任务效率的用户。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

UpDream
UpDream Hot

一款AI视频创作工具,主要用于哔哩哔哩推出的自研AI视频创作工具,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

相关专题

更多
c语言const用法
c语言const用法

const是关键字,可以用于声明常量、函数参数中的const修饰符、const修饰函数返回值、const修饰指针。详细介绍:1、声明常量,const关键字可用于声明常量,常量的值在程序运行期间不可修改,常量可以是基本数据类型,如整数、浮点数、字符等,也可是自定义的数据类型;2、函数参数中的const修饰符,const关键字可用于函数的参数中,表示该参数在函数内部不可修改等等。

2338

2023.09.20

class在c语言中的意思
class在c语言中的意思

在C语言中,"class" 是一个关键字,用于定义一个类。想了解更多class的相关内容,可以阅读本专题下面的文章。

4296

2024.01.03

python中class的含义
python中class的含义

本专题整合了python中class的相关内容,阅读专题下面的文章了解更多详细内容。

306

2025.12.06

js正则表达式
js正则表达式

php中文网为大家提供各种js正则表达式语法大全以及各种js正则表达式使用的方法,还有更多js正则表达式的相关文章、相关下载、相关课程,供大家免费下载体验。

4676

2023.06.20

js获取当前时间
js获取当前时间

JS全称JavaScript,是一种具有函数优先的轻量级,解释型或即时编译型的编程语言;它是一种属于网络的高级脚本语言,主要用于Web,常用来为网页添加各式各样的动态功能。js怎么获取当前时间呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

1395

2023.07.28

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

1838

2023.08.03

js是什么意思
js是什么意思

JS是JavaScript的缩写,它是一种广泛应用于网页开发的脚本语言。JavaScript是一种解释性的、基于对象和事件驱动的编程语言,通常用于为网页增加交互性和动态性。它可以在网页上实现复杂的功能和效果,如表单验证、页面元素操作、动画效果、数据交互等。

10243

2023.08.17

js删除节点的方法
js删除节点的方法

js删除节点的方法有:1、removeChild()方法,用于从父节点中移除指定的子节点,它需要两个参数,第一个参数是要删除的子节点,第二个参数是父节点;2、parentNode.removeChild()方法,可以直接通过父节点调用来删除子节点;3、remove()方法,可以直接删除节点,而无需指定父节点;4、innerHTML属性,用于删除节点的内容。

1020

2023.09.01

Uvicorn 报错与问题解决教程
Uvicorn 报错与问题解决教程

本专题汇总了Uvicorn服务器常见问题与报错解决的教程合集,涵盖启动失败、端口占用、模块导入错误、事件循环冲突及热重载失效等典型故障的排查思路。同时整理了多进程与Worker配置、SSL/HTTPS证书报错、跨域与代理配置等实战解决方案,助你快速定位并解决Uvicorn运行中的各类问题。

0

2026.11.02

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
WebStorm 官方调试文档
WebStorm 官方调试文档

共0课时 | 0人学习

React 教程
React 教程

共58课时 | 12.4万人学习

TypeScript 教程
TypeScript 教程

共19课时 | 6.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn