0%

VIM基础学习(第四节:粘贴命令、替换命令、替换模式和修改命令)转自:鱼C论坛

前方高能:今天会举很多个栗子!

img

粘贴命令

尽管上节课最后有写重大备注,但我知道肯定有些鱼油还是没看到,就只看到这个:

img

这里再次强调下:在 VIM 下使用删除命令,并不会直接将你的东西删掉,而是放到 VIM 的寄存器中。这样做有一个好处,就是可以让我们简单的实现类似于 Windows 的剪切功能。

img

使用 p 命令可以将最后一次删除的内容粘贴到光标之后。(大写的 P 则是粘贴到光标之前)

img

上边的栗子本来是:
Line One
Line Three
Line Two
Line Four

我只需将光标放在 Line Three 处,然后按下 dd 命令,再按 p 命令,即可将 LineThree 和 Linet Two 的顺序调换过来。是不是很方便呢?

img

这里需要注意的是:如果你需要粘贴的是整行为单位,那么 p 命令将在光标的下一行开始粘贴;如果你拷贝的是非整行的局部字符串,那么 p 命令将在光标后开始粘贴。

拷贝命令

其实我们用的最多的还是拷贝粘贴,VIM 用 y 命令实现拷贝。语法跟删除的 d 命令一样:y motion

其中的 motion 同样是用来表示操作范围的指令,即 yy 表示拷贝当前行,3yy 则表示拷贝 3 行;y$ 表示从光标所在的位置拷贝到行尾的所有字符;yG 则表示从光标所在行拷贝到文件末尾行的所有字符。

拷贝完成之后同样使用 p 命令进行粘贴,没什么好说的。

替换命令

VIM 还提供了一个简单的替换命令:r 命令。

r 用于替换光标所在的字符,做法是先将光标移动到需要替换的字符处,按一下 r 键,然后输入新的字符。注意,全程无需进入插入模式,也不会进入插入模式。

img

然后你可能猜到了,数字 + r 可能会产生一些物理反应。先输入【数字】再输入 r,最后输入新字符,说明从当前光标的位置开始,替换【数字】个新字符。

再举个栗子:

第一行,先将光标移动到字符 A 处,按下 r 键,再按下 C;
第二行,先将光标移动到第一个字符 B 出,按下 3r 键,再按下 C。

img

替换模式

对于需要替换多个字符,更好的方案是直接进入替换模式。按下大写的 R 键,屏幕左下角出现 – REPLACE – 字样,说明你已经处于替换模式。此时输入字符可以连续替换光标及其后边的内容。注意:退格键(Backspace)在替换模式中被解释为如果左边内容被替换过,则恢复到原来的样子;如果没有被替换过,则简单的向左移动。修改完毕后,按下 Esc 回到普通模式。

哎,怕你不懂,还是举个栗子做示范吧

img

img

修改命令

修改跟替换是不一样的!
修改跟替换是不一样的!
修改跟替换是不一样的!

重要的事情要说三遍……

修改会进入插入模式,替换不会进入插入模式!
修改会进入插入模式,替换不会进入插入模式!
修改会进入插入模式,替换不会进入插入模式!

img

修改命令我们使用 c 键来启动,格式是:c [number] motion

没错,motion 依然表示范围,[数字]依然拥有奥义,同样是可选的,加上数字表示重复执行多次 motion 范围……

比如 cw 是修改光标指定单词的内容(VIM 的做法就是删除当前光标位置到下个单词前的所有字符,并进入插入模式);而 c2w 便是修改当前光标指定的单词以及下一个单词共计两个单词的内容……

按键 含义
c0 删除光标从当前位置(不包含)到该行行首的所有字符,并进入插入模式
c^ 同上
c$ 删除从光标当前位置(包含)到该行行尾的所有字符,并进入插入模式
cb 删除从光标当前位置(不包含)到单词起始处的所有字符,并进入插入模式
ce 删除从光标当前位置(包含)到单词结尾处的所有字符,并进入插入模式
cw 删除从光标当前位置(包含)到下个单词起始处的所有字符,并进入插入模式
ch 删除光标前边一个字符,并进入插入模式
cl 删除光标指定的字符,并进入插入模式
cj 删除光标所在行以及下一行的所有字符,并在光标下一行进入插入模式
ck 删除光标所在行以及上一行的所有字符,并在光标下一行进入插入模式
cc 删除光标所在行的字符,并进入插入模式

所以,事实上,修改 == 删除 + 进入插入模式

好吧,我发现我发现了一个惊人的事实!

img

嘿嘿,也不完全是这样的哦,因为两者在定位光标上是不完全一样的!但你完全可以认为它们是想通的,因为在实际操作上,并不会影响影响影响你的……

img