【问题标题】:Enable returning multiple arguments as completion reply at once in fish shell启用在鱼壳中一次返回多个参数作为完成回复
【发布时间】:2016-06-10 22:49:49
【问题描述】:

我正在将 Google Cloud SDK 命令行自动完成功能移植到 fish shell。当我有一个包含多个参数的明确回复时:

A) 当我在 ''s 或 ""s 内的完整命令中指定函数调用时,命令使用所有这些参数完成,但空格被转义 (\ ),例如:> complete ... -a' (__fun)'

B) 或者如果我不这样做(只是:-a (__fun)),那么只有回复的第一个参数进入完成,所有其他参数“迷路”

是否可以在鱼补全中同时回复多个参数?

【问题讨论】:

  • fish 选项卡补全仅扩展为单个参数。对于我自己的信息,您希望一次插入多个参数的情况是什么?
  • 例如当您想使用“gcloud compute ssh”时,sdk 可以使用实例名称 --zone 和区域来完成它,这非常有用。

标签: autocomplete fish tab-completion completion


【解决方案1】:

可以通过多种方式完成。但是,您将不得不对其进行一些修改,因为荒谬的鱼说它不是为此而设计的。 最简单的方法是发布您自己的包装函数,该函数可以获取转义的输出并以有效的方式传递它。但是,它不是很漂亮,并且会与自动建议一起搞砸,除非您也返回并修改历史记录行。

这是我建议的半hacky/半优雅的东西: 如果您查找了想要立即完成的 args 的“序列”,则在第一次调用时将尾随 args 作为对第一个的描述。一旦该选项被锁定,删除除此“描述队列”中的第一个选项之外的所有其他选项,继续检查它,只需快速按下 tab-tab-tab-tab。

完成不一定是完美的,在你有足够的历史行来自动建议接管之前,它们主要是一个小小的帮助,imo。

【讨论】:

  • 我想不通。由于我将竞争称为:
  • 完成 -x -c gcloud -a '(__python_argcomplete)'
  • 现在我返回我的 __python_argcomplete 函数中的选项,并一一回显它们。根据鱼文档,我可以使用 -d 'description' 在完整调用中提供描述。但这在函数调用之外,因为我可以在其中发出多个选项,每个选项都应该有其单独的描述。我错过了什么吗?
  • 这是我能做到的,按照您的建议工作,没有描述:github.com/Doctusoft/google-cloud-sdk-fish-completion 计划稍后添加更多功能
  • 是的 -d 将对所有内容进行相同的描述。对于个别的,只需在完成和描述之间放置一个选项卡,例如 comp1\tdesc1\ncomp2\tdesc2\n 等
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多