| commit | 62c6fe6193755f722b8b8788aa7357be55a50ff1 | [log] [tgz] |
|---|---|---|
| author | chzyer <0@0xdf.com> | Tue Jul 26 13:51:17 2016 |
| committer | chzyer <0@0xdf.com> | Tue Jul 26 13:51:17 2016 |
| tree | aaf5e4915fc4c9d1289d6f889637a2f6968e90bc | |
| parent | c2d777f687510b172c00eceacd38892b0b886bdf [diff] |
update changelog
Readline is A Pure Go Implementation of a libreadline-style Library.
The goal is to be a powerful alternater for GNU-Readline.
WHY: Readline will support most of features which GNU Readline is supported, and provide a pure go environment and a MIT license.
It can also provides shell-like interactives by using flagly (demo: flagly-shell)

Also works fine in windows

example/readline-demo The source code about the demo above
example/readline-im Example for how to write a IM program.
example/readline-multiline Example for how to parse command which can submit by multiple time.
example/readline-pass-strength A example about checking password strength, written by @sahib
go get gopkg.in/readline.v1
or
go get github.com/chzyer/readline
import "gopkg.in/readline.v1" rl, err := readline.New("> ") if err != nil { panic(err) } defer rl.Close() for { line, err := rl.Readline() if err != nil { // io.EOF, readline.ErrInterrupt break } println(line) }
rl, err := readline.NewEx(&readline.Config{ Prompt: "> ", HistoryFile: "/tmp/readline.tmp", }) if err != nil { panic(err) } defer rl.Close() for { line, err := rl.Readline() if err != nil { // io.EOF, readline.ErrInterrupt break } println(line) }
import ( "gopkg.in/readline.v1" ) var completer = readline.NewPrefixCompleter( readline.PcItem("say", readline.PcItem("hello"), readline.PcItem("bye"), ), readline.PcItem("help"), ) rl, err := readline.NewEx(&readline.Config{ Prompt: "> ", AutoComplete: completer, }) if err != nil { panic(err) } defer rl.Close() for { line, err := rl.Readline() if err != nil { // io.EOF, readline.ErrInterrupt break } println(line) }
Meta+B means press Esc and n separately.
Users can change that in terminal simulator(i.e. iTerm2) to Alt+B
Notice: Meta+B is equals with Alt+B in windows.
| Shortcut | Comment |
|---|---|
Ctrl+A | Beginning of line |
Ctrl+B / ← | Backward one character |
Meta+B | Backward one word |
Ctrl+C | Send io.EOF |
Ctrl+D | Delete one character |
Meta+D | Delete one word |
Ctrl+E | End of line |
Ctrl+F / → | Forward one character |
Meta+F | Forward one word |
Ctrl+G | Cancel |
Ctrl+H | Delete previous character |
Ctrl+I / Tab | Command line completion |
Ctrl+J | Line feed |
Ctrl+K | Cut text to the end of line |
Ctrl+L | Clear screen |
Ctrl+M | Same as Enter key |
Ctrl+N / ↓ | Next line (in history) |
Ctrl+P / ↑ | Prev line (in history) |
Ctrl+R | Search backwards in history |
Ctrl+S | Search forwards in history |
Ctrl+T | Transpose characters |
Meta+T | Transpose words (TODO) |
Ctrl+U | Cut text to the beginning of line |
Ctrl+W | Cut previous word |
Backspace | Delete previous character |
Meta+Backspace | Cut previous word |
Enter | Line feed |
Ctrl+S or Ctrl+r to enter this mode)| Shortcut | Comment |
|---|---|
Ctrl+S | Search forwards in history |
Ctrl+R | Search backwards in history |
Ctrl+C / Ctrl+G | Exit Search Mode and revert the history |
Backspace | Delete previous character |
| Other | Exit Search Mode |
Tab to enter this mode)| Shortcut | Comment |
|---|---|
Ctrl+F | Move Forward |
Ctrl+B | Move Backward |
Ctrl+N | Move to next line |
Ctrl+P | Move to previous line |
Ctrl+A | Move to the first candicate in current line |
Ctrl+E | Move to the last candicate in current line |
Tab / Enter | Use the word on cursor to complete |
Ctrl+C / Ctrl+G | Exit Complete Select Mode |
| Other | Exit Complete Select Mode |
| Environment | $TERM |
|---|---|
| Mac OS X iTerm2 | xterm |
| Mac OS X default Terminal.app | xterm |
| Mac OS X iTerm2 Screen | screen |
| Mac OS X iTerm2 Tmux | screen |
| Ubuntu Server 14.04 LTS | linux |
| Centos 7 | linux |
| Windows 10 | - |
Ctrl+A is not working in screen because it used as a control command by defaultIf you test it otherwhere, whether it works fine or not, please let me know!
If you have any questions, please submit a github issue and any pull requests is welcomed :)
Love Readline? Help me keep it alive by donating funds to cover project expenses!
[Become a backer]
Become a sponsor and get your logo here on our Github page. [Become a sponsor]