FZF
fzf
fzf is a CLI fuzzy finder with endless possibilities. If you want to improve your terminal workflow you must check this out.
Use cases (at least for me - there are way more):
- fuzzy find any file on your machine
- fuzzy find the shell history
- fuzzy find directories
- open and search files within vim
- search through tags, lines, commits, and windows in vim
fzf.vim
-
make ESC work in fzf buffer
autocmd FileType fzf tnoremap <Esc> <C-c> \| autocmd BufLeave <buffer> tnoremap <Esc> <C-\><C-n>
-
Keymappings
nnoremap <C-p> :Files<CR> nnoremap <leader>rg :Rg<CR> nnoremap <leader>fr :History<CR> nnoremap <leader>w :Windows<CR> nnoremap <leader>; :BLines<CR> nnoremap <leader>: :BTags<CR> nnoremap <leader>c :Commits<CR> nnoremap <leader>ft :Filetypes<CR>
-
Adjust colortheme
let g:fzf_colors = \ { 'fg': ['fg', 'Comment'], \ 'bg': ['bg', 'Normal'], \ 'hl': ['fg', 'Comment'], \ 'fg+': ['fg', 'CursorLine', 'CursorColumn', 'Normal'], \ 'bg+': ['bg', 'CursorLine', 'CursorColumn'], \ 'hl+': ['fg', 'Statement'], \ 'info': ['fg', 'String'], \ 'border': ['fg', 'Ignore'], \ 'prompt': ['fg', 'Boolean'], \ 'pointer': ['fg', 'Boolean'], \ 'marker': ['fg', 'Keyword'], \ 'spinner': ['fg', 'Label'], \ 'header': ['fg', 'Comment'] }
- Adjust layout
let $FZF_DEFAULT_OPTS .= ' --no-height' " disable statusline overwriting let g:fzf_nvim_statusline = 0 " In Neovim, you can set up fzf window using a Vim command let g:fzf_layout = { 'window': 'enew' } let g:fzf_layout = { 'window': '-tabnew' } let g:fzf_layout = { 'window': '10split enew' }
fzf tweaks
-
export FZF_COMPLETION_TRIGGER=',,'
Allows to trigger fzf after arbitrary commands, for instance
vim ,,
/TAB/ invokes fzf -
export FZF_DEFAULT_OPTS="--bind='ctrl-o:execute:vim {} > /dev/tty'"
Enables you to directly open a file for fzf results with ctrl-o
-
export FZF_CTRL_T_OPTS="--preview '(highlight -O ansi -l {} 2> /dev/null || cat {} || tree -C {}) 2> /dev/null | head -200'"
Shows a preview of highlighted files in fzf
-
export FZF_ALT_C_OPTS="--preview 'tree -C {} | head -200'"
Directory structure preview of highlighted directories within fzf
-
command -v rg >/dev/null 2>&1 && export FZF_DEFAULT_COMMAND='rg --files --no-ignore-vcs --hidden'
Use ripgrep when it is installed as default