Better fuzzy finder

015eab840ec547c7fe60d20fc262af6947b7de50
Alexis Sellier committed ago 1 parent 08959881
.vimrc +22 -1
139 139
nnoremap <up>    :tabnext<CR>
140 140
nnoremap <down>  :tabprev<CR>
141 141
142 142
map <Leader>m       :make<Return>
143 143
map <C-n>           :NERDTreeToggle<CR>
144 -
map <C-p>           :FZF<CR>
144 +
map <C-p>           :FuzzyOpen<CR>
145 145
map <C-_>           <plug>NERDCommenterToggle
146 146
map <Leader><Space> :Goyo<CR>
147 147
148 +
" Fuzzy finder using `fzf`. Combines buffers with `ag`.
149 +
function! s:fuzzy(...)
150 +
  try
151 +
    let l = filter(range(1, bufnr('$')), 'buflisted(v:val)')
152 +
    let buflist = filter(l, 'bufnr("") !~ v:val')
153 +
  catch
154 +
    let buflist = []
155 +
  endtry
156 +
157 +
  let ag = split(system('ag -U -g ""'), '\n')
158 +
  let bufs = map(buflist, 'bufname(v:val)')
159 +
  let files = filter(ag, 'index(bufs, v:val) == -1')
160 +
  let result = extend(files, bufs)
161 +
162 +
  return fzf#run(fzf#wrap('buffers', {
163 +
  \ 'source':  reverse(result),
164 +
  \ 'options': '--exact --color=16 --prompt="/ "',
165 +
  \}), a:000)
166 +
endfunction
167 +
command! FuzzyOpen call s:fuzzy()
168 +
148 169
" Syntax coloring
149 170
set t_Co=256
150 171
syntax enable
151 172
152 173
try