mirror of
https://github.com/VictoriaMetrics/VictoriaMetrics.git
synced 2024-12-01 14:47:38 +00:00
.. | ||
internal | ||
.check-gofmt.sh | ||
.gitignore | ||
complete.go | ||
complete_helper.go | ||
history.go | ||
LICENSE | ||
Makefile | ||
operation.go | ||
readline.go | ||
README.md | ||
runebuf.go | ||
search.go | ||
terminal.go | ||
undo.go | ||
utils.go | ||
vim.go |
readline
This is a pure Go implementation of functionality comparable to GNU Readline, i.e. line editing and command history for simple TUI programs.
It is a fork of chzyer/readline.
- Relative to the upstream repository, it is actively maintained and has numerous bug fixes
- See our changelog for details on fixes and improvements
- See our migration guide for advice on how to migrate from upstream
- Relative to x/term, it has more features (e.g. tab-completion)
- In use by multiple projects: gopass, fq, and ircdog
package main
import (
"fmt"
"log"
"github.com/ergochat/readline"
)
func main() {
// see readline.NewFromConfig for advanced options:
rl, err := readline.New("> ")
if err != nil {
log.Fatal(err)
}
defer rl.Close()
log.SetOutput(rl.Stderr()) // redraw the prompt correctly after log output
for {
line, err := rl.ReadLine()
// `err` is either nil, io.EOF, readline.ErrInterrupt, or an unexpected
// condition in stdin:
if err != nil {
return
}
// `line` is returned without the terminating \n or CRLF:
fmt.Fprintf(rl, "you wrote: %s\n", line)
}
}