filebrowser.vim 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. " Dirvish file browser.
  2. " Use relative paths if there is no `conceal` ability.
  3. let g:dirvish_relative_paths = (v:version <= 703 ? 1 : 0)
  4. augroup dirvishCustomisation
  5. autocmd!
  6. " Allow fugitive.vim commands in dirvish buffers.
  7. autocmd FileType dirvish call fugitive#detect(@%)
  8. " Add/Adjust mappings.
  9. " - Reverse 'o' to (o)pen and 'i' to spl(i)t.
  10. " - Create, Delete, Rename with 'mc', 'md', 'mr'.
  11. autocmd FileType dirvish let s:nowait = (v:version > 703 ? '<nowait>' : '')
  12. \| execute 'nnoremap '.s:nowait.'<buffer><silent> o :<C-U>.call dirvish#open("edit", 0)<CR>'
  13. \| execute 'nnoremap '.s:nowait.'<buffer><silent> i :<C-U>.call dirvish#open("split", 1)<CR>'
  14. \| execute 'xnoremap '.s:nowait.'<buffer><silent> O :call dirvish#open("edit", 0)<CR>'
  15. \| execute 'xnoremap '.s:nowait.'<buffer><silent> I :call dirvish#open("split", 1)<CR>'
  16. \| execute 'nnoremap '.s:nowait.'<buffer><silent> mc :<C-U>.call FileCreate()<CR>'
  17. \| execute 'nnoremap '.s:nowait.'<buffer><silent> md :<C-U>.call FileDelete()<CR>'
  18. \| execute 'nnoremap '.s:nowait.'<buffer><silent> mr :<C-U>.call FileRename()<CR>'
  19. augroup END
  20. " Create files/directories in dirvish buffers.
  21. function! FileCreate()
  22. if &ft != "dirvish" | return | endif
  23. let filename = inputdialog('New File: ', expand('%'), 0)
  24. if filename == "0" | return | endif
  25. " Create any directories required.
  26. let dirname = fnamemodify(filename, ':p:h')
  27. if dirname != expand('%:h') | call system('mkdir -p '.dirname) | endif
  28. " Edit the file if it is a file.
  29. if !isdirectory(filename)
  30. execute 'edit' filename
  31. else
  32. normal R
  33. endif
  34. endfunction
  35. " Delete files/directories in dirvish buffers.
  36. function! FileDelete()
  37. if &ft != "dirvish" | return | endif
  38. let current = getline('.')
  39. let delcheck = confirm('Delete `'.current.'`?', "&Yes\n&No", 2)
  40. if delcheck != 1 | return | endif
  41. let delcheck = confirm('Are you SURE?', "&Yes\n&No", 2)
  42. if delcheck != 1 | return | endif
  43. call delete(current, 'rf') | normal R
  44. endfunction
  45. " Rename files/directories in dirvish buffers.
  46. function! FileRename()
  47. if &ft != "dirvish" | return | endif
  48. let current = getline('.')
  49. let newname = inputdialog('Rename: ', current, 0)
  50. if newname == "0" | return | endif
  51. call rename(current, newname) | normal R
  52. endfunction
  53. " CtrlP - Fuzzy Finder in Vimscript
  54. let s:fallback = executable('ag') ? 'ag %s -l --nocolor -g ""' : 'find %s -type f'
  55. let g:ctrlp_user_command = [
  56. \ '.git',
  57. \ 'cd %s && git ls-files . -co --exclude-standard',
  58. \ s:fallback
  59. \]
  60. " Function definition jumping with CtrlP's Funky plugin.
  61. let g:ctrlp_extensions = ['funky']
  62. map <silent> <Leader>f :CtrlPFunky<CR>
  63. " FZF - Fuzzy Finder in Go/Ruby
  64. map <silent> <Leader>p :FZF<CR>