Home

Awesome

go-prompt

Go Report Card Software License GoDoc tests

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

Features

Powerful auto-completion

demo

(This is a GIF animation of kube-prompt.)

Flexible options

go-prompt provides many options. Please check option section of GoDoc for more details.

options

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.

keyboard shortcuts

Key BindingDescription
<kbd>Ctrl + A</kbd>Go to the beginning of the line (Home)
<kbd>Ctrl + E</kbd>Go to the end of the line (End)
<kbd>Ctrl + P</kbd>Previous command (Up arrow)
<kbd>Ctrl + N</kbd>Next command (Down arrow)
<kbd>Ctrl + F</kbd>Forward one character
<kbd>Ctrl + B</kbd>Backward one character
<kbd>Ctrl + D</kbd>Delete character under the cursor
<kbd>Ctrl + H</kbd>Delete character before the cursor (Backspace)
<kbd>Ctrl + W</kbd>Cut the word before the cursor to the clipboard
<kbd>Ctrl + K</kbd>Cut the line after the cursor to the clipboard
<kbd>Ctrl + U</kbd>Cut the line before the cursor to the clipboard
<kbd>Ctrl + L</kbd>Clear the screen

History

You can use <kbd>Up arrow</kbd> and <kbd>Down arrow</kbd> to walk through the history of commands executed.

History

Multiple platform support

We have confirmed go-prompt works fine in the following terminals:

Links

Author

Masashi Shibata

License

This software is licensed under the MIT license, see LICENSE for more information.