2 个不稳定版本
0.2.0 | 2020 年 7 月 9 日 |
---|---|
0.1.0 |
|
0.0.0 | 2020 年 7 月 8 日 |
#883 in 文件系统
115KB
2.5K SLoC
lsk
想象一下 ls,但你可以用 'key' 进入文件或目录,而不仅仅是盯着它看。
它还在实验阶段。目前,只有文件和目录通过硬编码的颜色区分,所以你看不出来文件是否可执行或类似的东西。
安装
您需要安装 rust。
cargo install lsk
可选(强烈推荐)设置和依赖项
lsk 可以直接使用,但您可能需要考虑以下内容。
xdotool
要使用 w
和 r
命令,您需要安装 xdotool。在您的系统最喜欢的软件包管理器中查找它。
环境变量
要使用 $EDITOR 环境变量通过您的首选编辑器打开文件,请执行以下操作
export EDITOR="vim"
否则,打开文件时将默认使用 nano 编辑器。
要使用 $LSK_FILE_OPENER 打开任何文件
export LSK_FILE_OPENER="<favorite-file-opener>"
如果未设置,它将使用 xdg-open 打开随机文件,例如图片或音乐文件。
用法
对于与 ls -a
等效的操作,请执行 lsk -a
。ls 的一些其他有用选项尚未支持,但这是一个目标。
在 lsk 内部
其理由是您可以简单地输入键号 + Enter。这是它的 90%。要返回目录,请输入 0
。
以下是所有重要的命令。请注意,以下一些命令需要空格。
使用编辑器打开文件: <key>
打开目录: <key>
打开任何文件: o <key>
(默认是 xdg-open)
搜索/模糊匹配列表: s
(记得空格,然后输入)
返回目录: 0
退出: q
在查看的目录中工作: w
(类似 cd
的排序)
选择文件范围: <key_start>-<key_end>
(例如 7-5
)
返回文件/目录路径: r <key1> <key2> [...]
(例如 r 1 2 3
)
下一页: <key>-
(例如,如果当前页有超过48个结果,则为 49-
)
原始页 0-
(不要与 0
混淆,后者是回退一个目录级别)
目标
-
发布到crates.io。
-
交互式帮助。
-
如果未找到xdotool,则打印返回的文件或目录路径。
-
为非Rust用户提供Docker和nix安装。
-
在MacOS上进行测试,并可能考虑Windows兼容性。
-
添加更多文件颜色(目前只区分文件和目录)。
-
支持LS_COLOR并不要依赖于硬编码的颜色方案。
-
添加异步操作并更多地使用引用传递:如果目录顶部有很多文件,则速度会较慢。
-
在不完全依赖退格键的情况下编辑命令。
-
光标(当你输入时移动的闪烁事物)应该是可见的。
-
从缩小视图或选择范围中退出文件视图。
-
可能找到xdo-tool的替代方案(使用环境变量返回文件名有些像黑客手段)。
-
使用更多屏幕空间并处理文件名换行。
其他用法
如果你喜欢像 fzf
这样的工具,你可能喜欢这个。你可以使用你制作的脚本(bash、python等)运行lsk,进行模糊目录跳转、模糊文件打开和模糊命令(非常实验性)。
c
是用于命令。
模糊目录
lsk--模糊-目录/路径/到/模糊/目录/脚本
这是我自己使用的脚本。
#!/bin/bash
find -type d | cut -c 3- | fzf
模糊文件打开
lsk--模糊-查找/路径/到/模糊/文件/打开/脚本
我使用的脚本。
#!/bin/bash
fzf
你可以将所有这些参数一起传递,并将其别名设置为 lsk
,以便于使用。
lsk--模糊-目录/路径/到/模糊/目录/脚本--模糊-查找/路径/到/模糊/文件/打开/脚本
开发
测试
目前,一些测试必须在主机上运行,而另一些则必须在docker中运行。lsk的测试模拟键盘输入,我无法想出如何在docker中做到这一点。
为主机或docker运行测试
如果有代码更改,请将其放入阶段。这非常重要。
gitadd -u
运行以下脚本,为host或docker测试取消注释 #[ignore]。
./unignore_host_tests
或 ./unignore_host_tests
在主机上运行测试。
cargo test -- --test-threads=1 --nocapture
使用dev脚本在docker上运行测试。
./dev.sh测试rust库
撤销任何未放入阶段的更改(这些是 'unignore' 脚本)
git恢复 .
特殊情况
由于未知原因,这些测试只有在明确请求时才会运行。
./dev.sh测试rust库列表
一个或多个测试依赖于确切的终端大小。
./unignore_host_term_size_dependent
依赖项
~2.6–10MB
~71K SLoC