aboutsummaryrefslogtreecommitdiff
path: root/lua/plugins/fzf.lua
blob: 4195cd660c1cc0aa54440307b9dfbc402ca211c8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
vim.cmd([[
  " FZF fuzzy finder
  "---------------------------------------
  " 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'
  map <leader>fz :FZF<CR>
  map <leader>a :Files<CR>
  map <leader>l :Lines<CR>
  map <leader>L :BLines<CR>
  map <leader>B :Buffers<CR>
  map <leader>h :History:<CR>
  nnoremap <leader>g :Rg<CR>
  "nnoremap <leader>t :Tags<CR>
  nnoremap <leader>m :Marks<CR>
  " This is the default extra key bindings
  let g:fzf_action = {
              \ 'ctrl-t': 'tab split',
              \ 'ctrl-x': 'split',
              \ 'ctrl-y': 'vsplit' }
  let g:fzf_tags_command = 'ctags -R'
  " Border color
  let g:fzf_layout = {'up':'~90%', 'window': { 'width': 0.8, 'height': 0.8,'yoffset':0.5,'xoffset': 0.5, 'highlight': 'Todo', 'border': 'sharp' } }
  let $FZF_DEFAULT_OPTS = '--layout=reverse --info=inline'
  let $FZF_DEFAULT_COMMAND="rg --files --hidden"
  " 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'] }
  " Get Files
  command! -bang -nargs=? -complete=dir Files
              \ call fzf#vim#files(<q-args>, fzf#vim#with_preview({'options': ['--layout=reverse', '--info=inline']}), <bang>0)
  " Get text in files with Rg
  command! -bang -nargs=* Rg
              \ call fzf#vim#grep(
              \   'rg --column --line-number --no-heading --color=always --smart-case '.shellescape(<q-args>), 1,
              \   fzf#vim#with_preview(), <bang>0)
  " Ripgrep advanced
  function! RipgrepFzf(query, fullscreen)
      let command_fmt = 'rg --column --line-number --no-heading --color=always --smart-case %s || true'
      let initial_command = printf(command_fmt, shellescape(a:query))
      let reload_command = printf(command_fmt, '{q}')
      let spec = {'options': ['--phony', '--query', a:query, '--bind', 'change:reload:'.reload_command]}
      call fzf#vim#grep(initial_command, 1, fzf#vim#with_preview(spec), a:fullscreen)
  endfunction
  command! -nargs=* -bang RG call RipgrepFzf(<q-args>, <bang>0)
  " Git grep
  command! -bang -nargs=* GGrep
              \ call fzf#vim#grep(
              \   'git grep --line-number '.shellescape(<q-args>), 0,
              \   fzf#vim#with_preview({'dir': systemlist('git rev-parse --show-toplevel')[0]}), <bang>0)
  command! -bang FM call fzf#run(fzf#wrap({'source': 'cat ~/.fzf-marks | sed "s/.*: \(.*\)$/\1/" | sed "s#~#${HOME}#"', 'sink': 'lcd'}, <bang>0))
]])