Sublime Text 可通过 Status Bar File Size 插件或自定义 mini 插件在状态栏显示文件大小;前者安装即用,支持多编码与自动单位换算,仅对已保存文件生效;后者可自定义格式与逻辑。

Sublime Text 默认状态栏不显示文件大小,但可以通过插件或自定义插件快速实现——不需要改源码,也不依赖外部工具。
用 Status Bar File Size 插件最省事
这是专为解决该问题写的轻量插件,安装后立即生效,支持 UTF-8、GBK 等常见编码,且自动区分字节(B)和千字节(KB)。
- 打开
Command Palette(Win/Linux 按Ctrl+Shift+P,macOS 按Cmd+Shift+P) - 输入
Package Control: Install Package并回车 - 搜索
Status Bar File Size,选中安装 - 安装完成后,当前文件大小会自动出现在状态栏右侧,格式类似
12.4 KB
注意:该插件默认只在保存后的文件上显示大小;未保存的临时文件(如 untitled)不会显示,这是设计使然,不是 bug。
自己写个 mini 插件控制显示逻辑
如果想自定义格式(比如加前缀、换单位、排除某些类型),可以写一个 20 行以内的插件。核心是监听 on_activated_async 和 on_post_save_async 事件,然后调用 view.set_status()。
import sublime
import sublime_plugin
import os
class UpdateFileSizeStatus(sublime_plugin.EventListener):
def update_status(self, view):
if not view.file_name():
view.erase_status('file_size')
return
try:
size = os.path.getsize(view.file_name())
unit = 'B' if size < 1024 else 'KB'
val = size if unit == 'B' else round(size / 1024, 1)
view.set_status('file_size', f'FSIZE: {val} {unit}')
except (OSError, IOError):
view.erase_status('file_size')
def on_activated_async(self, view):
self.update_status(view)
def on_post_save_async(self, view):
self.update_status(view)
把这段代码保存为 PackageName.py(例如 file_size_status.py),放入 Packages/User/ 目录即可。它会在切换标签页或保存后刷新状态栏。
容易踩的坑:os.path.getsize() 对符号链接或权限不足的路径会抛异常,必须包 try/except;另外别用 on_modified 实时更新——太频繁,卡 UI。
状态栏空间不够?优先级和覆盖问题
Sublime 的状态栏是左对齐、右对齐混合区域,多个插件都用 set_status(key, value) 时,key 冲突会导致覆盖。比如两个插件都用 file_size 当 key,后加载的会盖掉前一个。
- 检查已有插件是否已占用
file_size或size这类通用 key - 推荐用带前缀的 key,如
my_file_size,避免冲突 - 状态栏右侧内容过多时,Sublime 会自动截断,建议控制字符串长度 ≤ 12 字符(含空格)
- 若发现不刷新,可手动执行
view.erase_status('my_file_size')清除旧值再重设
真正麻烦的不是加显示,而是让不同编码、不同行尾(CRLF/LF)、不同文件类型(二进制/文本)下的大小计算保持一致——os.path.getsize() 是唯一靠谱的依据,别试图用 view.size() 替代,它返回的是字符数或字节数(取决于编码),和磁盘实际大小可能差很多。










