-
概述
- 使用 VIM 作简单字数统计
-
背景
- 想做一个简单的 字数统计
-
环境
- OS
- win10
- shell
- mintty-2.9.4
- OS
1. 需求
-
概述
- 需求
-
需求
- 统计文段内字符的数量
- 支持 自定义字符集
2. 方案1: vim 自带统计
-
概述
- vim 自带方案
-
操作
-
定位到 文段内某行
-
vim 标准模式
-
输入
g ctrl + g
-
-
结果
-
在 vim 底部, 有 统计信息
# 统计信息我后面讲 Col 16-15 of 39-31; Line 38 of 102; Word 72 of 189; Char 389 of 1232; Byte 565 of 1862
-
-
统计信息
-
Col 16-15 of 39-31
- 列信息
- 注意
- 因为这一列 有中文, 所以会出现这种情况
- 没有中文, 大概会是这样
Col 16 of 39
- utf-8 中, 长度大于 1个字节 的字符
- 解释: 不含中文 - Col 16 of 39
- 当前光标, 处在 16 列
- 当前行, 一共有 39 列
- 解释: 包含中文 - Col 16-15 of 39-31
- 当前光标, 在 16 列, 第 15 个字符
- 当前行, 一共有 39 列, 但是只有 31 个字符
- 注意
- 列信息
-
Line 38 of 102
- 行信息
- 解释
- 本文一共 102 行
- 当前光标处在, 38 行
- 解释
- 行信息
-
Word 72 of 189
- 单词信息
- 解释
- 本文一共 189 个单词
- 当前光标, 处在第 72 个单词
- 解释
- 单词信息
-
Char 389 of 1232
-
字符信息
- 略
-
注意
- 如果文本都是 英文 或者 数字, 不会出现这个项
- 统计内容成谜
- utf-8 字符
- 字母
- 数字
- 换行
- 还有一个不知道的字符
- 总要占一个
- 但就是找不到
-
建议
- 除非是 比较粗 的统计, 不建议使用这个字段
- 字符集无法定义
- 全文内容
- 除非是 比较粗 的统计, 不建议使用这个字段
-
-
Byte 565 of 1862
- 字节信息
- 略
- 字节信息
-
-
问题
- 字符的数量, 可能会有 偏差
- 比如 中文之类 的问题
- 无法 自定义字符集
- 字符的数量, 可能会有 偏差
3. 方案2: 替换1
-
概述
- 尝试用 ex 命令行下的 s 命令
-
操作
-
vim 命令模式
-
输入命令
# 假设我只统计中文 :% s/[u4E00-u9FCC]//n
-
执行
-
-
结果
-
结果
96 matches on 96 lines
-
好像有些偏差
- ref 里可以显示 匹配字符数
- 但是我这里 显示不了
- 只有行数, 这个好像没什么用啊
-
4. 方案3: 替换2
-
概述
- 继续尝试用 ex 命令行下的 s 命令
-
操作
-
vim 命令模式
-
输入命令
# 假设我只统计中文 :% s/[u4E00-u9FCC]/&/g
-
执行
-
-
结果
-
可以正常统计
564 substitutions on 98 lines
-
-
后续
-
字符集
-
可以自己调整字符集
# 汉字 [u4E00-u9FCC] # 汉字 和 数字 [u4E00-u9FCC0-9] # 汉字, 数字, 大小写字母 [u4E00-u9FCC0-9A-Za-z]
-
-
性能
- 这个我暂时没有考虑过
- 总感觉会 慢上一些
- 这个我暂时没有考虑过
-
ps
- ref
- 在 VIM 或者 Emacs 中,如何统计选中文本的字数(汉字)?
- 一个无名用户的回答
- vim如何统计 字数
- 百度知道, 难得有用
- 在 VIM 或者 Emacs 中,如何统计选中文本的字数(汉字)?