在 Arch Linux 上开始使用 fzf

Mat*_*aun 6 bash vim

我刚安装了FZF在Arch Linux的11年4月13日使用pacman -S fzf

在 Bash 中,我可以调用fzf它让我选择当前目录及其子目录中的文件(使用Ctrl+nCtrl+ p)。

这很好,但我想要某种形式的 Bash 集成。

我从这里去哪里?

Mat*_*aun 8

默认 bash 键绑定

使用whereis fzf,我在以下位置找到了 fzf 用于 bash 集成的文件usr/share/fzf

completion.bash
key-bindings.bash
Run Code Online (Sandbox Code Playgroud)

sourceing 两个文件之后,这将为 bash 启用几个键绑定:例如,我可以点击Ctrl+t来搜索当前目录中的文件,并点击Ctrl+r来搜索我的命令历史记录。

为了查找和更改目录,有Alt+ c

为了使这些键绑定持久,我将它们添加到我的.bashrc

source /usr/share/fzf/completion.bash && source /usr/share/fzf/key-bindings.bash
Run Code Online (Sandbox Code Playgroud)

定制

我觉得有用的自定义是在使用 fzf 时显示文件预览(我也把它放在我的.bashrc中):

# When selecting files with fzf, we show file content with syntax highlighting,
# or without highlighting if it's not a source file. If the file is a directory,
# we use tree to show the directory's contents.
# We only load the first 200 lines of the file which enables fast previews
# of large text files.
# Requires highlight and tree: pacman -S highlight tree
export FZF_DEFAULT_OPTS="--preview '(highlight -O ansi -l {} 2> /dev/null ||
cat {} || tree -C {}) 2> /dev/null | head -200'"
Run Code Online (Sandbox Code Playgroud)

路径补全

开箱即用,fzf 支持一些硬编码命令的模糊路径补全cd,例如ls、 和vim

例如,输入vim ** Tabon bash 会在当前目录中开始模糊搜索,并使用 Vim 1打开所选文件。

这非常有用,但我想以相同的方式打开例如 PDF。您可以通过添加以下行来启用此功能.bashrc

complete -o bashdefault -o default -F _fzf_path_completion zathura
Run Code Online (Sandbox Code Playgroud)

zathura是我的 PDF 查看器;您可以将其替换为您选择的文档查看器。

请注意,模糊路径补全适用于所有路径,而不仅仅是当前目录:

vim ~/**
Run Code Online (Sandbox Code Playgroud)

然后点击Tab将模糊搜索您的主目录下的文件,然后在 Vim 中打开它。

Vim 集成

以下是我.vimrc在 Vim 会话中使用 fzf 的一些键绑定:

completion.bash
key-bindings.bash
Run Code Online (Sandbox Code Playgroud)

所有这些的先决条件是fzf Vim 插件;我通过将它放在我的插件中来安装它.vimrc

Plug 'junegunn/fzf.vim'
Run Code Online (Sandbox Code Playgroud)

然后:PlugInstall从 Vim调用。

这是您可以从 Vim 调用的 fzf 命令列表

搜索项目文件

特别是在处理软件时,我喜欢在给定项目的文件之间切换。假设项目是使用 Git 进行版本控制的,这里有一个绑定,它将模糊搜索项目内的文件并打开所选文件:

source /usr/share/fzf/completion.bash && source /usr/share/fzf/key-bindings.bash
Run Code Online (Sandbox Code Playgroud)

走得更远

要获得 fzf、Vim 和 Tmux 的强大组合,请查看Keegan Lowenstein 的博客文章(我--preview从那里获得了配置)。

这里有一些关于如何配置 fzf 的 shell 集成的想法。

您可以在fzf 的自述文件及其wiki 中找到更多 fzf 配置示例。

1 如果您发现自己模糊搜索文件,然后在 Vim 中经常打开它们,您可以使用这段.bashrc.