巧用Vim可视模式进行多行多列增删改

4,821 阅读2分钟

启动方法

在 Vim 命令模式下,移动游标定位于某一个位置,键入ctrl-v后状态栏上出现 VISUAL BLOCK 字样,即进入纵向编辑模式。移动游标以按需选择待编辑的区域。

注意:在 Windows 版本的 Vim 中,键组合 ctrl-v通常被映射为文本粘贴,所以 Window 版的 Vim 的纵向编辑模式由ctrl-q启动。当然灵活的Vim 也可以由用户自行定义组合键。

纵向编辑在批量修改代码的应用演示

将数列:

1
2
3
10.1.5.214
10.1.5.212
10.1.5.210

编辑成序列:

1
2
3
ping -c 4 10.5.5.214 >> result0
ping -c 4 10.5.5.212 >> result0
ping -c 4 10.5.5.210 >> result0

这是一个将 IP 数列修改成可执行的 ping 命令序列的过程。

第一步:修改

将 IP 数列中第二段所有数字“1” 修改为“5”:

  • 将游标定位第一个行 IP 地址第二段的“1”
  • ctrl-v 进入纵向编辑模式
  • G 移动游标到最后一行,可视块覆盖所要修改的列
  • r 进入修改模式
  • 输入数字“5”
  • ESC 退出纵向编辑模式,同时所有被选中的数字都被改成了“5”,并回到命令模式

结果如下:

1
2
3
10.5.5.214
10.5.5.212
10.5.5.210

第二步:前添加

在所有行之前添加“ping – c 4 ”:

  • 将游标定位到第一行第一列
  • ctrl-v 进入纵向编辑模式
  • G 移动游标到最后一行第一列,可视块覆盖了第一列
  • I 进入行首插入模式
  • ping -c 4 输入所要求字符“ping – c 4 ”
  • ESC 退出纵向编辑模式的同时所有选中的字符前都添加了“ping – c 4 ”,回到命令模式

结果如下:

1
2
3
ping -c 4 10.5.5.214
ping -c 4 10.5.5.212
ping -c 4 10.5.5.210

第三步:后添加

在所有行之后添加">> result0":

  • 将游标定位到第一行最后一列
  • ctrl-v 进入纵向编辑模式
  • G 移动游标到最后一行最后一列,VISUAL   BLOCK  覆盖了最后一列
  • A 进入行尾插入模式
>> result 输入所要求字符">> result0"
  • ESC 退出纵向编辑模式的同时所有选中的字符后都添加了“ >> result0”,回到命令模式

结果如下:

1
2
3
ping -c 4 10.5.5.214 >> result0
ping -c 4 10.5.5.212 >> result0
ping -c 4 10.5.5.210 >> result0

总结:

以上三个步骤有一个共同特点,就是都纵向为编辑方向。以上由三行代码为例的方法同样也可以适用于更多的行。

第四步:删除列

  • ctrl+v 这样会启动可视模式,按 j/k 可以发现它能够在一列上面选中字符
  • 按下 G 这样可以从文本的第一行选中到最后一行
  • 按下 x 就会把这一列删掉 重复以上方法可以删多列。

最后

参考博文: 修改或行首、行尾添加(https://www.ibm.com/developerworks/cn/linux/l-cn-vimcolumn/index.html) 删除若干列(https://blog.csdn.net/YAJUN0601/article/details/9028877)