fzf 简介
fzf 是一款免费开源的命令行模糊查找工具。把任何列表交给它,比如文件、命令历史、Git 分支或正在运行的进程,再输入几个字母,fzf 就会立即显示最接近的匹配项,即使这些字母并不相邻,然后返回你选中的那一项。它是一个小巧的单一程序,能在几毫秒内处理数百万个项目。fzf 由 Junegunn Choi 开发,以 MIT 许可证发布。
fzf 在 Apple 芯片 Mac 和 Intel Mac 的“终端”中运行,可通过 Homebrew(brew install fzf)安装。它与 Zsh、Bash 和 Fish 的集成会添加三个实用的快捷键:Control-T 插入文件,Control-R 搜索命令历史,Option-C(Alt-C)跳转到文件夹。它还提供 Vim 和 Neovim 插件。
主要功能
fzf 适用于你能在“终端”中输出的任何列表。
- 模糊匹配:按顺序输入几个字母即可找到项目,字母之间可以不连续。
- 快速:几毫秒内处理数百万个项目。
- 单一程序:只有一个小文件,没有任何依赖。
- Shell 快捷键:Control-T 选文件,Control-R 查历史,Alt-C 切换文件夹。
- 模糊补全:输入 ** 再按 Tab 键,即可补全路径等内容。
- 预览窗口:在列表旁显示文件内容或其他详情。
- Vim 和 Neovim:在编辑器中搜索文件、缓冲区等内容的插件。
- 高度可定制:快捷键、布局、颜色和操作都可以修改。
0.74.5 版本新功能
fzf 0.74.5 修复了多个错误。
- 修复在 tmux 3.8 或更高版本中,在已放大的窗格上打开 --popup 时会取消窗口放大的问题
- 修复 --gap-line 在行尾截断字符簇的问题
- 修复无法识别的转义序列混入查询内容的问题
- 修复与转义序列同时到达的按键丢失的问题
- 修复重新加载后不触发 focus 事件的问题
fzf 常见问题
fzf 免费吗?
是的。fzf 免费且开源,以 MIT 许可证发布。
如何在 Mac 上安装 fzf?
如果使用 Homebrew,在“终端”中运行 brew install fzf。GitHub 发布页面上也有适用于 Apple 芯片 Mac 和 Intel Mac 的预编译程序。
如何在 Zsh 中开启 fzf 的快捷键?
在 ~/.zshrc 文件中加入 source <(fzf --zsh) 这一行,然后打开新的“终端”窗口。Bash 请在 ~/.bashrc 中使用 eval "$(fzf --bash)";Fish 请使用 fzf --fish | source。
Control-T、Control-R 和 Alt-C 分别有什么作用?
Control-T 把选中的文件或文件夹插入命令行,Control-R 搜索命令历史,Alt-C 跳转到选中的文件夹。在 Mac 上,Alt 就是 Option 键。
什么是模糊匹配?
模糊匹配会找出按顺序包含你输入的字母的项目,即使字母之间还有其他字符。例如,输入 dlrp 就能找到 download-report.txt。
fzf 能预览文件吗?
能。--preview 选项会在你浏览列表时,在旁边显示文件内容或任意命令的输出。
可以在 Vim 或 Neovim 中使用 fzf 吗?
可以。fzf 自带一个基础的 Vim 插件,另一个独立插件 fzf.vim 则增加了搜索文件、缓冲区、行等内容的命令。
fzf 只能搜索文件吗?
不是。fzf 适用于传给它的任何列表,例如 Git 分支、正在运行的进程或命令历史。用管道把列表传给 fzf,它就会返回你的选择。
能让 fzf 使用 fd 或 ripgrep 来搜索文件吗?
能。把 FZF_DEFAULT_COMMAND 或 FZF_CTRL_T_COMMAND 设为 fd 或 ripgrep 命令,fzf 就会使用它们生成的文件列表,同时也会遵循 .gitignore。
fzf.FULLMAC.app 上的 fzf 下载来自哪里?
下载按钮指向 fzf 的官方 GitHub 页面 https://github.com/junegunn/fzf,那里有安装说明和各个版本。fzf.FULLMAC.app 不会修改或重新打包该工具。
相似应用
- tmuxtmux 是一款免费开源的终端复用器。它能让你在一个终端里运行多个程序,分成多个窗口和并排的窗格,并用键盘在它们之间切换。它最有用的功能是会话:从会话中分离后,里面的一切都会继续运行,即使你关闭终端或 SSH 连接中断也没关系;之后重新连接,就能从中断的地方继续。tmux 由 Nicholas Marriott 和其他贡献者开发,以 ISC 许可证发布。开发工具
VigilVigil 是一款免费开源的 Mac 原生终端,让编程智能体像团队一样协作。你不必再亲自在多个智能体窗口之间复制消息,只需把任务交给根节点的管理者智能体,它可以自行启动工作者智能体和子管理者。细节沿着树向下传递,结果以摘要形式返回给管理者,让管理者的上下文保持精简。实时节点树可以一次看到整个团队,每个节点都保留智能体自己的终端界面,你可以打开任意节点直接接手。开发工具
SwitchShuttleSwitchShuttle 是一款 Mac 菜单栏应用,让常用的终端命令只需一次点击或一个快捷键就能运行。你可以把命令整理到多级子菜单中,为每条命令设置全局快捷键和表情图标,然后在任何地方运行,无需先打开终端再输入。它支持 iTerm、Terminal、Warp、Alacritty、Hyper 等终端,每条命令都可以在当前窗口、新标签页或新窗口中运行。开发工具
tty7tty7 是一款用 Rust 编写的 GPU 渲染终端,基于 Zed 的 gpui 和 Alacritty 的终端核心构建。Shell 和窗格归后台服务器所有,而不是归窗口所有,因此即使退出应用,Shell 也会继续运行,无需 tmux。重启后,布局、屏幕内容和受支持代理的对话都会恢复。开发工具
TabbyTabby(原名 Terminus)是一款高度可配置的终端模拟器,同时也是 SSH、Telnet 和串口客户端。它一次替代多种工具:带标签页和分屏的本地终端、管理服务器的连接管理器,以及用于路由器、单片机等设备的串口终端。你的 SSH 密码和密钥可以保存在加密保险库中,可以通过 SSH 传输文件,还能用主题和插件改变外观和功能。Tabby 由 Eugene Pankov 开发,可在 Mac、Windows 和 Linux 上运行。开发工具
kittykitty 是一款快速、功能丰富的终端模拟器,用 GPU 绘制文字,滚动和大量输出都很流畅。它内置标签页和多种布局的分屏窗口,支持真彩色、连字和表情符号,还有自己的图形协议,可以直接在终端里显示图片。kitty 可以通过脚本和命令行控制,并能用称为 kitten 的小程序扩展,例如沿用你的设置进行 SSH 连接、并排比较文件和输入 Unicode 字符。kitty 由 calibre 的开发者 Kovid Goyal 制作。开发工具
FULLMAC.app 不托管此应用。下载按钮会将你带到开发者自己的页面。