This script provides a simple command-line utility that sorts its inputs
by their path proximity to a given path. For example, for a path
foo/bar.txt
, the following input:
quox.txt
foo/bar.txt
foo/baz.txt
Would yield an output of:
foo/bar.txt
foo/baz.txt
quox.txt
The lines are sorted by the number of leading path components shared between the input path and the provided path.
This program was primarily written to allow context-aware suggestions
for fzf
(requested in
junegunn/fzf.vim#360 and junegunn/fzf.vim#492) without making
modifications to fzf
itself (see junegunn/fzf#1380).
It can be used with fzf
by running:
console
$ fd -t f | proximity-sort path/to/file | fzf --tiebreak=index
And you can add it to your .vimrc
with:
```vim function! s:list_cmd() let base = fnamemodify(expand('%'), ':h:.:S') return base == '.' ? 'fd -t f' : printf('fd -t f | proximity-sort %s', expand('%')) endfunction
command! -bang -nargs=? -complete=dir Files
\ call fzf#vim#files(