#file #key-file #ls #terminal #cli

bin+lib lsk

想象一下 ls,但你可以用 'key' 进入文件或目录,而不仅仅是盯着它看

2 个不稳定版本

0.2.0 2020 年 7 月 9 日
0.1.0 2020 年 7 月 9 日
0.0.0 2020 年 7 月 8 日

#883 in 文件系统

MITGPL-3.0-or-later

115KB
2.5K SLoC

lsk

想象一下 ls,但你可以用 'key' 进入文件或目录,而不仅仅是盯着它看。

它还在实验阶段。目前,只有文件和目录通过硬编码的颜色区分,所以你看不出来文件是否可执行或类似的东西。

安装

您需要安装 rust。

cargo install lsk

lsk 可以直接使用,但您可能需要考虑以下内容。

xdotool

要使用 wr 命令,您需要安装 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