" See https://github.com/junegunn/fzf/blob/master/README-VIM.md " An action can be a reference to a function that processes selected lines function! s:build_quickfix_list(lines) call setqflist([], ' ', { 'title': 'FZF Selected', 'items': map(copy(a:lines), '{ "filename": v:val }') }) copen cc endfunction " https://github.com/junegunn/fzf.vim/pull/733 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' \ })) let g:fzf_action = { \ 'ctrl-q': function('s:build_quickfix_list'), \ 'ctrl-t': 'tab split', \ 'ctrl-x': 'split', \ 'ctrl-v': 'vsplit', \ } let $FZF_DEFAULT_OPTS = '--layout=reverse --bind "Ctrl-d:half-page-down,Ctrl-u:half-page-up,Ctrl-n:preview-down,Ctrl-p:preview-up,Ctrl-f:preview-page-down,Ctrl-b:preview-page-up,ctrl-a:select-all+accept"' if exists('$TMUX') let g:fzf_layout = { 'tmux': '-p90%,90%' } else let g:fzf_layout = { 'window': { 'width': 0.9, 'height': 0.9 }, } endif nnoremap b :Buffers nnoremap B :History nnoremap / :GFiles? nnoremap ff :GFiles nnoremap fF :Files nnoremap fL :Lines nnoremap fc :BCommits xnoremap fc :BCommits nnoremap fC :Commits nnoremap fh :History: nnoremap fH :History/ nnoremap fm :Marks nnoremap fo :Locate nnoremap fk :Maps nnoremap f/ :Rg nnoremap fs :Rg xnoremap fs "zy:Rg z nnoremap fw :BD imap (fzf-complete-word) imap (fzf-complete-path) imap (fzf-complete-file) imap (fzf-complete-line)