让人相见恨晚的 vim 插件:模糊查找神器 LeaderF

2017-09-07 15:42:18 +08:00
 Yggdroot

提到 vim 的模糊查找插件,很多人第一反应是 ctrlp.vim ,ctrlp 知名度很高,但跟其它的同类插件相比,它的唯一优点是用 vimL 编写(这让它的性能是所有同类插件中最差的)。本文向大家推荐一款模糊查找插件——LeaderF,无论是从性能还是匹配精度上,都远远超越 ctrlp。

LeaderF是什么?

LeaderF 是一个用 Python 写的 vim 插件,可以在成千上万数十万个文件中,通过模糊查找的方式,快速找到目标文件。它还有很多衍生功能:快速打开或定位某个 buffer、最近使用的文件( mru )、tags (包括函数、类、变量等)、命令历史、文件中的某一行、vim 的 help、marks 等等。

查找文件

文件查找是 vimer 的常用操作,海量文件中快速定位目标文件是很多 vimer 迫切需要的功能,所以就有了 ctrlp 这样的插件。但 ctrlp 性能不佳,而且有时候把目标文件名都输入进搜索栏还是找不到目标文件,最大的问题是它的模糊匹配算法不佳,经常排在前面的跟所要找的相去甚远。LeaderF 采用异步检索和精心设计的模糊匹配算法完美地解决了这些问题,当你在根目录(/)按下搜索命令,再也没有想剁手的冲动了; 查找文件时,用更少的键击次数就可以找到目标文件, 延长你的键盘使用寿命 :)

快速定位 tags (包括函数、类、变量等)

有了它,tagbar 可以淘汰掉了:

查找历史命令

切换 Colorscheme


当然还有其他功能就不一一展示了,感兴趣的小伙伴可以查看这里

你不知道的细节

abcDef
AbcDef
abcDEf
aBcDeF

但不能匹配:

abcdef
Abcdef

注意abcef仍然是大小写不敏感的 这样可以通过大写字母,在搜索过程中快速缩小搜索范围。

开箱即用

上面所有的功能都不需要额外的配置,只要装好 LeaderF 插件就可以使用了,不像有的插件,配置就像一门新的脚本语言。

最后

LeaderF 还支持写扩展程序,这里是一个样例。

友情链接:LeaderF,也許是 Vim 最好的模糊查詢插件

15831 次点击
所在节点    Vim
32 条回复
simple26
2017-09-08 12:22:49 +08:00
@Numbcoder fzf 已经支持在最新的 GVim 中使用了 使用了 Vim 的 terminal 特性

https://github.com/junegunn/fzf/pull/1019,https://github.com/junegunn/fzf/commit/a8deca2dd92742b7e37783fd5629bef701d236ed

虽然我已经很少用 Windows 但是应该不是无计可施的 至少 https://github.com/mattn/vim-fz README 的 gif 就是在 Windows 下面使用的 所以相信 fzf 应该也是可用的

fzf 也不是没有缺点 见 https://github.com/mattn/vim-fz/pull/3

LeaderF 还是挺好的 比 CtrlP 快
Chingim
2017-09-08 12:37:45 +08:00
名字有点熟, 原来是 indentLine 的作者, 记得还提交过 PR.

支持新插件, 待会试试
tamlok
2017-09-08 12:59:54 +08:00
之前一直用,但后来因为机器不一定有 python 环境,所以还是用回 ctrlp 了。leaderf 能否提供一个 fallback 呢?统一用 leaderf 的命令,但当没有 python 支持时调用 ctrlp 的命令。谢谢!
Yggdroot
2017-09-08 13:02:21 +08:00
@tamlok 这项工作不应该是 LeaderF 做的,你可以直接在 vimrc 里做。
tamlok
2017-09-08 13:07:15 +08:00
@Yggdroot 所以能不能在项目主页给出一个解决方案?很多人并不一定懂得 vimscript。这样也可以作为解决 python 依赖的一种方法?谢谢
tracyone
2017-09-08 13:08:54 +08:00
@tamlok 你可以判断 if has("puthon") 加载 leaderf 否则加载 ctrlp ……
bookit
2017-09-08 13:23:45 +08:00
楼主,安装 C 插件之后失败,

我用的 nvim,是不是没考虑到 nvim 各种配置和 vim 不一样了。。
Yggdroot
2017-09-08 13:28:31 +08:00
@bookit 没有不一样,兼容 nvim,装 c 跟用的是 vim 还是 nvim 没关系,你可以在 github 上开个 issue,把错误贴出来,这里不适合讨论这个。
ashfinal
2017-09-08 19:51:54 +08:00
想知道“快速定位 tag ”是需要额外安装或者设置什么吗?支持哪些文件类型?

我现在缺一个 outliner 的东东。
Yggdroot
2017-09-08 20:29:33 +08:00
@ashfinal 需要电脑上装有 ctags,ctags 支持的文件类型都支持。如果需要支持更多的文件类型,使用 https://github.com/universal-ctags/ctags,是 ctags 的维护版本,支持几乎所有语言。
可以用`ctags --list-languages`查看,你使用的语言肯定在里面。
acgtyrant
2018-03-13 15:25:52 +08:00
一句节约你的时间:这插件不支持 Mixed.
Yggdroot
2018-03-16 12:54:27 +08:00
@acgtyrant 感觉没必要支持 mixed.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/388940

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX