sublime text原生不支持状态栏同时显示编码与字数,必须通过wordcount插件(titobouzout或guilhermejacob版)开启show_in_status_bar:true和treat_as_words:true,并配合statusmessage插件统一格式化输出,设priority:100确保优先渲染,且需注意未保存文件、二进制文件及ui主题对状态栏的干扰。

Sublime Text 原生不支持在状态栏里同时显示“编码 + 字数”,show_encoding 和 WordCount 插件各自独立,且默认互不通信——必须手动配对、协调输出位置,否则要么只显示编码、要么字数被截断或压根不出现。
为什么改了 show_encoding 还是看不到编码?
因为这个设置只控制“是否启用原生编码显示”,但前提是当前文件有明确编码上下文:
- 新建未保存的文件(无路径、无内容)不会显示编码,状态栏只写
Plain Text - 二进制文件(如
.png、.pdf)被 Sublime 主动跳过编码探测,状态栏留空 - 插件面板(如
Find Results、Console)根本无编码概念,show_encoding对它们无效 - 某些 UI 主题或插件(如
SideBarEnhancements)会覆盖右下角区域,把原生编码顶掉
确认生效最直接的办法:打开一个已保存的文本文件 → 右键状态栏空白处 → 点 Set Encoding → 选 UTF-8,立刻触发重绘并显示。
WordCount 插件怎么让字数稳定出现在状态栏?
装完插件默认只响应命令面板调用,show_in_status_bar 必须手动开启,且得选对版本:
- 认准作者
titoBouzout或guilhermejacob的版本(Package Control 搜索时看作者名),老版bitwaker在 ST4 已失效 - 进
Preferences → Package Settings → WordCount → Settings,右侧用户配置加:{"show_in_status_bar": true, "treat_as_words": true}——后者对中文至关重要,否则「你好啊」算 1 个词 - 别依赖
"show_word_count": true单独生效;它只是统计开关,真正推到状态栏靠show_in_status_bar - Mac 用户注意:
status_bar_text超过约 20 个 Unicode 宽度字符就会被截断,建议用"{words}/{chars}"替代长中文前缀
怎么把编码和字数塞进同一行,还不打架?
原生字段和插件字段共用状态栏右侧区域,不协调就会覆盖或错位。最稳方案是弃用 WordCount 的状态栏直出,改用 StatusMessage 统一接管:
- 安装
StatusMessage后,在其设置里填:{"format":"编码: {encoding} | 字: {words} | 行: {line_count}", "priority": 100} -
priority设为 100 是关键——确保它压过其他插件(包括WordCount自己的状态栏输出) -
WordCount设置里要把"show_in_status_bar": false,只保留统计能力供StatusMessage读取 -
{encoding}显示的是 Sublime 当前解码所用编码,不是文件真实编码;若显示Western (Windows 1252)却看到中文,说明解码失败,应手动Reopen with Encoding → UTF-8
真正麻烦的点不在配置本身,而在多个插件对同一块 UI 区域的争夺——StatusMessage 的 priority、WordCount 的 treat_as_words、以及 Sublime 自身对未保存/二进制文件的静默处理,这三者任何一个没对齐,状态栏就只剩一半信息。











