click的命令自动补齐功能介绍

in #cn7 years ago

因由

上文(python命令行神器click介绍)描述了使用click创建python命令行程序的主要过程。在实际使用中还希望它有自动补齐的功能,毕竟命令行参数有哪些很难记住,能够自动提示和联想对得心应手的使用至关重要。所以本文讲述怎么使click命令具有自动补齐能力。

首先,不借助第3方工具,click本身是可以支持自动补齐的,在click详细文档(英文版)有一个章节有介绍。但是对于我这种菜鸟,也懒得折腾,就使用了一个开源的第三方库来搞定它,更方便一些。

第三方库地址:https://github.com/click-contrib/click-completion

它有很多自动补齐功能的增强,并且还支持更多的shell,可参考其readme.md文档。

过程

安装

git clone https://github.com/click-contrib/click-completion

cd click-completion

python3 setup.py install --user

配置过程

导入及初始化

import click_completion
click_completion.init()

配置安装命令

@completion.command()
def install():
    """Install the click-completion-command completion"""
    shell, path = click_completion.install('bash')
    click.echo('%s completion installed in %s' % (shell, path))

然后,你需要在shell下执行xx install命令,显示bash completion installed in /root/.bash_completion,你还需要source /root/.bash_completion,就生效了。

当然,这个是简化版的安装命令,详细的请参考Github上click-completion的示例。

效果

输入xx(你的命令行程序名),然后按两下Tab键,会提示子命令列表,子命令输入首字母,再按Tab键,会自动补齐,如果'xx -',在输入Tab键,会提示参数列表。