如何优雅的删除代码-VIM

删代码一时爽,一直删一直爽。

删除应该是编码过程中非常高频率的操作了,不用vim的时候,一般就是选中删除或者跳到目标位置一直按Backspace或者Delete。而在vim中,你可以有上百中删除的姿势,比如下面这些操作。

我这里列出来的都是我日常中用的比较多的操作,且很多命令之间都是可以互相替换和组合的,比如i/a,d/s等等,这也是vim的灵活之处,大家具体场景可以活学活用。

剪贴当前光表处的字符, 默认剪贴到vim的 "("表示vim的默认寄存器,输入:reg 即查看“”对应的内容) 寄存器

删除当前光标所在的字符,并进入插入模式

选中当前字符,并删除;

  • v:进入Visual模式,默认选中当前光标处字符;
  • d:删除当前选中的内容
  • 选中当前字符,并更改(更改的意思就是删除并进入插入模式)

  • v:进入Visual模式,默认选中当前光标处字符;
  • c:删除当前选中字符,并进入插入模式
  • 删除从光标从到当前所在单词的词尾。

  • diw/daw
  • 删除光标所在处的单词,i/a的区别在于i不会删除匹配符号(比如词尾的空格),a则反之

  • D/d$/
  • 删除从光标到行尾的所有内容

  • d0/d^
  • 删除从光标到行首的所有内容

  • dt{目标}
  • 删除从光标到行内目标的位置。t可以理解为 到为什么位置/直到 的意思(until)

  • df{目标}
  • 删除光标到f搜寻的目标位置(行内向后)

  • dF{目标}
  • 删除光标到F搜寻的目标位置(行内向前)

    以上d/D可以使用c/C进行替换,区别就是c会进行插入模式,d不会。

    删除 当前行

    删除当前行并进入Insert模式

    进入Visual模式并选中当前行,然后删除选中内容

  • {行首}D
  • 跳到行首,然后从光标所在处删到行尾

    这里的行首操作可以有很多选择:

    ^ 跳到当前行第一个非空(非空格等非打印字符)字符 0 跳到当前行的第一个字符 _ 效果和 ^ 相同
  • {行首}C
  • 跳到行首,删除到行尾并进入插入模式。

  • di{匹配符号}
  • 比如代码:obj.equal(( a + b) + " t his is a string");

    光标在第一个字符a的时候,输入 di( 或者 di) ,就会删除括号内容内的 a + b
    光标在停留在字符串内的字符t的时候,输入 di“ ,就会删除整个字符串内的字符,留下一个空字符串。输入 di( 或者 di) 就会删除整个equal方法括号内的所有内容,留下一个空括号。

    i 可以理解为一种对称匹配,和下面 a 不同地方在于 i 不包含目标匹配符号, a 则会包含目标匹配符号。

  • da{匹配符号}
  • 参考上面的i的操作,i/a的不同之处在于i不好喊匹配符号,a则会包含匹配符号一起操作。

  • {数字}dd
  • 从当前行开始,向下删除数字个行

  • :from,to d