Sublime Text状态栏需通过插件(如Status Bar Manager)或Python API自定义,纯配置无效;status_bar.json在v4已废弃,动态内容须用set_status配合事件监听实现。

Sublime Text 默认状态栏信息非常有限,想显示当前编码、行尾格式、语法高亮名、Git 分支甚至自定义变量,必须通过插件或 API 操作;纯配置文件无法实现动态内容。
用 Status Bar Manager 插件快速添加常用字段
这是目前最稳定、免写代码的方案。安装后自动接管状态栏,支持勾选式启用:Status Bar Manager 插件本身不自带功能,需配合 Package Control 安装,并启用其子插件(如 StatusBarGit、EncodingDisplayName)。
- Git 分支显示依赖
StatusBarGit,要求本地已安装git命令且项目为 Git 仓库 - 更准确的编码名(如显示
UTF-8 with BOM而非仅UTF-8)需启用EncodingDisplayName - 行尾格式(
CRLF/LF)默认不显示,需在Preferences → Package Settings → Status Bar Manager → Settings中手动添加"eol"到status_bar_items列表 - 所有字段顺序由配置中数组顺序决定,拖动调整无效,必须改 JSON 数组
用 Python 插件自定义状态栏(显示当前函数名/TODO/行号范围)
Sublime Text 的状态栏内容只能通过 view.set_status(key, value) 设置,且每个 key 对应唯一字段。常见错误是反复调用却没清空旧 key,导致残留乱码。
- 监听
on_selection_modified_async或on_activated_async事件来实时更新,避免阻塞 UI - 函数名提取建议用
view.extract_scope(view.sel()[0].begin())配合正则匹配def|function,但 Python/JS 文件结构差异大,不能通用一套正则 - 显示 TODO 行数时,注意
view.find_all("TODO")返回的是区域列表,要转成数量再设状态栏,否则会显示内存地址 - key 名必须全局唯一,比如都用
"my_custom_info",后加载的插件会覆盖先加载的
为什么 status_bar.json 配置不生效?
Sublime Text 4 开始移除了对 status_bar.json 的原生支持,任何文档里提到该文件的用法均已过时。试图在 Packages/User/ 下新建此文件完全无效。
- 旧版本(
- 部分博客把
Preferences.sublime-settings里的show_encoding或show_line_endings误称为“状态栏配置”,其实它们只控制是否在状态栏显示默认字段,无法新增 - 真正可扩展的只有插件 API,没有折中配置方式
状态栏看似简单,实则涉及事件响应时机、key 冲突管理、跨平台 Git 路径解析等细节。最易被忽略的是:插件间 status key 无命名空间,两个插件若用了相同 key,后者必然覆盖前者——调试时得逐个禁用插件排查。










