5.10. 技巧11——能重复就不要数数
5.10 技巧11——能重复就不要数数
通过提供一个数,可以最少次化执行特定任务所需的键击。但是这并不意味着应该这么做,考虑数数 vs 重复的优缺点。
假如在缓存中有下面这段文字。
Delete more than one word.
像文字说的那样做,把它改为读作 “Delete one word”。那就是说要删掉两个单词。
有几种办法可以达到目的 ,d2w 和 2dw 都可以。d2w 调用删除命令,然后将 2w 作为动作。可以读作“删除两个单词”。然而 2dw 使用了另一种方法。这一次这个数字2应用于删除命令,但是这个动作只针对一个单词,可以读作“删除一个单词,删两次”。把语义学抛开,两种方法都得到了同样的结果。
现在考虑另外一个方法, dw.。这个可以读作“删除一个单词,然后重复”。
概括一下,有如下选项: d2w,2dw 或者 dw.——都是三次键击。那么哪一个是最好的呢?
对讨论而言, d2w,2dw 是等同的,在运行这两个当中任何一个后,可以按 u 键来撤销,被删除的两个单词都会重新出现。或者,可以用点命令重复更改,它删除接下来的两个单词,而不是撤销它。
在 dw. 的情况下,按 u 或者 . 的结果有微妙地不同。这里,更改是 dw——“删除单词”。所以如果想恢复被删除的两个单词,不得不撤销两次按 uu (或者 2u,如果你喜欢这样的话),按点命令将值删除下一个单词,而不是下两个单词。
现在假设不是删除两个单词,原来的想法是要删除三个单词,但是因为一点小的判断错误,运行了 d2w 而不是 d3w。
下面该怎么办?不能使用点命令,因为那将造成总共四个单词被删除。所以要么撤销,修改我们的计数(ud3w) 或者删除下一个单词 (dw) 来继续。
换句话说,如果使用了命令 dw., 将只需要再重复一次点命令。因为我们原来的改变是简单的 dw,命令u 和 . 有更多的粒度。每个动作一次只针对一个单词。
现在假如想删除7个单词,可以运行 d7w 或者 dw......。(那就是说 dw 跟着6次点命令)。考虑键击数量的话,我们有了一个明显的赢家。但是你能相信自己数正确吗?
数数是枯燥的,我宁愿按6次点命令,而不是花时间去提前数来减少按键的次数。如果按多了应该怎么办?没关系,只需要按一次 u 键就回来了。
记住我们的口号(见 技巧4,行动,重复,逆转):行动,重复,逆转。下面是实际操作。