sublime text状态栏由插件控制,原生不支持配置;需用statusbarcustom等插件通过json配置实现定制,或自行编写插件调用set_status()动态更新。

状态栏显示内容由插件控制,原生不支持直接配置
Sublime Text 底部状态栏(status bar)默认显示光标位置、编码格式、换行符、语法类型等,但这些不是靠修改配置文件就能改的——Preferences.sublime-settings 或 Settings - User 里没有 status bar 相关字段。它实际由插件动态写入,核心机制是调用 view.set_status(key, value) 和 window.set_status(key, value)。
这意味着:想改状态栏,你得写一个插件,或装一个现成的、支持自定义的插件(比如 StatusBarEditor 或 StatusBarCustom),否则纯配置无法生效。
推荐用 StatusBarCustom 插件实现灵活定制
StatusBarCustom 是目前最轻量、更新活跃、且真正支持 JSON 驱动状态栏字段的插件。它不依赖 Python 脚本编写,而是通过 StatusBarCustom.sublime-settings 文件声明字段逻辑。
- 安装后,在
Preferences → Package Settings → StatusBarCustom → Settings打开配置 - 每个字段是一个对象,含
key(唯一标识)、text(显示文本,支持变量如${file_name}、${line}、${col})和可选的priority - 变量替换在每次视图变化时自动触发,比如保存文件后
${file_mod_time}会刷新 - 注意:
text中不能写 Python 表达式,只认预设变量;要执行逻辑得用on_modified类钩子 + 自定义插件
示例片段:
一款AI工具,主要用于Monitor and clean up invalid Codex authentication files in CPA. Check quota status, disable files returning 401 errors, and perform dual verification before deletion.,适合需要提升相关任务效率的用户。
{
"status_bar_custom": [
{
"key": "my_file_size",
"text": "size: ${file_size_bytes}B"
},
{
"key": "my_git_branch",
"text": "git: ${git_branch}",
"priority": 100
}
]
}
自己写插件改状态栏?关键点在事件监听和 set_status 调用时机
如果你需要动态内容(比如当前函数名、TODO 数量、LSP 响应状态),就得写插件。常见错误是:在插件 on_activated 里调用 set_status 后没清空旧值,导致重复叠加;或在 on_post_save 里没检查 view.window() 是否为 None(无窗口的 view 会 crash)。
- 必须监听
on_selection_modified_async来响应光标移动(比如实时更新行列号) - 修改状态栏前先用
view.erase_status(key)清除同 key 的旧值,避免残留 - 涉及异步操作(如调用
subprocess获取 git 分支)务必用sublime.set_timeout_async包裹,否则阻塞 UI -
set_status的key建议带前缀(如myplugin_line_info),避免和其他插件冲突
为什么改完没反应?检查这三处
状态栏不更新,90% 是以下原因:
- 插件未启用:打开
Preferences → Package Control → Disable Package,确认没禁用相关插件 - 配置路径错:用户设置文件必须叫
StatusBarCustom.sublime-settings,放在Packages/User/下,不是Preferences.sublime-settings - 变量不存在:比如用了
${git_commit_hash},但当前文件不在 git 仓库内,该变量会被忽略,整个字段可能不显示(取决于插件实现)
调试技巧:在插件里加 print() 并查看 Sublime Text → View → Show Console 输出;或临时把 text 改成固定字符串(如 "DEBUG: OK")确认是否加载成功。
状态栏字段本质是键值对缓存,没有“全局刷新”按钮——改配置后必须切换标签页或重启 Sublime 才能重载,这点容易被忽略。










