读书札记之 —— 《Vim 实用技巧》

Tips1 你应该从今天就开始阅读

这是我第三次尝试读完这本书,也是第一次成功读完它。前两次读这本书的时候总是各种 原因读了几章之后就放弃了,不是书不好,只是那时候没有足够的时间和耐性。Tips性 质的书籍总会让我觉得,嗯,明天再读下一条Tips也可以,反正前后也没有太大的联系 ,于是明天之后的明天的明天我还是没有把这本书看完。也许我早些读完这本书,我不会 自不量力的写那些关于Vim的文章,因为那些文章看上去有些误人子弟了。

Tips2 理解快捷键的内在逻辑

毋庸置疑的是这是一本非常好的Vim书籍,我用Vim已经有两年左右的历史了,但是看完之 后还是觉得自己是小学生的水平。Vim的使用不是简简单单的记住几个快捷键就可以的,很 多时候,我们需要知道这些快捷键的内在逻辑。

Tips3 慢点开始,因为你可能走错了方向

我从一开始用Vim的时候就可以使用各种vimrc的配置,使用自定义的一些快捷键完成自己 更高效的一些操作。现在想来一开始就是错的。我们需要花时间去把锯子磨利,而一开始 胡乱的配置只会让我们把锯子越磨越钝,作者说的对,其实很可能我们磨错了边。

Tips4 不要太过于依赖插件

我之前学习Vim,最先想到的是它的插件,因为我一直认为Vim核心功能很少,功能不够强 大。实际上,Vim的核心功能已经非常强大,只是我一直不知道。在使用插件之前先考虑一 下你的功能是否可以使用核心功能完成。

之所以这么说,是因为核心功能的适用性要比插件广泛太多,你可以使用IDE中安装Vim模 拟器来使用Vim的核心功能,但是你没有办法在IDE的Vim模拟器中使用Vim的插件。Vim的核 心功能是放之四海而皆准的东西,这些东西相当于是一个人的内功,插件通常只是招式。

Tips5 移动光标的方式不只有 hjkl

对于初学Vim的人来说,它最奇怪的地方估计是使用hjkl来替代方向键。之所以使用这四 个键是一个历史遗留问题,原因可以参考之前写过编辑利器 Vim 之快捷键配置 一文。

这四个按键的效率比方向键效率高很多,因为你不用偏离键盘的关键行(也就是hjkl一 行)。因为这种诡异性和便捷性,我一度以为移动光标最快的方式是 hjkl 这四个键。 然而实际上,这是大错特错。

对于同一行的移动,hl是最慢的方式,因为它们的移动是以字符为单位的。w,e,b,ge 这四个键比前面两个要快很多,因为它们是基于单词的(当然还有大写的W和E等对应版本 )。可是最快的方式是f, F, t, T结合;,,因为它们很多时候可以直达你想要到 达的地方。比如:

1
#include <iostream>

光标在#的时候,想要把 iostream 替换成 string,使用l移动到目标位置,你需 要按10次,使用w你需要3次,使用f你只需要1fo就可以了(然后使用 ciw 进 行替换)。

如果你想要在行之间移动,jk这两个按键同样不是最快的方式,因为它们一次只能移动 一行,使用/这种方式通常会快很多。没错就是搜索,你可以通过搜索快速的到达你想要 的位置,对我来说,这是一种思维方式的转变。Vj可以选择两行代码,V/}可以通常可 以选择一块代码。当然最快的还不是这个,使用 vi} 你可以以最快的方式选择代码块中 的内容,对我来说,这是神技。

Tips6 正则表达式很重要

最近总是和正则表达式打交道,从使用Python的正则表达式写爬虫开始,到后来从《程 序设计实践》一书中了解grep的实现,再到后来看C++11的正则表达式库。现在发现 Vim中无处不在的正则表达式。搜索可以用正则,替换可以用正则,global命令还是可以用 正则。

Tips7 Vim 自带自动补全功能

很多人不用文本编辑器的原因很简单,因为他们认为只有IDE才有自动补全功能。实际上, Vim自动自动补全功能,而且非常强大。即使不用 YouCompleteMe这一类的插件你也可以 得到非常好的补全功能。