# 放慢脚步：删改重做，提升效率的新姿势

在日常使用中，我们有个功能是常常需要用到的，就是删除；前面我们学了 `d` `c` 这些指令，但是我们要进行删除一行中的某些字符时，要么得先用 `v` 选中内容然后 `d` 或 `c`，不然只能用键盘上的退格（删除）键。但是键盘的删除有几个问题：

  - 键盘的 Delete 按键太远，每次按都要移动手掌
  - 删除按键是单字符删除，删除效率低
  - 系统的删除与 vim 的配合不够契合

  既然如此，我们来看看 vim 是如何解决这些问题的。

## 删除
  
  对于删除，可以使用一下指令（命令模式中）：

  - x：删除当前光标所在字符
  - X：删除当前光标所在字符的前一个字符
  - s：删除当前光标所在字符并进入 insert mode
  - S：删除当前光标所在行的除缩进外的所有内容并进入 insert mode

## 替换
  
  对于有些情况下，我们可能要修改部分字符，比如修改某个函数的名称；虽然我们可以先删除，再重新键入，但是在 vim 中有更好的方法：

  - r + 字符：替换当前光标所在字符
  - R + 字符：替换当前光标开始的多个字符

## 撤销/重做
  对于一些误操作，我们常常需要撤销或重做，大部分软件中都有这个操作，vim 也不例外：

  - `u`：撤销一次操作的内容
  :::info 提示
  normal mode => insert mode => normal mode 为一次操作，或在 insert mode 中进行了光标移动也会增加一次
  :::
  - `ctrl + r`：重做

## 小训练

```js
const bbb = () => {
  // this is is a description
  //
  //   another descriptttion 
  const timer   = setTimeout(( ) => {
    console.log(that) alert('cool!')
    // awosome man !
  })
}
```