VIM - 字数统计

  1. 概述

    1. 使用 VIM 作简单字数统计
  2. 背景

    1. 想做一个简单的 字数统计
  3. 环境

    1. OS
      1. win10
    2. shell
      1. mintty-2.9.4

1. 需求

  1. 概述

    1. 需求
  2. 需求

    1. 统计文段内字符的数量
    2. 支持 自定义字符集

2. 方案1: vim 自带统计

  1. 概述

    1. vim 自带方案
  2. 操作

    1. 定位到 文段内某行

    2. vim 标准模式

    3. 输入

      g
      ctrl + g
      
  3. 结果

    1. 在 vim 底部, 有 统计信息

      # 统计信息我后面讲
      Col 16-15 of 39-31; Line 38 of 102; Word 72 of 189; Char 389 of 1232; Byte 565 of 1862
      
  4. 统计信息

    1. Col 16-15 of 39-31

      1. 列信息
        1. 注意
          1. 因为这一列 有中文, 所以会出现这种情况
          2. 没有中文, 大概会是这样 Col 16 of 39
            1. utf-8 中, 长度大于 1个字节 的字符
        2. 解释: 不含中文 - Col 16 of 39
          1. 当前光标, 处在 16 列
          2. 当前行, 一共有 39 列
        3. 解释: 包含中文 - Col 16-15 of 39-31
          1. 当前光标, 在 16 列, 第 15 个字符
          2. 当前行, 一共有 39 列, 但是只有 31 个字符
    2. Line 38 of 102

      1. 行信息
        1. 解释
          1. 本文一共 102 行
          2. 当前光标处在, 38 行
    3. Word 72 of 189

      1. 单词信息
        1. 解释
          1. 本文一共 189 个单词
          2. 当前光标, 处在第 72 个单词
    4. Char 389 of 1232

      1. 字符信息

        1. 略
      2. 注意

        1. 如果文本都是 英文 或者 数字, 不会出现这个项
        2. 统计内容成谜
          1. utf-8 字符
          2. 字母
          3. 数字
          4. 换行
          5. 还有一个不知道的字符
            1. 总要占一个
            2. 但就是找不到
      3. 建议

        1. 除非是 比较粗 的统计, 不建议使用这个字段
          1. 字符集无法定义
          2. 全文内容
    5. Byte 565 of 1862

      1. 字节信息
        1. 略
  5. 问题

    1. 字符的数量, 可能会有 偏差
      1. 比如 中文之类 的问题
    2. 无法 自定义字符集

3. 方案2: 替换1

  1. 概述

    1. 尝试用 ex 命令行下的 s 命令
  2. 操作

    1. vim 命令模式

    2. 输入命令

      # 假设我只统计中文
      :% s/[\u4E00-\u9FCC]//n
      
    3. 执行

  3. 结果

    1. 结果

      96 matches on 96 lines
      
    2. 好像有些偏差

      1. ref 里可以显示 匹配字符数
      2. 但是我这里 显示不了
        1. 只有行数, 这个好像没什么用啊

4. 方案3: 替换2

  1. 概述

    1. 继续尝试用 ex 命令行下的 s 命令
  2. 操作

    1. vim 命令模式

    2. 输入命令

      # 假设我只统计中文
      :% s/[\u4E00-\u9FCC]/&/g
      
    3. 执行

  3. 结果

    1. 可以正常统计

      564 substitutions on 98 lines
      
  4. 后续

    1. 字符集

      1. 可以自己调整字符集

        # 汉字
        [\u4E00-\u9FCC]
        # 汉字 和 数字
        [\u4E00-\u9FCC0-9]
        # 汉字, 数字, 大小写字母
        [\u4E00-\u9FCC0-9A-Za-z]
        
    2. 性能

      1. 这个我暂时没有考虑过
        1. 总感觉会 慢上一些

ps

  1. ref
    1. 在 VIM 或者 Emacs 中,如何统计选中文本的字数(汉字)?
      1. 一个无名用户的回答
    2. vim如何统计 字数
      1. 百度知道, 难得有用
posted @ 2020-07-07 11:55  轩辕拾銉  阅读(2946)  评论(0)    收藏  举报