持续创作,加速成长!这是我参与「掘金日新计划 · 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} | ; | , |
| 在文档中查找下一处匹配项 | /pattern | n | N |
| 在文档中查找上一处匹配项 | ?pattern | n | N |
| 执行替换 | :s/target/replacement | & | u |
| 执行一系列修改 | qx{changes}q | @x | u |
总结
一句话,practice make perfect!
参考文档
- 《Vim实用技巧》—— [英]Drew Neil