Better fuzzy finder
015eab840ec547c7fe60d20fc262af6947b7de50
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 |