go-prompt
A library for building powerful interactive prompts inspired by python-prompt-toolkit,
making it easier to build cross-platform command line tools using 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)
}
Projects using go-prompt
- c-bata/kube-prompt : An interactive kubernetes client featuring auto-complete written in Go.
 - rancher/cli : The Rancher Command Line Interface (CLI)is a unified tool to manage your Rancher server
 - kubicorn/kubicorn : Simple, cloud native infrastructure for Kubernetes.
 - cch123/asm-cli : Interactive shell of assembly language(X86/X64) based on unicorn and rasm2
 - ktr0731/evans : more expressive universal gRPC client
 - CrushedPixel/moshpit: A Command-line tool for datamoshing.
 - last-ent/testy-go: Testy Go: A tool for easy testing!
 - tiagorlampert/CHAOS: a PoC that allow generate payloads and control remote operating systems.
 - abs-lang/abs: ABS is a scripting language that works best on terminal. It tries to combine the elegance of languages such as Python, or Ruby, to the convenience of Bash.
 - takashabe/btcli: btcli is a CLI client for the Bigtable. Has many read options and auto-completion.
 - ysn2233/kafka-prompt: An interactive kafka-prompt(kafka-shell) built on existing kafka command client
 - fishi0x01/vsh: HashiCorp Vault interactive shell
 - mstrYoda/docker-shell: A simple interactive prompt for docker
 - c-bata/gh-prompt: An interactive GitHub CLI featuring auto-complete.
 - (If you create a CLI utility using go-prompt and want your own project to be listed here, please submit a GitHub issue.)
 
Features
Powerful auto-completion
(This is a GIF animation of kube-prompt.)
Flexible options
go-prompt provides many options. Please check option section of GoDoc for more details.
Keyboard Shortcuts
Emacs-like keyboard shortcuts are available by default (these also are the default shortcuts in Bash shell).
You can customize and expand these shortcuts.
Key Binding, Description
---------------------, ---------------------------------------------------------
Ctrl + A, Go to the beginning of the line (Home)
Ctrl + E, Go to the end of the line (End)
Ctrl + P, Previous command (Up arrow)
Ctrl + N, Next command (Down arrow)
Ctrl + F, Forward one character
Ctrl + B, Backward one character
Ctrl + D, Delete character under the cursor
Ctrl + H, Delete character before the cursor (Backspace)
Ctrl + W, Cut the word before the cursor to the clipboard
Ctrl + K, Cut the line after the cursor to the clipboard
Ctrl + U, Cut the line before the cursor to the clipboard
Ctrl + L, Clear the screen
History
You can use Up arrow and Down arrow to walk through the history of commands executed.
Multiple platform support
We have confirmed go-prompt works fine in the following terminals:
- iTerm2 (macOS)
 - Terminal.app (macOS)
 - Command Prompt (Windows)
 - gnome-terminal (Ubuntu)
 
Links
Author
Masashi Shibata
License
This software is licensed under the MIT license, see LICENSE for more information.



