删代码一时爽,一直删一直爽。
删除应该是编码过程中非常高频率的操作了,不用vim的时候,一般就是选中删除或者跳到目标位置一直按Backspace或者Delete。而在vim中,你可以有上百中删除的姿势,比如下面这些操作。
我这里列出来的都是我日常中用的比较多的操作,且很多命令之间都是可以互相替换和组合的,比如i/a,d/s等等,这也是vim的灵活之处,大家具体场景可以活学活用。
剪贴当前光表处的字符, 默认剪贴到vim的
"("表示vim的默认寄存器,输入:reg 即查看“”对应的内容)
寄存器
删除当前光标所在的字符,并进入插入模式
选中当前字符,并删除;
选中当前字符,并更改(更改的意思就是删除并进入插入模式)
删除从光标从到当前所在单词的词尾。
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