# 更进一步：认识 vim 语法
  经过前两天的练习，相信你对 vim 的感觉已经上来了；这时你就需要了解一下关于 vim 的语法知识，通过学习语法，你不仅仅可以把前面学习的内容进行复习和融会贯通，还能举一反三，更加明白 vim 的使用方法和功能。
## 语法
  vim 的语法主要指操作的组合，从而完成系列常用的操作。为 **操作 + 范围**。

  1. 操作：如 `d`、`c`、`y`
      - `d`：删除
      - `c`：删除并进入 insert 模式
      - `y`：复制
  2. 范围：如 `h`、`l`、`^`、`g _`
  3. 搭配使用：
      - `d h`：删除当前光标前一个字符
      - `d j`：删除当前光标所在行和下一行
      - `d g _`：删除到行尾

## 基于单词的光标移动

  - `b`：光标跳到当前所在光标的单词开头，如果光标已在该单词的开头，则跳到下一个单词的开头
  - `e`：光标跳到当前所在光标的单词结尾，如果光标已在该单词的结尾，则跳到下一个单词的结尾
  - `w`：光标跳到下一个单词的开头
  - `g e`：光标跳到上一个单词的结尾

## 常用搭配

  - `d e`：删除到单词尾
  - `e a`：在当前单词后插入
  - `d w`：删除到下个单词前（`c w` 功能相同，但会保留下个单词前的空格）

## 拓展

1. `D` 删除到行尾（包括blank字符）

:::warning 问题
- `d ^`：删除到行首操作会有光标所在的字母没有删除到
- `c w`：删除到下个单词前会保留下个单词前的空格，`d w` 则不会
:::

## 小训练
先敲出以下代码，然后修正以下代码中的错误单词、重复单词、错误格式、多余行，修改函数名为 typing 并为定时器添加 300 毫秒延迟
```js
const bbb = () => {
  // this is is a description
  //
  //   another descriptttion 
  const timer   = setTimeout(( ) => {
    console.log(that) alert('cool!')
    // awosome man !
  })
}
```