Vim 进阶学习(二)—— 以退为进,重复修改

225 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第2天,点击查看活动详情

前言

每天一个进阶 Vim 命令,帮助我们提升研发效率!

在上一篇文章中,我们学习可以重复执行上次修改的 . 命令,对于 . 命令来说,实际的使用场景有很多,我希望能够通过本文学习让我们能够有种豁然开朗的感觉,原来 . 命令还可以这么用。

今天我们来学习一下 . 命令的另一个实际使用场景,字符串之间添加空格。

字符串之间添加空格

package main

var number1, number2, number3, number4 int64

func test()  {
        number1=1
        number2=4+2
        number3=6+8+3
        number4=number1+number2+number3
}

我们以一段常见的代码为例,在这段代码中,最直观的是代码不够美观,比如 = 和 + 两边都没有空格,或许连续的 + 在我们的代码中并不常见,但是不规范的 = 在我们的代码中会很常见,下面我们来看下如何用 . 命令来优化这段代码。

首先我们找到 = 位置,然后执行 s 命令, s 命令的作用就是将两个操作合并为一个,它先删除光标下的字符,然后进入插入模式。  在删除 =之后,然后我们输入 =,然后 退出插入模式。这就是所谓的 以退为进,后退一步,前进三步

这样做的好处就是我们可以用 . 命令重复这一修改,我们所要做的就是把光标移到下一个 = 处,然后用 . 命令重复这一操作即可。

同理,对于 + 的格式化也是如此。不过对于 + 的修改来说,本例中还有另外一个小窍门,就是通过 f{char} 命令查找下一处指定字符出现的位置,如果找到了,就直接把光标移到那里。因此,当我们输入 f+ 的时候,光标就会直接移到下一个 + 号所在的位置。对于 f{char} 后续我们会继续学习,在这里只是简单的提一下。

完成第一处修改后,我们可以重复按 f+ 命令跳到下一个 + 号所在的位置。不过,还有一种更好的方法可以用。; 命令会重复查找上次 f 命令所查找的字符,因此我们用不着输入4次 f+,而是只用输入一次,后面跟着再用 4 次 ; 命令。合在一起就是 ;. 命令。

这样,我们的命令又简化了。

不要仅仅的以为这只是优化了一两步,如果我们能够触类旁通,在一个大的编辑环境中,我们就会提升一大步

重复、合并命令虽然会对我们的效率有很大提升,但是如果我们不熟悉的话,可能会导致意想不到的错误,比如,我们多按了一个 j 命令,然后变成了 jj.。那么熟练的掌握撤销功能非常的重要。下面我们来看一下,可重复的操作是如何回退的。

目的操作重复回退
做出一个修改{edit}.u
在行内查找下一指定字符f{char}/t{char};,
在行内查找上一指定字符F{char}/T{char};,
在文档中查找下一处匹配项/patternnN
在文档中查找上一处匹配项?patternnN
执行替换:s/target/replacement&u
执行一系列修改qx{changes}q@xu

总结

一句话,practice make perfect!

参考文档

  • 《Vim实用技巧》—— [英]Drew Neil

往期文章