5 个不稳定版本
0.3.3 | 2022年12月29日 |
---|---|
0.3.2 |
|
0.3.1 | 2021年10月16日 |
0.2.2 | 2021年5月21日 |
0.1.0 | 2021年4月12日 |
#1145 在 命令行工具
每月 38 次下载
34KB
562 行
kn
— nvgt/fldrs/qckly
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
从源代码
-
git clone https://github.com/micouy/kn.git
-
cdkn
-
将二进制文件放入
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/中脚本的正确性。
- 为除
fish
、bash
和zsh
之外的shell添加脚本和安装说明。 - 审查.github/workflows/中的Github Actions工作流程。
算法
kn
不跟踪频率或任何其他统计信息。它搜索磁盘以匹配缩写的路径。如果找到多个匹配的路径,它会以以下方式排序
-
将每个组件与其缩写的对应组件进行比较。路径的组件可能或可能不匹配缩写。如果组件匹配缩写,则可能有三种结果
Complete
如果对应组件相等。Prefix
如果缩写的组件是路径组件的前缀。Subsequence(系数)
如果缩写的组件是路径组件的子序列。该系数
是这些字符串的Powierża系数。
仅保留所有组件都匹配的这些路径。
-
以反向字典顺序对路径进行排序(从右到左比较结果)。首先
Complete
,然后Prefix
,然后Subsequence
。按Subsequence
的结果顺序对路径进行排序。 -
使用
alphanumeric_sort::compare_os_str
对结果相同的路径进行排序。
依赖关系
~0.7–1.6MB
~31K SLoC