在 Arch Linux 上开始使用 fzf

在 Arch Linux 上开始使用 fzf

我刚刚安装弗兹夫在 Arch Linux 4.13.11 上使用pacman -S fzf.

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

这很好,但我想要某种类型的 Bash 集成。

我该去哪里?

答案1

默认 Bash 键绑定

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

completion.bash
key-bindings.bash

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

要查找并更改目录,请使用Alt+ c

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

source /usr/share/fzf/completion.bash && source /usr/share/fzf/key-bindings.bash

定制化

我发现有用的自定义是在使用时显示文件预览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'"

路径补全

开箱即用,fzf支持几个的模糊路径完成硬编码的命令如cdls、 和vim。要查看这些命令的列表,请运行complete | grep _fzf

例如,vim ** Tab在 Bash 上输入会在当前目录中启动模糊搜索,并使用 Vim 1打开所选文件。

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

_fzf_setup_completion path zathura

这里,zathura是我的 PDF 查看器;您可以用您选择的文档查看器替换它。

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

vim ~/**

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

自述文件offzf给出了更多启用路径完成的示例。

完成路径以外的其他事情

fzf不限于模糊搜索文件。例如:

  • 输入后会显示来自和 的ssh ** Tab主机名和 IP 地址列表。~/.ssh/config~/.ssh/known_hosts
  • kill ** Tab可以通过输入程序名称的一部分来结束正在运行的程序。

您还可以将进程的模糊搜索添加到任何需要进程 ID 的命令中:

_fzf_setup_completion proc top pmap pstree

尝试top -p ** Tab选择一个进程并通过以下方式观察其资源使用情况top

此定制包括pmappstree为了使这些命令更方便:模糊搜索进程名称而不是输入进程 ID。

Vim 集成

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

" Search and switch buffers
nmap <leader>b :Buffers<cr>
" Find files by name under the current directory
nmap <leader>f :Files<cr>
" Find files by name under the home directory
nmap <leader>h :Files ~/<cr>
" Search content in the current file
nmap <leader>l :BLines<cr>
" Search content in the current file and in files under the current directory
nmap <leader>g :Ag<cr>

这一切的前提是fzfVim 插件;我安装了它插头将其放入我的.vimrc

Plug 'junegunn/fzf.vim'

然后:PlugInstall从 Vim 调用。

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

在 Vim 中编写文本时还可以进行路径补全:

imap <c-x><c-f> <plug>(fzf-complete-path)

通过在 Vim 打开的文件中写入“~/”来尝试一下,然后点击Ctrl+ x+ f。通过模糊搜索选择一个文件,其路径将添加到Vim的光标位置。请参阅自述文件关于这些映射的更多信息。

搜索项目文件

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

nmap <leader>gr :GFiles! --cached --others --exclude-standard<cr>

这次讨论关于如何模糊搜索文件内容在当前的 Git 存储库中。

更进一步

fzf如需、Vim 和 Tmux的强大组合,请查看基根·洛温斯坦的博客文章(我--preview从那里得到了配置)。

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

您可以fzf在中找到更多配置示例fzf的自述文件并在其维基百科

1 如果您发现自己经常模糊搜索文件,然后在 Vim 中打开它们,您可以使用以下命令为其创建一个键绑定这一段.bashrc

相关内容