文章目录
- 简介
- 一、代码示例
- 二、使用go-prompt的项目
- 三、特性
- 1. 强大的自动完成
- 2. 灵活的功能选项
- 3. 快捷键
- 4. 历史记录
- 5. 跨平台支持
- 小结
简介
受python提示工具包的启发,在Go中构建强大的交互式提示
一、代码示例
package main
import (
"fmt"
"github.com/c-bata/go-prompt"
)
func completer(d prompt.Document) []prompt.Suggest {
s := []prompt.Suggest{
{Text: "users", Description: "Store the username and age"},
{Text: "articles", Description: "Store the article text posted by user"},
{Text: "comments", Description: "Store the text commented to articles"},
}
return prompt.FilterHasPrefix(s, d.GetWordBeforeCursor(), true)
}
func main() {
fmt.Println("Please select table.")
t := prompt.Input("> ", completer)
fmt.Println("You selected " + t)
}
二、使用go-prompt的项目
- c-bata/kube-prompt:一个交互式的kubernetes客户机,以用Go编写的auto-complete为特色。
- lancher/cli:rancher命令行界面(cli)是管理您的rancher服务器的统一工具
- kubicorn/kubicorn:Kubernetes的简单的云本地基础设施。
- cch123/asm-cli:基于unicorn和rasm2的交互式汇编语言shell(X86/X64)
- ktr0731/evans:更具表现力的通用gRPC客户端
- crushepixel/moshpit:一个Command-line数据拼接工具。
- last-ent/testy-go:testygo:一个易于测试的工具!
- tiagorlampert/CHAOS:允许生成有效负载和控制远程操作系统的PoC。
- abs-lang/abs:ABS是一种脚本语言,在终端上运行得最好。它试图将Python或Ruby等语言的优雅与Bash的便利结合起来。
- takashabe/btcli:btcli是Bigtable的CLI客户端。有很多读取选项和auto-completion。
- ysn2233/kafka-prompt:在现有kafka命令客户机上构建的交互式kafka-prompt(kafka-shell)
- fishi0x01/vsh:HashiCorp Vault交互式shell
- mstrYoda/docker-shell:docker的简单交互式提示
- c-bata/gh-prompt:一个交互式GitHub CLI,具有auto-complete。
- docker-slim/docker-slim:不要更改Docker容器映像中的任何内容,并将其缩小到30倍(对于编译语言,甚至更大),使其更安全!(免费和开源)
- rueyaa332266/ezcron:ezcron是一个CLI工具,可以帮助您更轻松地处理cron表达式。
- qsctl:qingstor对象存储的高级命令行工具。
三、特性
1. 强大的自动完成
2. 灵活的功能选项
3. 快捷键
Emacs-like默认情况下可以使用键盘快捷键(这些也是bashshell中的默认快捷键)。您可以自定义和展开这些快捷方式。
4. 历史记录
可以使用向上箭头和向下箭头浏览已执行命令的历史记录。
5. 跨平台支持
我们确认go-prompt在以下终端正常工作:
iTerm2 (macOS)
Terminal.app (macOS)
命令提示符(Windows)
gnome-terminal (Ubuntu)