文件搜索可以使用 ctrlp.vim
、 ctrlsf.vim
等插件
搜索 tags
发现两个插件 fzf.vim
和 LeaderF
,选择使用 fzf.vim
fzf
fzf
是目前最快的 fuzzy finder
。使用 golang
编写。结合其他工具 ( 比如 ag 和 fasd
) 可以完成非常多的工作。 让你通过输入模糊的关键词就可以定位文件或文件夹。
在 vim
中搭配 fzf.vim
使用
安装
Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --bin' }
Plug 'junegunn/fzf.vim'
如果不支持安装,可以在插件安装之后手动完成 fzf
安装
$ cd ~/.vim/bundle/fzf
$ ./install --bin
配置
""""""""""""""""""""""""""""""
" FZF
""""""""""""""""""""""""""""""
if isdirectory(expand("~/.vim/bundle/fzf/"))
let g:fzf_command_prefix = 'Fzf'
" This is the default extra key bindings
let g:fzf_action = {
\ 'ctrl-t': 'tab split',
\ 'ctrl-x': 'split',
\ 'ctrl-v': 'vsplit' }
" Default fzf layout
" - down / up / left / right
let g:fzf_layout = { 'down': '~40%' }
" Customize fzf colors to match your color scheme
let g:fzf_colors =
\ { 'fg': ['fg', 'Normal'],
\ 'bg': ['bg', 'Normal'],
\ 'hl': ['fg', 'Comment'],
\ 'fg+': ['fg', 'CursorLine', 'CursorColumn', 'Normal'],
\ 'bg+': ['bg', 'CursorLine', 'CursorColumn'],
\ 'hl+': ['fg', 'Statement'],
\ 'info': ['fg', 'PreProc'],
\ 'border': ['fg', 'Ignore'],
\ 'prompt': ['fg', 'Conditional'],
\ 'pointer': ['fg', 'Exception'],
\ 'marker': ['fg', 'Keyword'],
\ 'spinner': ['fg', 'Label'],
\ 'header': ['fg', 'Comment'] }
" Enable per-command history.
" CTRL-N and CTRL-P will be automatically bound to next-history and
" previous-history instead of down and up. If you don't like the change,
" explicitly bind the keys to down and up in your $FZF_DEFAULT_OPTS.
let g:fzf_history_dir = '~/.local/share/fzf-history'
function! s:fzf_statusline()
" Override statusline as you like
highlight fzf1 ctermfg=161 ctermbg=251
highlight fzf2 ctermfg=23 ctermbg=251
highlight fzf3 ctermfg=237 ctermbg=251
setlocal statusline=%#fzf1#\ >\ %#fzf2#fz%#fzf3#f
endfunction
autocmd! User FzfStatusLine call <SID>fzf_statusline()
nnoremap <leader><leader>x :FzfTags<cr>
endif
设置 let g:fzf_command_prefix = 'Fzf'
之后,可以使用 FzfTags
来搜索 tags
、 FzfFiles
来搜索文件等
搜索语法
fzf
默认会以 extened-search
模式启动, 这种模式下你可以输入多个以空格分隔的搜索关键词, 如 ^music .mp3$, sbtrkt !fire.
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 结尾
快捷键
Ctrl-J/Ctrl-K/Up/Down
可以用来将光标上下移动Enter
键用来选中条目,Ctrl-C/Ctrl-G/Esc
用来退出- 在多选模式下
(-m)
,TAB
和Shift-TAB
用来多选 Mouse
: 上下滚动, 选中, 双击;Shift-click
或shift-scoll
用于多选模式
有哪些工具可以方便的和 FZF 一起使用
- Find (目录搜索)
- Grep (文本搜索)
- Ag (文本搜索)
- fd (目录搜索)
- ripgrep (文本搜索)
后两个是最新出的两个搜索方面的新秀,应该是目前速度最快的。
忽略某些文件
export FZF_DEFAULT_COMMAND="fd --type f --exclude '*.a' --exclude '*.bmp' --exclude '*.png'"
使用命令 FZF_DEFAULT_COMMAND
来完成一些文件的排除