如何将自动完成数据提供给鱼别名?
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
).
,使其永久添加到完成文件中
我从 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
).