05 Vim 删除、复制与粘贴
文件编辑器中删除、复制、粘贴等操作都是比较常用的功能,普通的文本编辑器这些操作都是需要用鼠标操作。那么Vim 中纯键盘是如何来操作的呢。
1. Vim VS Windows
Vim 中的删除、复制、粘贴于 Windows 下的还是有细微不同的,具体看下表:
Windows | vim | 比较 |
---|---|---|
cut | delete | vim delete 和windows 剪切差不多,不是真正的删除 |
copy | yank | 含义相同,只是为了避免c(change)冲突,改成了y(yank) |
paste | put | 粘贴含义享同而且首字母都是p,方便记忆和操作 |
2. Vim 删除、复制与粘贴基础操作
Vim 删除、复制与粘贴基础操作快捷键如下:
快捷键 | 功能 |
---|---|
d | 剪切选定文本内容 |
y | 复制选定文本内容 |
p/P | 粘贴到光标前/后 |
u | 撤销上一步操作 |
Ctrl+r | 恢复之前撤销操作 |
3. 组合操作
上节中我们已经讲了 Vim 的组合思想。在这里我再强调一下。这个思想会贯穿整个 Vim 操作。
我们同样可以在复制粘贴删除等操作中应用组合思想,一些常用组合快捷键如下:
组合快捷键 | 功能 |
---|---|
x | 删除光标下单个字符,据组合大家可以试试多个字符如何删除 |
y2w | 光标正向复制两个单词 |
D/d$ | 删除当前行光标后所有字符 |
dd | 删除当前行 |
dG | 删除光标之后所有行 |
d^ | 删除当前行光标到行首所有字符 |
daw | 删除当前光标单词 |
4. 复制删除的秘密
通过开头的对比,我们知道 Vim 中的删除和 Windows 是不一样的,更像是一种剪切。那么我们是否可以做到和 Windows 一样的彻底删除呢?
答案是可以的。这里我们需要更深入了解下 Vim 中的删除复制操作的深层理念。这个概念的根本就是我们接下来说的 Vim 第二个特色——寄存器。
4.1 寄存器概念
Vim 中的寄存器简单来说就是用于保存文本的容器。我们对不同场景划分了不同的寄存器,或者说容器。主要用于 Vim 使用中临时保存一些数据用于他用。
通过 Vim help registers 可以看到 Vim 中的 10 种寄存器:
这一个小节我们只会讲到复制粘贴删除等操作所涉及到的寄存器,重点只是让大家能直观感受下 这些操作的底层概念,更加复杂的寄存器场景后面我们会有单独的章节专门讲解。
默认情况下我们的删除复制操作都是使用的:
寄存器名 | 标识 |
---|---|
无名寄存器 | “” |
复制专用寄存器 | 数字0 |
查看寄存器:
命令模式下输入:register
复制 echo:yy
Tips: 可以看到无名寄存器和复制专用寄存器已经存入了 echo。
删除 slient:daw
可以看到无名寄存器已经更新为了 slient。无名寄存器有个特点就是后面的操作会覆盖前面的操作,所以才会引申出其他的寄存器来满足更加复杂的场景。但是可以看到复制寄存器还是 echo。这个时候我们就来试下如何根据寄存器分别粘贴不同寄存器内容。
快捷键 | 含义 | 内容 |
---|---|---|
p | 默认粘贴无名寄存器内容 | slient |
"0p | 指定粘贴复制寄存器内容 | echo |
5. 小结
我们讲解了常用的删除复制操作快捷键和组合方式。并且针对这些操作引申出了更加底层原理——寄存器。我们会在操作复制删除操作时候临时把文件内容放到这些不同的寄存器容器中,然后按需使用。达到比 Windows 更加高效的方式。