关于 fzf.vim 的几点思考
涛叔最近读到一篇文章叫It’s dangerous to Vim alone! Take Fzf,其主要观点是 fzf.vim 不仅是更好的模糊文件搜索工具。还列举了 fzf.vim 的一系列功能。我觉得这些功能是没有必要的,下面细细分解。
该文章列举了 fzf.vim 的功能有:
:Buffers
搜索当前打开的文件列表:Windows
搜索当前打开的窗口列表:Lines
搜索 buffers 的内容:History
搜索曾经打开的文件列表:Marks
搜索 mark 标记:Tags
搜索 ctag 符号
一般来说,我们很少会在 vim 一次性打开很多文件,也就不会有那么多 buffer
,更用不着去搜索这些 buffer
。同理也很少去搜索 buffers
的内容了。
vim 有个快捷键叫CTRL-^
,也可以用CTRL-6
, 其功能叫Edit the alternate file
,大家可以自行谷歌。它的文档中有这样一句话:
💡TipMostly 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 行代码,但够用了。我同样也写了一篇文章,欢迎大家留言讨论。