b5d7d9eae3 | ||
---|---|---|
_example | ||
_tools | ||
.gitignore | ||
DEVELOPER_GUIDE.md | ||
LICENSE | ||
Makefile | ||
README.md | ||
bisect.go | ||
bisect_test.go | ||
buffer.go | ||
buffer_test.go | ||
completion.go | ||
completion_test.go | ||
console_interface.go | ||
document.go | ||
document_test.go | ||
emacs.go | ||
emacs_test.go | ||
filter.go | ||
filter_test.go | ||
history.go | ||
input.go | ||
key.go | ||
key_bind.go | ||
key_string.go | ||
option.go | ||
prompt.go | ||
render.go | ||
render_test.go | ||
vt100_input.go | ||
vt100_output.go |
go-prompt
Library for building a powerful interactive prompt, inspired by python-prompt-toolkit. Easy building a multi-platform binary of the command line tools because built with Golang.
(This is a GIF animation of kube-prompt.)
Projects using go-prompt
Features
Flexible options
go-prompt provides many options. All options are listed in Developer Guide.
Keyboard Shortcuts
Emacs-like keyboard shortcut is available by default (it's also default shortcuts in Bash shell). You can customize and expand these shortcuts.
KeyBinding | 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/delete the Line before the cursor to the clipboard. |
Easy to use
Usage is like this:
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)
}
More practical example is available from _example
directory and a source code of kube-prompt.
Links
- If you want to create CLI using go-prompt, you might want to look at the Developer Guide.
- If you want to contribute, you might want to look at the Architecture of go-prompt section in Developer Guide.
- If you want to know internal API, you might want to look at the GoDoc.
Author
Masashi Shibata
LICENSE
This software is licensed under the MIT License (See LICENSE ).