Skip to content

Instantly share code, notes, and snippets.

@curtismckee
Forked from danmikita/init.vim
Created October 24, 2019 03:54
Show Gist options
  • Save curtismckee/c687043e86d1c0063f11e50b1ace4e9c to your computer and use it in GitHub Desktop.
Save curtismckee/c687043e86d1c0063f11e50b1ace4e9c to your computer and use it in GitHub Desktop.

Revisions

  1. @danmikita danmikita created this gist Nov 16, 2018.
    41 changes: 41 additions & 0 deletions init.vim
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,41 @@
    nnoremap <silent> <leader>e :call Fzf_dev()<CR>
    " ripgrep
    if executable('rg')
    let $FZF_DEFAULT_COMMAND = 'rg --files --hidden --follow --glob "!.git/*"'
    set grepprg=rg\ --vimgrep
    command! -bang -nargs=* Find call fzf#vim#grep('rg --column --line-number --no-heading --fixed-strings --ignore-case --hidden --follow --glob "!.git/*" --color "always" '.shellescape(<q-args>).'| tr -d "\017"', 1, <bang>0)
    endif

    " Files + devicons
    function! Fzf_dev()
    let l:fzf_files_options = '--preview "bat --theme="OneHalfDark" --style=numbers,changes --color always {2..-1} | head -'.&lines.'"'

    function! s:files()
    let l:files = split(system($FZF_DEFAULT_COMMAND), '\n')
    return s:prepend_icon(l:files)
    endfunction

    function! s:prepend_icon(candidates)
    let l:result = []
    for l:candidate in a:candidates
    let l:filename = fnamemodify(l:candidate, ':p:t')
    let l:icon = WebDevIconsGetFileTypeSymbol(l:filename, isdirectory(l:filename))
    call add(l:result, printf('%s %s', l:icon, l:candidate))
    endfor

    return l:result
    endfunction

    function! s:edit_file(item)
    let l:pos = stridx(a:item, ' ')
    let l:file_path = a:item[pos+1:-1]
    execute 'silent e' l:file_path
    endfunction

    call fzf#run({
    \ 'source': <sid>files(),
    \ 'sink': function('s:edit_file'),
    \ 'options': '-m ' . l:fzf_files_options,
    \ 'down': '40%' })
    endfunction