selection-count 插件仅统计选区数量而非字符数;atom 默认不提供字符统计功能;需用 editor.getselectedtext().length 或 buffer.bytelength() 手动计算,注意 utf-16 与 unicode 字符数差异。

selection-count 插件不统计字符数,只统计选区数量
它名字里的 “count” 指的是「选区个数」,不是字符或单词数量。装完插件后右键菜单里出现的 Selection Count 选项,点击只会弹出类似 3 selections 的提示——意思是当前有 3 个独立选区(比如 Ctrl+D 多次选中的不同位置),跟字数、长度完全无关。
Atom 本身没有内置选中字符数统计功能
不像 Sublime Text 全选后状态栏自动显示 Selected: XXX chars,Atom 默认不提供任何字符计数能力。你选中一段代码,状态栏只显示行号列号,不会刷新字符总数。
-
editor.getSelectedText()可以拿到选中文本,但需要自己调用.length或Buffer.byteLength() -
selection.getText().length返回 Unicode 码位数(含换行符、空格、中文),但对多字节字符(如 emoji)和 BOM 不做特殊处理 -
Buffer.byteLength(selection.getText(), 'utf8')才是真实字节数,strlen级别,适合校验 API 字段长度限制
想统计选中字符数,得写一行命令或装别的插件
最轻量的方法是打开 Atom 的 Developer Tools(Ctrl+Shift+I),在 Console 里粘贴执行:
const sel = atom.workspace.getActiveTextEditor()?.getSelectedText(); sel ? console.log('chars:', sel.length, 'bytes:', Buffer.byteLength(sel, 'utf8')) : console.log('no selection');
如果常用,建议装 wordcount 插件(注意别叫 word-count,避免和官方同名插件冲突),它右键菜单里有 Word Count,弹窗显示 Chars 行——这个值就是 selection.getText().length,含空格和换行符。
- 中文、emoji、制表符 \t 都算 1 个字符
- Windows 换行 \r\n 算 2 个字符,Linux/macOS \n 算 1 个
- 它不区分“字数”和“字符数”,所谓“Words”只是按空白切分,对 PHP/JS 变量名(如
$user_name)无效
容易被忽略的编码细节
Atom 内部用 UTF-16 存储文本,.length 返回的是 UTF-16 码元数,不是 Unicode 字符数。遇到 emoji(如 ?)或某些增补平面字符时,.length 可能返回 2,而实际是 1 个字符。
真正要统计“人眼可见的字符数”,必须用 Array.from(text).length(ES2015+),但 Atom 的 CoffeeScript 插件环境不一定支持。更稳妥的做法是:需要精确计数的地方(比如短信字数限制、JWT payload 校验),别信编辑器插件——复制选中内容,用目标语言的真实函数跑一遍。











