刚刚我们提到的简单的 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
.....中间省略......

这个文件我将他放置到http://linux.vbird.org/linux_basic/0310vi/hosts,你可以自行下载来看一看这个文件啊!现在我们来玩一玩这个文件吧!假设我想要将 host1, host2... 等等复制起来, 并且加到每一列的后面,亦即每一列的结果要是“ 192.168.1.2 host2.class.net host2 ”这样的情况时, 在传统或现代的窗口型编辑器似乎不容易达到这个需求,但是咱们的 vim 是办的到的喔!那就使用区块选择 (Visual Block) 吧!当我们按下 v 或者 V 或者 [Ctrl]+v 时, 这个时候光标移动过的地方就会开始反白,这三个按键的意义分别是:

区块选择的按键意义
v 字符选择,会将光标经过的地方反白选择!
V 列选择,会将光标经过的列反白选择!
[Ctrl]+v 区块选择,可以用长方形的方式选择数据
y 将反白的地方复制起来
d 将反白的地方删除掉
p 将刚刚复制的区块,在光标所在处贴上!

来实际进行我们需要的动作吧!就是将 host 再加到每一列的最后面,你可以这样做:

  1. 使用 vim hosts 来打开该文件,记得该文件请由 上述的链接 下载先!
  2. 将光标移动到第一列的 host 那个 h 上头,然后按下 [ctrl]-v ,左下角出现区块示意字样:

    图9.3.3、vim 的区块选择、复制、贴上等功能操作

  3. 将光标移动到最底部,此时光标移动过的区域会反白!如下图所示:

    图9.3.4、vim 的区块选择、复制、贴上等功能操作

  4. 此时你可以按下“ y ”来进行复制,当你按下 y 之后,反白的区块就会消失不见啰!

  5. 最后,将光标移动到第一列的最右边,并且再用编辑模式向右按两个空白键,回到一般指令模式后, 再按下“ p ”后,你会发现很有趣!如下图所示:

    图9.3.5、vim 的区块选择、复制、贴上等功能操作

通过上述的功能,你可以复制一个区块,并且是贴在某个“区块的范围”内,而不是以列为单位来处理你的整份文件喔! 鸟哥个人是觉得这玩意儿非常的有帮助啦!至少在进行排列整齐的文字文件中复制/删除区块时,会是一个非常棒的功能!

results matching ""

    No results matching ""