在 fish shell 中启用一次返回多个参数作为完成回复
Enable returning multiple arguments as completion reply at once in fish shell
我正在努力将 Google Cloud SDK 命令行自动完成功能移植到 fish shell。当我有一个带有多个参数的明确回复时:
A) 当我在 ''s or ""s, like: > complete ... -a '(__fun)'
B) 或者如果我不这样做(只是:-a (__fun)),那么只有回复的第一个参数进入完成,所有其他参数 "get lost"
是否可以在 fish completion 中一次回复多个参数?
可以通过多种方式完成。不过,您将不得不对它进行一些修改,因为正如 ridiculous_fish 所说,它不是为此而设计的。
最简单的方法是发布您自己的包装函数,该函数可以获取转义输出并以有效的方式传递它。不过,不是很漂亮,除非您也返回并修改历史行,否则会搞砸自我建议。
这里有一些 semi-hacky/semi-elegant 我会建议:
如果您查找了 "sequence" 个您想要立即完成的参数,则在第一次调用时将尾随参数作为对第一个参数的描述。锁定该选项后,删除除此 "description queue" 中的第一个选项之外的所有其他选项,继续执行它,只需快速按 tab-tab-tab-tab 即可。
完成不一定是完美的,在你有足够的历史记录让自动建议接管之前,它们主要是一个小小的帮助,imo。
我正在努力将 Google Cloud SDK 命令行自动完成功能移植到 fish shell。当我有一个带有多个参数的明确回复时:
A) 当我在 ''s or ""s, like: > complete ... -a '(__fun)'
B) 或者如果我不这样做(只是:-a (__fun)),那么只有回复的第一个参数进入完成,所有其他参数 "get lost"
是否可以在 fish completion 中一次回复多个参数?
可以通过多种方式完成。不过,您将不得不对它进行一些修改,因为正如 ridiculous_fish 所说,它不是为此而设计的。 最简单的方法是发布您自己的包装函数,该函数可以获取转义输出并以有效的方式传递它。不过,不是很漂亮,除非您也返回并修改历史行,否则会搞砸自我建议。
这里有一些 semi-hacky/semi-elegant 我会建议: 如果您查找了 "sequence" 个您想要立即完成的参数,则在第一次调用时将尾随参数作为对第一个参数的描述。锁定该选项后,删除除此 "description queue" 中的第一个选项之外的所有其他选项,继续执行它,只需快速按 tab-tab-tab-tab 即可。
完成不一定是完美的,在你有足够的历史记录让自动建议接管之前,它们主要是一个小小的帮助,imo。