状态栏显示“selected: xxx chars”即当前选区unicode码位数,含空格换行中文emoji、不含bom;若不显示需检查状态栏开启、非只读模式及插件干扰。

直接看状态栏,不用任何插件或命令——选中后右下角立刻显示 Selected: XXX chars,这就是当前选区的 Unicode 码位数,含空格、换行符、中文、emoji,不含 BOM。
选中后状态栏不显示 Selected: XXX chars?先检查这三件事
状态栏不响应不是功能失效,而是被干扰或禁用:
- 确认
View → Show Status Bar已勾选(没开启状态栏,一切免谈) - 检查是否处于只读模式(
File → Revert或右键状态栏看是否有Read Only提示) - 关闭可能劫持状态栏的插件,比如
Origami、BracketHighlighter的某些旧版配置会覆盖选区提示
Tools: Word Count 弹窗里显示的 Characters 和你选中的不一致?
这个原生命令的行为完全取决于“有没有选中文本”:
- 没选中时:
Characters= 全文view.size(),和全选后状态栏一致 - 只要存在任意选区(哪怕只选了一个字母),
Characters就只统计该选区,且弹窗**不加任何说明** - 它不区分“选区”和“全文”,也不校验编码——如果文件是 GBK 且含 BOM,
Characters可能多算 2 字节(BOM 被当普通字符)
需要排除换行符或空格?别硬算,用 view.substr() 过滤
状态栏和 view.size() 都无法开关统计项,真要精确控制就得写一行 Python:
view = sublime.active_window().active_view()
selected = view.sel()[0] if view.sel() else sublime.Region(0, view.size())
text = view.substr(selected).replace('\n', '').replace('\r', '').replace(' ', '')
len(text)
这段代码在 Ctrl+` 控制台里执行,返回的是选区中剔除换行符和空格后的纯可见字符数。注意:view.sel() 返回多个 Region 时,上面只取第一个(即主光标所在选区);如需多选区累加,得用 for r in view.sel(): 循环。
真正容易被忽略的是:状态栏的 Selected: XXX chars 是实时渲染结果,而 view.size() 和 view.substr() 读的是内存缓存——如果文件被外部编辑器修改但 Sublime 没重载,两者数值就可能不同。











