关于 fzf.vim 的几点思考

2019-08-17

最近读到一篇文章叫It’s dangerous to Vim alone! Take Fzf,其主要观点是 fzf.vim 不仅是更好的模糊文件搜索工具。还列举了 fzf.vim 的一系列功能。我觉得这些功能是没有必要的。下面细细分解。

列举了 fzf.vim 的功能有:

一般来说,我们很少会在 vim 一次性打开很多文件,也就不会有那么多 buffer,更用不着去搜索这些 buffer。同理也很少去搜索 buffers 的内容了。

vim 有个快捷键叫CTRL-^,也可以用CTRL-6, 其功能叫Edit the alternate file,大家可以自行谷歌。它的文档中有这样一句话:

Mostly the alternate file is the previously edited file.

诚哉此言。我最常用的操作的确是两个文件来回编辑查看。如果你喜欢 vim 的多窗口操作,那建议你偿试CTRL-w p,功能就是切换到上一个窗口,再按一次就回切回来,极其方便。 所以说,fzf.vim 的:Buffers和:Windows功能都没有太大的必要。

对于历史文件列表功能,的确有用,但也仅限最近的几条历史亡,根本无需搜索。所以我也是不用这个:History功能。对于这个功能,我自己开发了一个很简单的 MRU 插件,用于记录最近使用文件列表(Most Recently Used)。我还专门写了一篇文章来讲解如何开发 vim 插件。

对于 Marks 标记,肯定就更少了。典型的用法是你要切换到其他文件,而且要切换多次,vim 只能记位上一次的位置,所以没法跳回来,此时你可以按一下 `a ,将当前位置保存到名为 a 的 mark。想跳回来就按一下 ’a。你想呀,这种 mark 怎么会有很多。mark 越多,越没有效率。所以我不推荐用这个 mark 搜索功能。

最后说说这个:Tags,从 ctag 文件搜索符号。我倒是见过有同事用这个功能。他是做 app 出身的,经常根据函数名搜代码。对于这种情况我是用 ag 加上正则来搜索的,这样更精确更灵活。

fzf.vim 的主文件有一千多行,对我来说太复杂了。这是2-8原则的典型例子,主要功能只需 20% 的代码,其他功能则需要额外 80% 的代码。

为此,我自己开发了一个精简版 fzf.vim,还不到了 50 行代码,但够用了。我同样也写了一篇文章,欢迎大家留言讨论。