技巧68-在连续的文本行上重复修改

  • 对于多行范围内的重复性改动,可以先录制一个宏。然后再在没一行上回放,这将会极大减轻我们的工作量。
  • 该功能可用串行或并行两种执行宏的方式实现。

demo1

  • 目标文本
1. one
2. two
3. three
4. four
  • 转换后的文本
1) One
2) Two
3) Three
4) Four

录制工作单元。

  • 先在第一行上做出修改,并将其录制下来。
qa 开始录制宏保存到a寄存器
0f. 将光标先放在行首,查找.符号
r) 将.替换成)
w~ w移动大下一个单词的首字母 ~大小写反转
j 跳转到下一行
q 结束宏录制
3@a 调用宏3次。
  • 并行方式1:使用可视模式选择选区。
VG: normal @a
  • 并行方式2:使用行号指定范围执行宏命令。
:2,4 normal @a

demo2

  • 目标文本
1. one
2. two
//test
3. three
4. four
  • 转换后的文本
1) One
2) Two
//test
3) Three
4) Four
  • demo2如果使用demo1中的串行方式允许到test相应行就会出错,这个时候需要用并行方式。

决策:串行还是并行?

  • 串行或者并行,哪种方式更好呢?答案是看情况。
  • 以并行的方式在多处执行更为健壮。
  • 如果在执行时遇到一处错误,而我们正想利用这些警告更正错误时,以串行、多次的方式执行宏可以更容易定位出问题所在。
  • 在掌握这2种技术后,可以自己判断在哪种情况下应该使用哪种方式了。

总结

  • 基础知识点回顾
  • qa 录制宏保存在a寄存器
  • q结束录制宏
  • 3@a 3次调用寄存器a里面的宏
  • 0跳到行首
  • f. 查找字符.
  • r) 替换当前字符为)
  • w 向前移动一个字符
  • ~ 字符大小写反转
  • j 向下移动一行
  • :2,4 normal @a 底行模式在2到4行执行命令寄存器a中保存的宏
  • VG 进入可视模式选择行从当前行到最后一行
  • 使用串行还是并行,具体看情况而定。