如何将自动完成数据提供给鱼别名?

How to feed autocomplete data to a fish alias?

我从 fish 开始,我在大量文档中找不到的其中一件事是自动完成提要。

教程中提到了 Tab Completions,但它解决了机制本身的存在,而不是其配置。

我有一堆通过

连接的虚拟机
machinectl shell <name of machine> /bin/bash

我可以通过

为我所有的机器制作别名
function cm
    machinectl $argv shell /bin/bash; 
end

但这需要记住并输入机器名称。

如何将 machinectl list | tail -n +2 | head -n -2 | cut -f1 -d' ' 的输出用作我的 cm 命令的 feed/hint,以便在使用 Tab 时显示它们?


编辑:我不知何故错过了文档顶部的这个:Tab completion(我在查看答案后找到了它)

参见help complete。您将在 $__fish_datadir/completions 中找到 fish 附带的完成,包括 ssh 的完成。您为私有函数或命令编写的完成将放在 ~/.config/fish/completions/$cmd_name.fish

这应该会让你有个好的开始:

complete --command cm --no-files \
--arguments '(machinectl list | tail -n +2 | head -n -2 | cut -f1 -d" ")'

在命令行中输入将在当前会话中激活它;如 Kurtis 所述 (~/.config/fish/completions/cm.fish).

,使其永久添加到完成文件中