go-prompt

Building powerful interactive prompts in Go, inspired by python-prompt-toolkit.

Github stars Tracking Chart

go-prompt

Go Report Card
Software License
GoDoc
Build Status

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 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.

History

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)

Author

Masashi Shibata

License

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

Overview

Name With Ownerc-bata/go-prompt
Primary LanguageGo
Program languageMakefile (Language Count: 4)
Platform
License:MIT License
Release Count9
Last Release Namev0.2.6 (Posted on )
First Release Namev0.1.0 (Posted on )
Created At2017-08-14 16:02:09
Pushed At2024-05-03 17:09:01
Last Commit At2021-03-03 17:56:52
Stargazers Count5.2k
Watchers Count55
Fork Count338
Commits Count380
Has Issues Enabled
Issues Count154
Issue Open Count79
Pull Requests Count73
Pull Requests Open Count32
Pull Requests Close Count17
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private
To the top