终端-模糊查找神器-fzf

3,544

fzf是一款使用 GO 语言编写的交互式的 Unix 命令行工具。

可以用来查找任何 列表内容、文件、历史命令、 本机绑定的host、 进程、 Git 分支、进程 等。所有的命令行工具可以生成列表输出的都可以再通过管道 pipe 到 fzf 上进行搜索和查找

项目地址:github.com/junegunn/fz…

安装

我们通过包管理工具可以方便的安装它

  • macOS - brew下载安装

    brew install fzf
    # 安装 键盘映射和模糊提示
    $(brew --prefix)/opt/fzf/install
    
  • debian系列 - apt install fzf

  • windows - 从 release 下载后安装

  • 使用 git 下载安装

    git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf
    # 安装
    ~/.fzf/install
    

更新

  • git: cd ~/.fzf && git pull && ./install
  • brew: brew update; brew reinstall fzf

使用

CTRL-T 查找目录下条目

使用 CTRL-T 查找粘贴目录下的文件或目录到命令行

Untitled2

CTRL-R 查找历史命令

使用 CTRL-R 查找并粘贴选中的历史命令到命令行,可以通过再次按下 CTRL-R 切换时间排序相关性排序

Untitled3

快捷键

在输出交换窗口里

  • Ctrl-J/Ctrl-K/Ctrl-N/Ctrlk-N可以用来将光标上下移动
  • Enter键用来选中条目, Ctrl-C/Ctrl-G/Esc用来退出
  • 在多选模式下(-m), TAB和Shift-TAB用来多选
  • Mouse: 上下滚动, 选中, 双击; Shift-click或shift-scoll用于多选模式

搜索语法

fzf默认会以“extened-search"模式启动, 这种模式下你可以输入多个以空格分隔的搜索关键词, 如^music .mp3$, sbtrkt !fire.

Token Match type Description
sbtrkt fuzzy-match 匹配sbtrkt
^music prefix-exact-match 以music开头
.mp3^ suffix-exact-match 以.mp3结尾
'wild exact-match(quoted) 精确包含wild
!fire inverse-exact-match 不包含fire
!.mp3$ inverse-suffix-exact-match 不以.mp3结尾

如果你不想用fuzzy match, 可以用fzf -e做精确匹配 符号"|"可以做or匹配, 比如

# 表示以core开头,以go或rb或py结尾的
^core go$|rb$|py$

预览窗口

通过 fzf --preview 'cat {}' 可以 动态的预览文本,再也不用一个个 cat

Untitled

更多

更多优秀工具,请关注微信公众号获取

wx