让人相见恨晚的 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 最好的模糊查詢插件

15834 次点击
所在节点    Vim
32 条回复
tracyone
2017-09-07 18:00:43 +08:00
相见恨晚的,vim 多进程异步执行插件

https://github.com/tracyone/neomake-multiprocess
aheadlead
2017-09-07 18:04:34 +08:00
Star 已送上 试一试
bigzhu
2017-09-07 18:13:07 +08:00
正好在找,用了看看
TangMonk
2017-09-07 18:21:36 +08:00
让 ctrlp 使用 ag 啊
let g:ctrlp_user_command = 'ag %s -l --nocolor -g ""'
we000
2017-09-07 18:34:03 +08:00
fzf.vim 路过
fityme
2017-09-07 18:38:34 +08:00
同楼上(虽然已经用 jetbrains 全家桶了
4faramita
2017-09-07 23:13:09 +08:00
竟然通篇没提 fzf
mzlogin
2017-09-07 23:39:10 +08:00
一起在用,还提过两个 Issue,支持一下。
firenine
2017-09-08 00:44:03 +08:00
JB 家的 IDE 双击 shift
jkmmmm
2017-09-08 06:21:22 +08:00
比起 fzf 有什么优势没?
Shura
2017-09-08 07:30:38 +08:00
Yggdroot
2017-09-08 07:51:42 +08:00
@jkmmmm 大约一年前,fzf 的模糊匹配算法很垃圾,只会根据匹配长度做排序。前几天我又用了下,它的匹配算法好像比以前好了。有空我好好用一下 fzf 做一下对比。
不过现在已知的比 fzf 最明显的优点是:在 windows 下,fzf 可以说没法用。
yedashuai
2017-09-08 09:39:20 +08:00
star 已经献上,虽然是 jetbrains 全家桶爱好者
Numbcoder
2017-09-08 09:56:54 +08:00
我来说一下 fzf 的缺点吧,只能在终端下用,不能在 GVim 和 MacVim 下用
xomix
2017-09-08 11:13:21 +08:00
又见 vim,想起来怎么生成随机字符串的梗………………
pony279
2017-09-08 11:42:03 +08:00
个人喜欢 fzf 的原因是有几十万个文件或更多的时候 ui 几乎没有明显卡顿,LeaderF 在这方面好像还不够,刚刚试了下有点小卡,当然已经比 ctrlp 好很多了。

fzf 的接口定义的也挺清晰,所以做了一堆拓展,https://github.com/junegunn/fzf.vim 。现在用的比较多的是 FZFAg,FZFHistory,FZFFiles。其中 FZFAg 在 LeaderF 里面找不到对应项。相信这个在 LeaderF 里面也不是什么难事。

持续关注。
pony279
2017-09-08 11:44:04 +08:00
用 FZF 还有一个弊端,插件需要下载 github 上发布的二进制文件,在新的机器部署的时候经常速度很慢(天朝网络原因)
tracyone
2017-09-08 11:54:27 +08:00
@pony279 leaderf 有调用外部程序的接口,而且是自动选择那个最快的
NoAnyLove
2017-09-08 11:55:49 +08:00
看到作者的用户名有点眼熟,然后才发现原来是因为我在用 indentLine
NoAnyLove
2017-09-08 12:02:05 +08:00
大致看了一下 README,好像没有 CtrlP.vim 那种 CtrlPMixed 混合搜索模式

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

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

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

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

© 2021 V2EX