#命令行工具 #实用程序 #管道 #过滤器 #命令行界面

app proximity-sort

按路径参数的邻近度对输入进行排序的简单命令行工具

11 个稳定版本

1.3.0 2023 年 2 月 11 日
1.2.0 2022 年 7 月 4 日
1.1.0 2021 年 12 月 19 日
1.0.7 2020 年 8 月 3 日
1.0.2 2018 年 9 月 20 日

#569命令行工具

MIT/Apache

13KB
240

proximity-sort

Crates.io Codecov Dependency status

此脚本提供了一个简单的命令行工具,该工具通过输入路径与给定路径的路径邻近度对其输入进行排序。例如,对于路径 foo/bar.txt,以下输入

quox.txt
foo/bar.txt
foo/baz.txt

将产生以下输出

foo/bar.txt
foo/baz.txt
quox.txt

这些行是按照输入路径和提供路径之间共享的前导路径组件的数量进行排序的。

此程序主要是为了允许为 fzf (在 junegunn/fzf.vim#360junegunn/fzf.vim#492 中请求) 提供上下文感知的建议,而不对 fzf 本身进行修改 (参见 junegunn/fzf#1380)。

安装

如果您已安装 Rust,您可以使用以下命令安装此工具:

cargo install proximity-sort

用法

可以使用 fzf 运行它

$ fd -t f | proximity-sort path/to/file | fzf --tiebreak=index

您可以使用以下命令将其添加到您的 .vimrc

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(<q-args>, {'source': s:list_cmd(),
  \                               'options': '--tiebreak=index'}, <bang>0)

相同邻近度的路径按字母顺序排序

$ echo "banana\napple/pie\napple" | proximity-sort . -s
> apple
> banana
> apple/pie

依赖项

~3–12MB
~143K SLoC