6 个版本 (破坏性更新)
新 0.5.0 | 2024年8月21日 |
---|---|
0.4.0 | 2024年8月5日 |
0.3.0 | 2024年7月30日 |
0.2.0 | 2024年7月1日 |
0.1.1 | 2024年6月16日 |
#82 in 开发工具
每月下载量:353
42KB
901 行
nu_plugin_skim
这是一个为 Nushell 添加并集成了 skim 模糊查找器的插件。
常规的 sk
可执行文件过滤文本行,但此插件添加的 sk
命令可以过滤 Nushell 的结构化数据。
安装
使用以下命令安装 crate
> cargo install nu_plugin_skim
然后使用以下命令注册插件(必须在 Nushell 内部执行此操作)
> plugin add ~/.cargo/bin/nu_plugin_skim
使用方法
将任何 Nushell 命令的输入通过 sk
管道传输
> ps | sk --format {get name} --preview {}
这将打开 skim TUI,允许您从流中选择一个项目
│╭─────────┬─────────────╮ 1/9
││ pid │ 4223 │
││ ppid │ 3944 │
> /usr/bin/nu ││ name │ /usr/bin/nu │
nu ││ status │ Running │
nu ││ cpu │ 28.78 │
nu ││ mem │ 37.4 MiB │
nu ││ virtual │ 1.4 GiB │
nu │╰─────────┴─────────────╯
6/258 5/0 │
> 'nu │
该项目将以与 sk
输入相同的结构化 Nushell 类型返回
> ps | sk --format {get name} --preview {}
╭─────────┬─────────────╮
│ pid │ 4223 │
│ ppid │ 3944 │
│ name │ /usr/bin/nu │
│ status │ Running │
│ cpu │ 28.57 │
│ mem │ 37.8 MiB │
│ virtual │ 1.4 GiB │
╰─────────┴─────────────╯
当然,可以像管道传输命令的输出一样,将命令的结果管道传输到另一个命令
> ps | sk --format {get name} --preview {} | kill $in.pid
显著的标志
nu_plugin_skim 旨在复制 skim 的语法,但有一些差异以更好地与 Nushell 集成
-
--multi
/-m
- 此标志与常规 skim 中的用法完全相同,但与常规 skim 总是返回文本不同 - 这里sk
返回结构化 Nushell 数据,此标志更改了数据的类型。如果没有它,则选择的项目将按原样返回。如果有它,则将作为列表返回(即使用户只选择了一个项目)> seq 1 10 | sk | describe int > seq 1 10 | sk -m | describe list<int> (stream)
-
--format
- 这是常规 skim 没有的标志。它接收一个 Nushell 闭包,并在将其显示为用户可选行之前将项目通过该闭包管道传输。如果闭包返回复杂的 Nushell 数据类型,它将以类似于 Nushell 的
debug
命令 的记法进行格式化请注意,在skim中,人们会使用
--with-nth
来达到类似的目的,但语法和用法不同,因此需要不同的名称。 -
--preview
- 与常规的skim不同,其中--preview
接受一个字符串,这里--preview
接受一个Nushell闭包。光标下的项目将被管道传输到闭包,结果将在预览窗口中显示。如果闭包返回一个复杂的Nushell数据类型,它将被格式化为一个表格。
要按原样显示项目,请使用空闭包
--preview {}
。 -
--bind
- 与接收作为逗号分隔的冒号分隔键值列表的绑定(例如,sk --bind alt-s:down,alt-w:up
)的常规sk
不同,这里的绑定是以记录的形式给出的(例如,sk --bind {alt-s: down, alt-w: up}
) -
--expect
- 与接收作为键的逗号指定列表的常规sk
不同(例如,sk --expect ctrl-v,ctrl-t,alt-s
),这里动作是以字符串列表的形式给出的(例如,sk --expect [ctrl-v, ctrl-t, alt-s]
)当此标志给出时(即使是一个空列表),结果将是一个包含动作字段的记录,其中包含动作(如果使用了常规的
Return
,则为null
)以及一个包含所选项目的字段(如果使用了-m
/--multi
,则为它们的列表) -
--tiebreak
- 与接收作为逗号指定的标准列表的常规sk
不同,这里的标准是以字符串列表的形式给出的。 -
--algo
和--case
- 在常规sk
中,将它们设置为一个不受支持的值将回退到默认值。这里将引发错误。 -
--pre-select-items
- 与常规sk
不同,它接收一个换行符分隔的列表,这里它接收一个Nushell列表。
依赖项
29–60MB
~1M SLoC