#fuzzy-finder #nushell-plugin #fuzzy #plugin #nu #data-stream #menu

app nu_plugin_skim

一个可以处理 Nushell 结构化数据的 sk 命令

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 开发工具

Download history 247/week @ 2024-06-14 37/week @ 2024-06-21 164/week @ 2024-06-28 14/week @ 2024-07-05 136/week @ 2024-07-26 126/week @ 2024-08-02 20/week @ 2024-08-09 71/week @ 2024-08-16

每月下载量:353

MIT 和可能 CC-PDDC

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                ││ virtual1.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    │
│ virtual1.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