我的Python程序可以使用各种不同的选项(或子命令)启动,例如:

$ myProgram doSomething
$ myProgram doSomethingElse
$ myProgram nowDoSomethingDifferent

我希望它使用自动完成功能,以便如果我键入“myProgram d”,则返回“myProgram doSomething”,如果我键入“myProgram n”,则呈现“myProgram nowDoSomethingDifferent”。这类似于模块rlcompleter的一般用法,但是它不会从文件系统(或历史记录)中选择可能的完成选项,而是从一组自定义的字符串中选择(与程序的可用选项相对应)。

关于如何实现这一点的任何想法?

我知道变量PYTHONSTARTUP(应该指向一个我不知道如何写的文件)。

作为一个工作示例,django-admin(来自django软件包)具有我正在寻找的相同功能

最佳答案

创建文件“myprog-completion.bash”,并将其来源到您的.bashrc文件中。这样的东西可以帮助您入门...

_myProgram()
{
  cur=${COMP_WORDS[COMP_CWORD]}
  case "${cur}" in
    d*) use="doSomething" ;;
    n*) use="nowDoSomethingElse" ;;
  esac
  COMPREPLY=( $( compgen -W "$use" -- $cur ) )
}
complete -o default -o nospace -F _myProgram  myProgram

关于bash - 使用自定义命令完成行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/427472/

10-12 02:39