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

Sublime如何一键折叠所有函数_Sublime代码层级快速控制【新手必备】

胖萱君_5859

胖萱君_5859

发布时间:2026-02-13 14:29:33

|

705人浏览过

|

来源于php中文网

原创

fold_by_level命令按语法层级折叠代码块,需先设对文件语法,快捷键为Ctrl+K,Ctrl+1~9对应不同嵌套级,但无法区分函数与其他作用域块。

sublime如何一键折叠所有函数_sublime代码层级快速控制【新手必备】

Sublime Text 里 fold_by_level 命令到底怎么用?

Sublime Text 默认不提供“一键折叠所有函数”的菜单项,但内置了 fold_by_level 命令,它按语法层级(如 class、function、if、for 等)折叠代码块。关键在于:它不是按“函数名”识别折叠,而是依赖当前语言的语法高亮和作用域定义。

实操建议:

  • 确保文件已正确设置语法(右下角显示如 Python 或 JavaScript),否则 fold_by_level 可能无效或只折叠缩进块
  • 快捷键默认是 Ctrl+K, Ctrl+1(Windows/Linux)或 Cmd+K, Cmd+1(macOS)——注意是先按 Ctrl+K 松开,再按 Ctrl+1
  • 数字 1~9 对应不同嵌套层级:比如 Ctrl+K, Ctrl+2 会折叠到类/模块级,Ctrl+K, Ctrl+3 折叠到函数体内部的 if/for 块
  • 想“只折叠函数”,通常需配合插件(见下一条),因为原生命令无法区分“函数定义”和“其他作用域块”

用 CodeFolding 插件精准折叠函数定义

原生 fold_by_level 对 JavaScript 或 Python 的函数折叠不够干净(比如会把 if 块也一起折进去)。这时推荐安装社区维护的 CodeFolding 插件,它通过正则匹配函数声明语法(如 def 、function 、const xxx = function 等)实现语义化折叠。

安装与使用:

  • 通过 Package Control 安装 CodeFolding(不是 Code Folding,后者已停更)
  • 安装后自动启用,无需配置;快捷键仍是 Ctrl+K, Ctrl+1,但行为变为“只折叠函数/类定义头行”,不碰内部逻辑块
  • 支持常见语言:Python、JS、TS、Go、Rust 等,但对 JSX 或模板字符串中的函数可能漏判
  • 若折叠异常,检查是否被其他插件(如 BracketHighlighter)干扰,可临时禁用测试

fold_all 和 unfold_all 是全局开关,不是函数专用

很多人误以为 Ctrl+K, Ctrl+0(fold_all)能“折叠所有函数”,其实它只是递归折叠所有可折叠区域(包括注释块、import 区、多行字符串等),结果往往混乱且不可逆(展开时不一定恢复原状)。

真实场景中应避免滥用:

  • fold_all 适合快速隐藏全部细节看文件骨架,不适合日常编码流程
  • 它不区分语言特性,Python 里连三引号文档字符串都会被折掉,JS 里对象字面量也可能塌陷
  • 如果误触发,用 Ctrl+K, Ctrl+J(unfold_all)能恢复,但光标位置和滚动偏移会丢失
  • 真正需要的是“折叠函数 + 展开当前光标所在函数”,这得靠插件或自定义命令(见下条)

自定义命令:只折叠函数,同时展开当前函数

如果你常在多个函数间跳转,希望每次进入一个函数时自动展开它,其余函数保持折叠,可以写个简单 Python 命令注入 Sublime Text 的插件目录(Packages/User/ 下新建 fold_functions.py):

import sublime
import sublime_plugin
<p>class FoldFunctionsExceptCurrentCommand(sublime_plugin.TextCommand):
def run(self, edit):</p><h1>先展开全部</h1><pre class='brush:php;toolbar:false;'>    self.view.run_command("unfold_all")
    # 获取当前光标所在函数作用域
    scope = self.view.scope_name(self.view.sel()[0].begin())
    if "entity.name.function" not in scope and "meta.function" not in scope:
        # 当前不在函数内,退回到 fold_by_level 1
        self.view.run_command("fold_by_level", {"level": 1})
        return
    # 获取所有函数 region(依赖 syntax definition)
    regions = self.view.find_by_selector("meta.function")
    for r in reversed(regions):  # 从后往前折,避免 region 偏移
        if not self.view.is_folded(r):
            self.view.fold(r)
    # 展开光标所在函数
    func_region = self.view.expand_by_class(
        self.view.sel()[0].begin(),
        sublime.CLASS_WORD_START | sublime.CLASS_WORD_END,
        "entity.name.function"
    )
    if func_region:
        self.view.unfold(func_region)

然后在 Key Bindings 中绑定快捷键,例如:

[{"keys": ["ctrl+alt+f"], "command": "fold_functions_except_current"}]

这个方案依赖语言包的 scope 准确性,Python 和 JS 表现较好,但 C++ 或 PHP 可能需额外调整 selector。

真正难的不是写命令,而是理解:Sublime 的折叠本质是“文本区域操作”,不是 AST 遍历。所以任何“精准折叠函数”的方案,都绕不开语言包 scope 定义的质量和一致性。

热门AI工具

更多
二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

VibeKnow
VibeKnow Hot

一款AI视频创作工具,主要用于全球首个AI知识视频创作平台,文档、文章、网页,一键生成视频,适合需要提升相关任务效率的用户。

DeepSeek

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

Seko
Seko Hot

一款AI视频创作工具,主要用于商汤科技推出的创编一体的AI短视频创作Agent,适合需要提升相关任务效率的用户。

豆包大模型

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

UpDream
UpDream Hot

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

WorkBuddy

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

码上飞
码上飞 Hot

一款基于自然语言的AI应用开发平台,可根据用户描述自动生成应用程序,帮助个人和团队快速完成应用原型与开发。

相关专题

更多
C++系统编程内存管理_C++系统编程怎么与Rust竞争内存安全
C++系统编程内存管理_C++系统编程怎么与Rust竞争内存安全

C++系统编程中的内存管理是指 对程序运行时内存的申请、使用和释放进行精细控制的机制,涵盖了栈、堆、静态区等不同区域,开发者需要通过new/delete、智能指针或内存池等方式管理动态内存,以避免内存泄漏、野指针等问题,确保程序高效稳定运行。它核心在于开发者对低层内存有完全控制权,带来灵活性,但也伴随高责任,是C++性能优化的关键。

106

2025.12.22

Rust异步编程与Tokio运行时实战
Rust异步编程与Tokio运行时实战

本专题聚焦 Rust 语言的异步编程模型,深入讲解 async/await 机制与 Tokio 运行时的核心原理。内容包括异步任务调度、Future 执行模型、并发安全、网络 IO 编程以及高并发场景下的性能优化。通过实战示例,帮助开发者使用 Rust 构建高性能、低延迟的后端服务与网络应用。

278

2026.02.11

Rust内存安全机制与所有权模型深度实践
Rust内存安全机制与所有权模型深度实践

本专题围绕 Rust 语言核心特性展开,深入讲解所有权机制、借用规则、生命周期管理以及智能指针等关键概念。通过系统级开发案例,分析内存安全保障原理与零成本抽象优势,并结合并发场景讲解 Send 与 Sync 特性实现机制。帮助开发者真正理解 Rust 的设计哲学,掌握在高性能与安全性并重场景中的工程实践能力。

642

2026.03.05

Rust 系统编程入门与实战
Rust 系统编程入门与实战

统讲解近年最受关注的系统级编程语言 Rust 的核心知识体系,涵盖 Rust 的安装与 Cargo 项目管理、变量绑定与不可变性设计哲学、所有权(Ownership)/ 借用(Borrowing)/ 生命周期(Lifetime)三大核心概念、结构体/枚举与模式匹配(match)、Trait 特征系统与泛型编程、错误处理(Result/Option)、智能指针(Box/Rc/Arc)、并发编程的无畏并发(Fearless Concurre

497

2026.05.29

Rust异步网络服务与Tokio Runtime深度实践
Rust异步网络服务与Tokio Runtime深度实践

本专题围绕 Rust 在高并发网络服务中的应用展开,系统讲解 Tokio 异步运行时、任务调度模型、Future 执行机制以及高性能网络编程方式。结合实际服务端案例,帮助开发者构建低延迟、高可靠的异步服务架构。

296

2026.06.29

c语言const用法
c语言const用法

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

2358

2023.09.20

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

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

1858

2023.08.03

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

3004

2023.09.04

DBeaver安全防护教程大全
DBeaver安全防护教程大全

DBeaver安全防护专题,围绕数据库连接安全、账号密码保护和访问权限管理展开,整理SSL/TLS加密连接、SSH隧道、数据库凭据保存及证书验证等配置方法,同时介绍敏感信息保护、远程连接风险和高权限账号使用等注意事项,帮助用户提高数据库日常管理的安全性。

0

2026.11.05

热门下载

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

精品课程

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

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