Sublime Text 无独立「选中字符数」快捷键,但选中文本后状态栏立即显示 Selected: X chars,即所有选区 Unicode 码位总数(含空格、换行、中文、emoji),多选区时为总和,零延迟且原生支持。

Sublime Text 没有独立的「选中字符数」快捷键,但只要选中文本,状态栏会**立刻显示**准确数字——这是最直接、最可靠的方式,无需插件、不卡顿、结果即 view.size() 的子集。
选中后状态栏自动显示 Selected: X chars
这是 Sublime 原生行为,不是插件功能:
- 用鼠标拖选、
Shift+方向键、Ctrl+L(选整行)、Ctrl+Shift+Space(选作用域)等任意方式选中一段文本 - 右下角状态栏**立即出现**类似
Selected: 42 chars的提示 - 该值 =
view.substr(selection_region).length,即当前选区所有 Unicode 码位总数(含空格、换行符、中文、emoji) - 多选区(多个光标)时,它显示的是**所有选区字符总和**,不是单个选区长度
为什么不用 Tools: Word Count 统计选区?
原生命令 Tools: Word Count 在有选区时确实只统计选区,但它有明显缺陷:
- 弹窗里不标注“当前为选区统计”,容易误读为全文
- 返回的
Characters (no spaces)仍包含换行符和制表符,不符合多数人“纯可见字符”的预期 - 调用需三步:
Ctrl+Shift+P→ 输入 → 回车,比直接看状态栏慢且干扰工作流 - 在大文件中频繁触发可能轻微卡顿;而状态栏更新是 Sublime 视图层的底层响应,零延迟
选区统计失效的常见原因
状态栏不显示 Selected: X chars,通常不是功能坏了,而是以下情况之一:
- 你选中的其实是「折叠区域」(比如函数被折叠成一行),Sublime 将其视为不可编辑内容,不计入选区长度
- 文件被识别为 binary(如打开 .png 或未声明编码的乱码文件),状态栏会静默跳过统计
- 启用了只读模式(
View → Set Read-Only),部分版本会抑制选区反馈 - 其他插件劫持了状态栏(如 Origami、Status Bar Ex),可临时禁用插件验证
需要精确过滤换行符或空格?得写脚本
状态栏和 view.size() 都返回原始码位数,如果你要的是“不含换行符的字符数”或“仅中文+英文+数字”,不能靠 UI 解决:
- 按
Ctrl+`打开控制台,运行:
view = sublime.active_window().active_view()
sel = view.sel()[0] # 取第一个选区
text = view.substr(sel)
print("不含\n:", len(text.replace('
', '')))
print("仅中文/英文字母/数字:", len([c for c in text if c.isalnum() or 'u4e00' <= c <= 'u9fff']))注意:多选区时需遍历 view.sel() 全部项;isalnum() 对中文返回 False,所以要用 Unicode 范围判断。
真正难的不是“怎么统计”,而是想清楚你要的到底是什么:出版字数?代码有效字符?还是协议字段长度?状态栏给的是事实,但解释权在你自己手上。


















