简介
fzf
(fuzzy finder)是一个用 Go 编写的通用命令行模糊查找工具,它能为任何类型的列表构建用于过滤的交互式面板,比如文件列表、命令历史记录、进程、主机名、git 提交。您可以简单地将其视为 grep 的交互式版本。
在命令行中,我们经常会执行处理列表相关的操作,比如(在不清楚目录名或文件名的情况下)切换到其他目录或使用编辑器打开文件、查看不同的 git 分支日志。而 fzf 能简化这些流程,提高您的工作效率。
快速入门
-
快速优化 shell 使用体验,比如增强
Ctrl-r
、Ctrl-t
和Alt-c
快捷键功能、为一些常用命令提供快捷补全项:# 执行下述命令即可优化对应 shell eval "$(fzf --bash)" source <(fzf --zsh) fzf --fish | source
- Ctrl-r:将历史记录中选定的命令粘贴到命令行上
- Ctrl-t:将选定的文件和目录粘贴到命令行上
- Alt-c:cd 进入所选目录
- 快捷补全项:
cd **<TAB> cd ~/**<TAB> kill -9 **<TAB> ssh **<TAB> unalias **<TAB>
-
定制一个交互式
cd
选择器:alias fcd='cd "$(find . -type d | fzf --preview="ls -la {}")"' fcd # 启动交互式 `cd` 选择器
-
定制一个交互式
vi
选择器:alias fvi='vi "$(find . -type f | fzf --preview="cat {}")"' fvi # 交互式 `vi` 选择器
-
定制一个交互式
git
分支选择器:alias gcb='git branch | fzf | cut -c 3- | xargs git checkout' gcd # 启动交互式 `git` 分支选择器
-
使用案例:
功能特点
- 可移植,无依赖:支持在 Windows、Linux、macOS 等操作系统上使用它,且无需额外安装第三方依赖。
- 速度极快:使用高效的模糊匹配算法和预处理技术,能迅速地处理大量数据。
- 功能集全面:fzf 提供了非常多的功能,包括模糊匹配、多选、预览、自定义布局、自动补全等。
- 支持 Vim/Neovim 插件和键盘事件绑定
竞品和相关项目
- x pick:x-cmd 开发的命令行数据选择器,由 shell 和 awk 编写,功能没有
fzf
丰富,支持在主流 posix shell 上运行。 - skim:一个用 Rust 编写的通用命令行模糊查找工具,与
fzf
类似。 - forgit:使用
fzf
增强git
使用体验的 shell 脚本集合。 - fzf-tab:一个
zsh
插件,能将zsh
的默认补全选择菜单替换为fzf
面板。 - fzf.vim:使用 vim script 编写的插件,能在使用
Vim/Neovim
查找文件、缓冲区、命令时提供模糊查找功能。 - fzf-lua:用
lua
重写的fzf.vim
。
进一步阅读
- fzf 源代码 - fzf 项目的源代码托管在 GitHub,你可以在这里找到最新版本的 fzf 和参与社区贡献。
- fzf 官方文档 - 学习和使用 fzf 的官方网站,提供了 fzf 的文档、教程和社区资源。
- fzf 社区分享的各种实用脚本 - 其中提供了大量的 fzf 使用案例。
更多内容请查阅 : pkg/fzf
转载请标明原文链接 :https://www.x-cmd.com/pkg/fzf
关注微信官方公众号 : oh my x
获取开源软件和 x-cmd 最新用法