在 nvim 中使用模糊查找 fzf

fzf

快速模糊搜索查找工具

安装和配置

1. 在终端中安装 fzf 工具

1
brew install fzf

地址:FZF

如果你使用的是bash的话,到bash_profile中配置

我使用的是zsh,就需要到.zshrc中配置

如果你不想配置的话可以直接调用官方的

1
2
# To install useful key bindings and fuzzy completion:
$(brew --prefix)/opt/fzf/install

配置

这里说明下一些操作

具体可自己打开

也可以直接输入

1
命令 + **<TAB>

就可以直接搜索

快捷键 操作
Ctrl + t 搜索
Ctrl + r 显示最近输入历史记录

2. 在nviminit.vim中安装fzf插件

1
2
Plug 'junegunn/fzf', { 'do': { -> fzf#install() } }
Plug 'junegunn/fzf.vim'

然后在 vim 中配置 fzf 插件的相关设置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
" open fzf
nnoremap <Leader>ff :FZF<CR>
let g:fzf_preview_window = 'right:40%'
let g:fzf_commits_log_options = '--graph --color=always --format="%C(auto)%h%d %s %C(black)%C(bold)%cr"'

function! s:list_buffers()
redir => list
silent ls
redir END
return split(list, "\n")
endfunction

function! s:delete_buffers(lines)
execute 'bwipeout' join(map(a:lines, {_, line -> split(line)[0]}))
endfunction

command! BD call fzf#run(fzf#wrap({
\ 'source': s:list_buffers(),
\ 'sink*': { lines -> s:delete_buffers(lines) },
\ 'options': '--multi --reverse --bind ctrl-a:select-all+accept'
\ }))

noremap <c-d> :BD<CR>

let g:fzf_layout = { 'window': { 'width': 0.95, 'height': 0.95 } }

命令

:Files [path]: 列出 path 路径下的所有文件 (功能等价于 :FZF 命令) :Buffers: 文件缓冲区切换 :Colors: 选择 Vim 配色方案 :Tags [QUERY]: 当前项目中的 Tag (等价于: ctags -R) :BTags: [QUERY] 当前活动缓冲区的标记 :Marks: 所有 Vim 标记 :Windows: 窗口 :Lines [QUERY]: 在所有加载的文件缓冲区里包含目标词的所有行 :BLines [QUERY]: 在当前文件缓冲区里包含目标词的行 :Locate PATTERN: locate command output :History: v:oldfiles and open buffers :History:: 命令行命令历史 :History/: 搜索历史 :Commands: Vim 命令列表 :Maps: 普通模式下的按键映射 :Snippets: Snippets ([UltiSnips][us]) :Commits: Git commits (requires [fugitive.vim][f]) :BCommits: 查看与当前缓冲区有关的 commit :GFiles [OPTS]: Git files (git ls-files) :GFiles?: Git files (git status) :Ag [PATTERN]: ag search result (ALT-A to select all, ALT-D to deselect all) :Rg [PATTERN]: rg search result (ALT-A to select all, ALT-D to deselect all) :Filetypes: File types