我刚刚安装弗兹夫在 Arch Linux 4.13.11 上使用pacman -S fzf
.
从 Bash 中,我可以调用fzf
它来选择当前目录及其子目录中的文件(使用Ctrl+n和Ctrl+ )。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
支持几个的模糊路径完成硬编码的命令如cd
、ls
、 和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
。
此定制包括pmap
和pstree
为了使这些命令更方便:模糊搜索进程名称而不是输入进程 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>
这一切的前提是fzf
Vim 插件;我安装了它插头将其放入我的.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
。