This library is a modern, pure Go readline
shell implementation, with full .inputrc
and legacy readline command/option support, and extended with various commands, options and tools commonly found in modern shells. Its architecture and completion system is heavily inspired from Z-Shell.
It is used, between others, to power the console library.
.inputrc
support (all commands/options)$EDITOR
/$VISUAL
supportq<a>
) and invocation (@<a>
)- Emacs edition
(This extract is quite a pity, because its author is not using Emacs and does not know many of its shortcuts)
Vim edition
Undo/redo line history
Keyword switching & selection
Switching various keywords
Using regexp-based selection to grab parts of words (here, URL components)
- Vim selection & movements (basic)
- Vim surround (selection and change)
Selecting/adding/changing surround regions
Surround and change in shellwords, matching brackets, etc.
- Vim registers (with completion)
- History movements/completion/use/search
History movement, completion and some other other widgets
- Completion
Classic mode & incremental search mode
Suffix-autoremoval
- Prompts
- Logging
- Inputrc init file reload
- Multiline edition
- Macros
Emacs
Vim
This library is now in a release status, as it has underwent several major rewrites and is now considered mostly feature-complete, with a solid testing suite to ensure safe and smooth operation to the best extent possible. New releases will be regularly pushed when bugs are found and corrected.
Additionally:
.inputrc
parsing package, which brings much wider compatibility to this library.chzyer/readline
for the Windows I/O code and everything related.Readline is used by the console library and its example binary. To get a grasp of the functionality provided by readline and its default configuration, install and start the binary.
The documentation is available on the repository wiki, for both users and developers.
Author: Reeflective
Source Code: https://github.com/reeflective/readline
License: Apache-2.0 license