-
概述
- 使用 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 中,如何統計選中文本的字數(漢字)?