5 个不稳定版本

0.3.3 2022年12月29日
0.3.2 2022年7月17日
0.3.1 2021年10月16日
0.2.2 2021年5月21日
0.1.0 2021年4月12日

#1145命令行工具

每月 38 次下载

MIT 许可证

34KB
562

kn — nvgt/fldrs/qckly

Github Actions badge crates.io badge

cargo install kn

然后按照 配置说明 进行操作。

特性

缩写

您可以使用 kn 就像使用 cd 一样。区别在于,您也可以使用缩写而不是完整的目录名进行导航。 例如,您可以使用 fo/ba 而不是 foo/bar

.
├── foo
│  └── bar
├── bar
├── photosxxxxxxxxxxx2021
└── photosxxxxxxxxxxx2020
kn foo/bar          # Use `kn` just like `cd`...
kn fo/ba            # ...or navigate with abbreviations! No asterisks required.
kn pho2021          # Type only the significant parts of the dir name. You can skip the middle part.

通配符

您还可以使用通配符 - 来完全避免输入目录名,例如,使用 kn -/ba 去到 foo/bar。注意,kn f-/b- 不会匹配 foo/bar。在这种情况下,- 作为一个字面字符。

kn -/bar            # Wildcards can be used to skip a dir name altogether (changes dir to ./foo/bar/).

多点

kn 将参数分成两部分,一个前缀和一个缩写序列。前缀可能包含如 c://~/... 等组件,它被视为一个字面路径。它也可能包含包含多于两个点的组件,这些组件被解释为这样

kn ..               # Go to parent dir (as usual).
kn ...              # Go to grandparent dir (same as ../..).
kn ....             # Go to grand-grandparent dir (same as ../../..).

kn ........         # Type as many dots as you want!
kn .../....         # This works as well.

kn .../..../abbr    # You can put abbreviations after the prefix.

如果任何提到的组件出现在缩写之后的路径中,它被视为一个缩写。

kn ./../foo/bar/../baz
#  ^---^                 prefix
#       ^------------^   abbreviations

. 和第一个 .. 代表 当前目录父目录,而第二个 .. 被视为一个缩写,即它将匹配包含两个点的目录名。

--exclude-old-pwd

此标志排除了您之前的位置。使用 kn 时,您不需要输入它,只需在您的 shell 脚本中设置它(注意 _kn 中的下划线)

_kn init --shell fish --exclude-old-pwd

当两个路径与您的缩写匹配且您输入了错误的路径时很有用

my-files/
$ kn d

my-files/dir-1/
$ kn -

my-files/
$ kn d # just press arrow up twice

my-files/dir-2/
$ # success!

为了使 kn 排除之前的位置,必须有至少一个其他匹配,并且提供的参数 不能 是一个字面路径(即它必须是一个缩写)。

安装

安装后请确保配置您的shell。

crates.io

cargo install kn

从源代码

  1. git clone https://github.com/micouy/kn.git

  2. cdkn

  3. 将二进制文件放入PATH中的文件夹

    cargobuild -Z不稳定选项 --输出目录DIR_IN_PATH --发布

    或者直接构建并复制二进制文件到该目录

    cargobuild --发布

    cp target/发布/_knDIR_IN_PATH

从发布页面

下载适用于您的OS的最新发布版本的二进制文件,并将其移动到您的$PATH中的目录。您可能需要运行chmod +x _kn来更改二进制文件的权限。

如果有预编译二进制文件的问题,请提交一个问题。

配置您的shell

然后添加以下行到您的shell配置中(注意_kn中的下划线)

  • fish(通常为~/.config/fish/config.fish

    _kn init--shell fish|source

  • bash(通常为~/.bashrc

    eval"$(_kn init --shell bash)"

  • zsh(通常为~/.zshrc

    eval"$(_kn init --shell zsh)"

您还可以启用--exclude-old-pwd标志。要使用kn,请重新加载您的配置或启动一个新的shell实例。

需要帮助

在这个项目中,我进入了很多我知识不足的领域。贡献和批评非常受欢迎。以下是一些您可以做的事情

  • 检查init/中脚本的正确性。
  • 为除fishbashzsh之外的shell添加脚本和安装说明。
  • 审查.github/workflows/中的Github Actions工作流程。

算法

kn不跟踪频率或任何其他统计信息。它搜索磁盘以匹配缩写的路径。如果找到多个匹配的路径,它会以以下方式排序

  1. 将每个组件与其缩写的对应组件进行比较。路径的组件可能或可能不匹配缩写。如果组件匹配缩写,则可能有三种结果

    • Complete如果对应组件相等。
    • Prefix如果缩写的组件是路径组件的前缀。
    • Subsequence(系数)如果缩写的组件是路径组件的子序列。该系数是这些字符串的Powierża系数

    仅保留所有组件都匹配的这些路径。

  2. 以反向字典顺序对路径进行排序(从右到左比较结果)。首先Complete,然后Prefix,然后Subsequence。按Subsequence的结果顺序对路径进行排序。

  3. 使用alphanumeric_sort::compare_os_str对结果相同的路径进行排序。

依赖关系

~0.7–1.6MB
~31K SLoC