4.11. 技巧4——动作,重复,逆转

未匹配的标注

4.11 技巧4——动作,重复,逆转

当面对一个重复单调的任务时,通过使得动作和改变可重复化来达到优化编辑策略。 Vim 有这样的能力。它记住动作,将最常用的放在可及范围内,这样就能够轻松地重放它们。本技巧将介绍 Vim 能够重复的动作,以及怎样去逆转它们。

已经看到点命令重复最近的改变。因为许多操作被认为是一个改变,事实证明点命令用处很广泛,但是一些命令能通过其它的方法来重复。比如 @: 能用来重复任何的 Ex 命令(如技巧 31 重复最近的 Ex 命令 中所讨论的)。或者能按下 & 重复最近的 :substitute 命令,它本身恰好也是一个 Ex命令(见技巧93 重复之前的替换命令)。

如果知道如何不需要每次都拼写出动作,也可以重复它们的话,就能够更高效。首先运行动作,然后重复。

但是能够通过那么少的键击来完成当如此多的事情时,就不得不小心一点。因为很容易反应过激。不断地用力敲击 j.j.j. 感觉有点像在打鼓。 如果意外的在一行上按了两次 j 会发生什么呢?或者更糟的按的是. 键。

当 Vim 让重复动作变得容易时,它总是提供了一些撤销方法,以防我们意外地走得太远。在点命令这个例子中,我们总是可以按 u 键来撤销最近一次的改变。如果我们在使用 f{字符} 命令之后按了 ; 太多次,将错过(要查找的)符号,但是能够通过按 , 这个键来回退,它反方向的重复最近一次的 f{字符} 搜索(见技巧 50 找到通过字符查找)。

为防止步子迈得太大,知道回退档在哪里是有用的。表1 可重复的动作和如何逆转它们,总结了 Vim 可重复的命令以及它们对应的逆转动作。在大多数情况下,撤销命令是最常用的,难怪我键盘上的 u 键已经面目全非了。

表1—可重复的动作和如何逆转它们

意图 动作 重复 逆转
做一个改变 {编辑} . u
在行上查找下一个字符 f{字符}/t{字符} ; ,
在行上查找上一个字符 F{字符}/T{字符} ; ,
在文档中进行下一次匹配 /模式<CR> n N
在文档中进行上一次匹配 ?模式<CR> n N
执行替换 :s/目标/替换 & u
执行一系列的改变 qx{更改}q @x u

qx 是创建一个名为 x 的宏, 而 @x 是执行名为 x 的宏。

关于宏的例子

qaI\donnee{<Esc>A}<Esc>jq

@a

上面例子就是先按 qa 创建了一个名为 a 的宏,进入录制状态:

image-20221121064929368

接着按 I 移动到行首进入插入状态:

image-20221121065027453

然后我们输入 \donnee{,按 <Esc> 返回正常模式

image-20221121065115874

然后按 A 移动到行尾进入插入模式

image-20221121065224351

并追加 },再按 <Esc> 返回正常模式。

image-20221121065243019

然后按 j 跳到下一行

image-20221121065400309

最后按 q 结束宏的录制。

image-20221121065453319

然后就可以直接使用 @a ,给其它行添加上固定的代码标记了,提高不少效率!如下图:

image-20221121065821079

关于宏的动画演示

practical-vim-4.11

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
讨论数量: 0
发起讨论 只看当前版本


暂无话题~