如何使我的程序利用制表符完成?

2024-10-01 17:41:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我注意到有些程序(例如hg)允许用户用tab键完成命令的特定部分。例如,如果在hg存储库工作目录中,我键入:

hg qpush --move b8<TAB>

它将尝试使用我的补丁队列中以“b8”开头的任何mercurial补丁来完成命令。在

我想在我的程序中模仿这种行为。也就是说,我有一系列依赖于某个目录中文件的命令,我希望能够在shell中提供制表符补全功能。在ubuntulinux上是否有一个API来提供这个功能(最好使用python,因为我的脚本就是用这个编写的)?在


Tags: 文件用户命令程序功能目录move键入
3条回答

这就是readline模块的用途。在

实际上,readline是一个通用的C库,所以它有许多语言的绑定。我可以说,我玩得很开心。在

享受B)

为此,您需要为shell编写制表符补全模块。大多数Linux发行版中的默认shell是bash,因此您应该编写一个完成脚本(通常是一个shell脚本)。编写完脚本后,将其添加到/etc/bash_completion.d/。这应该与您的程序一起分发(对于Linux发行版,包含在软件包中)。在

Debian管理具有a guide for writing your completion scripts。有关在Mac上使用完成的信息,请参见https://trac.macports.org/wiki/howto/bash-completion。在

有关完成文件的示例,请看一下^{} project from Debian(也称为on Github)。另请参见https://unix.stackexchange.com/questions/4738/an-easy-bash-completion-tutorial。在

如果使用zshhack.augusto linked to the documentation for writing completions。在

您可能想试试zshshell,它有一个强大的完成系统,支持大量的应用程序。在

完成系统是用shell语言编写的,但是如果您真的想使用python,您可以从补全函数内部运行解释器。缺点是,如果你想为你自己的软件编写完成,你需要做一些阅读(例如user manualmanpage)。在

相关问题 更多 >

    热门问题