# 好辅助：数字与 `.` 的威力

## 数字
  之前的训练中提到了数字的简单使用，如 `J` `K` 映射到 `5j` `5k`，以及使用一些插件 viw.easymotion 来减少数字的使用；这一部分我们会学习数字的使用语法以及为什么我们要减少数字的使用。

### 语法
  数字可以让我们快速进行一些重复操作，比如我们需要删除 5 个单词，不使用数字的话我们需要输入 5 次 `dw`，但使用数字的话我们可以直接 `5dw` 或 `d5w` 即可；我们可以看到这两个命令数字在不同位置，一样的命令组合，效果也一样，这跟 vim 数字使用语法有关：

  - [数字] + operator + motion：如 `5dw` `3fe`
  - operator + [数字] + motion：如 `d5w`

  :::tip 什么是 motion 和 operator ?
  motion 可以理解为字符范围，分类如：
    - words motions
    `w` 移光标至下一词
    `b` 移光标至上一词
    `e` 移光标至词末
    - Left-right motion
    `h` 光标向左移一字节
    `l` 光标向右移一字节
    `$` 移光标至行末
    `0` 移光标至行首
    `^` 移光标至本行首个非空格的字节
    - Up-down motions
    `j` 光标向下移一行
    `k` 光标向上移一行
    `gg` 移光标至整个文本的首行首个非空格字节
    `G` 移光标至整个文本最后一行首个非空格字节
    - Other motions
    `%` 移光标至匹配括号的另一端
    `H` 移光标至窗口第一行
    `M` 移光标至窗口中间一行
    `L` 移光标至窗口最后一行

  operator 为操作，如 `d` `c` `s` `x` `f`，vim 中的增删改查命令都可以理解为 operator
  :::
  
  ### 优点：

  使用数字可以让我们的命令历史记录连贯，在做撤销、重做等操作时可以有简洁的历史记录；如 `5dw`，撤销的时候一步就会撤销到五个单词删除前而不是要撤销五次

  ### 缺点：

  由于数字键的位置实在偏僻，以及在大多数情况下，我们需要比较长的思考反应时间才能使用到准确的数字达到想要的效果

## `.` 命令
  
  `.` 的作用是重复上一次的修改操作，这个修改操作是指：

  - 对字符做了更新（增删改）：如 `d` `c` `x` 之类的
  - 离开插入模式之前的按键组合

  :::tip 提示
  能够使用重复的达到效果就不用使用数字，这样有利于留下完整的回退痕迹。
  :::