一、操作符与动作
“d”命令后面可以跟任何动作,会删除从当前位置到光标移动到的目标位置的全部内容,所以“d$”与“D”的作用都是从光标所在位置一直删除到行尾
二、修改文本
“c”表示修改,change的意思,作用与“d”类似,,但是完成操作后会进入插入模式,例如“cw”会删除一个词,并且切换到插入模式,“c2wbe<esc>表示的”就是从光标处删除两个单词并插入“be”,再退出插入模式
有些快捷键经常被使用,所以被设置成了单字符命令:
单字符 | 原本组合 | 代表含义 |
---|---|---|
x | d1 | 删除当前光标下的字符 |
X | dh | 删除光标左边的字符 |
D | d$ | 删除到行尾 |
C | c$ | 修改到行尾 |
s | c1 | 修改一个字符 |
S | cc | 修改一整行 |
使用“r”替换光标所指向的单个字符
输入“ro”
三、重复一个修改
“.”重复最后一次的修改操作
例如将下面这个行代码中的<B>都删除掉
可以先将光标放在第一个<B>的<的下面,然后输入df>,然后再将光标移动到第二个<B>的<下面,按“.”重复该修改操作,修改完成
四、可视模式
假想现在有一个操作,需要你将100行的文件,每一行最前面都加上XXX的操作,那岂不是要移动一百次光标,然后按一百次“.”吗?那就太麻烦了,有没有什么操作可以批量操作的呢?当然可以,这个时候就涉及到“可视模式”了。关于可视模式,我之前还写过另外一篇文章《vim可视模式&块操作》
例如,我想把这三行的拼写错误的this改回来
这里就可以使用Ctrl+V选中这两列,然后使用“cis<esc>”修改
五、移动文本
当使用“d”删除文本的时候,这个命令更像是剪切,被剪切掉的文本会被存起来,你可以使用“p”命令将其粘贴出来(put)
那么使用“p”字符,让我们回到刚刚的那个把“this”敲成了“thsi”的操作,如何对这两个字符进行调换呢?
答案:将光标放在s下面,然后按xp
六、拷贝文本
拷贝文本有两种方式
第一种是按照上述的“d”命令更像是剪切命令,可以先把内容剪切下来,然后按“u”恢复,之后再按“p”拷贝到另一个地方。
第二种方法是使用“y”命令(yank,猛拉)。“y”命令将文字拷贝到寄存器中,然后用“p”命令粘贴。为什么vim用“p”命令而不用“c”命令表示拷贝呢?原因是“c”已经表示change了。哎,或者就记着Linux拷贝的方式很粗暴吧,猛地一下子就把文字拉出来一个备份了。
七、剪切板
如果要拷贝一行到剪切板中,使用“ "*yy ”命令,如果要粘贴回来则使用“ "*p ”。括弧,使用剪切板的前提是你的vim要支持剪切板
八、文本对象
所谓的操作文本对象就是将文本中的一句话或者一个单词当做一个对象来进行操作。如下图所示,想删除掉第一个“every”
将光标放在“every”这个单词的任意位置,输入“daw”,就可以删除该单词,因为“delete a word”
那如果是要删除“this is an example”呢?可以输入“dis”或者“cis”,“is”的含义是“inner sentence”
九、替换模式
“R”命令会启动替换模式,这个模式中,每个输入的字符都会替换掉光标所指的字符
十、结论
常用的命令总结如下: