diff --git a/README.md b/README.md index 575acce..a84021a 100644 --- a/README.md +++ b/README.md @@ -32,6 +32,7 @@ List of commands | Command | List | | --- | --- | +| `Files [PATH]` | Files (similar to `:FZF`) | | `Buffers` | Open buffers | | `Colors` | Color schemes | | `Ag [PATTERN]` | [ag][ag] search result (`CTRL-A` to select all, `CTRL-D` to deselect all) | diff --git a/plugin/fzf.vim b/plugin/fzf.vim index 1055bda..027c92f 100644 --- a/plugin/fzf.vim +++ b/plugin/fzf.vim @@ -94,6 +94,34 @@ function! s:align_lists(lists) return a:lists endfunction +" ------------------------------------------------------------------ +" Files +" ------------------------------------------------------------------ +function! s:files(dir, bang) + let args = { + \ 'sink*': function('s:common_sink'), + \ 'options': '-m'.s:expect() + \} + + if !empty(a:dir) + if !isdirectory(expand(a:dir)) + echohl WarningMsg + echom 'Invalid directory' + echohl None + return + endif + let dir = substitute(a:dir, '/*$', '/', '') + let args.dir = dir + let args.options .= ' --prompt '.shellescape(dir) + else + let args.options .= ' --prompt "./"' + endif + + call s:fzf(args, a:bang) +endfunction + +command! -bang -nargs=? -complete=dir Files call s:files(, 0) + " ------------------------------------------------------------------ " Lines " ------------------------------------------------------------------