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

View this thread on: d.buzz | hive.blog | peakd.com | ecency.com
·@brysj22952·
0.000 HBD
click的命令自动补齐功能介绍
# 因由

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

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

第三方库地址: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

## 配置过程

### 导入及初始化

```python
import click_completion
click_completion.init()
```

### 配置安装命令

```python
@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键,会提示参数列表。
👍 , , , ,