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. 字符信息

      2. 注意

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

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

      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  轩辕拾銉  阅读(2574)  评论(0编辑  收藏  举报