前言
则才我们提到的简单的vi操作过程中,几乎提到的都是以行为单位的操作。那么如果我想要搞定的是一个块范围呢?举例来说,像下面这种格式的文件:
192.168.1.1 host1.class.net
192.168.1.2 host2.class.net
192.168.1.3 host3.class.net
192.168.1.4 host4.class.net
...
假设我想要将host1, host2等复制起来,并且加到每一行的后面,也即每一行的结果要是
“192.168.1.2 host2.class.net host2”
这样的情况时,一般编辑器似乎不容易达到这个需求,但是咱们的vim是可以的。那就是使用块选择(Visual Block)。当我们按下v或V或者[Ctrl] + v时,这个时候光标移动过的地方就会开始反白,这三个按键的意义如下表如示
按键 | 意义 |
---|---|
v(小写) | 字符选择,会将光标经过的地方反白选择 |
V(大写) | 行选择,会将光标经过的行反白选择 |
[Ctrl]+v|块选择,可以用长方形的方式选择数据 | |
y | 将反白的地主复制 |
d | 将反折的地方删除 |
举例
下面实际进行我们需要的操作。就是将host再加到每一行的最后面,我们可以这样作:
- 将光标移动到第一行的host那个h上头,然后按下[Ctrl]+v,左下角出现块示意
- 将光标移动到最底部,此时光标移动过的区域会反白
- 此时可以按下”y”来进行复制,当你按下y之后,反白的块就会消失不见。
- 最后,将光标移到到第一行的最右边,并且再用编辑模式向右按两个空格键,回到一般模式后,再按”p”后,你会发现很有趣
通过上述的功能,你可复制一个块,并且是贴在某个“块的范围”内,而不是以行为单位来处理你的整份文件。这玩意儿是非常有帮助的,至少在进行排列整齐的文本文件中复制/删除块时,会是一个非学棒的功能。
参考文献
《鸟哥的私房菜-基础学习篇》