A modern, pure Go readline library with full .inputrc support, Vim/Emacs modes, and Z-Shell-inspired completions.
Readline is a pure Go implementation of a readline shell library that provides advanced line-editing capabilities for command-line applications. It solves the problem of building interactive shells with modern features while maintaining full backward compatibility with legacy `.inputrc` configurations. The library offers Vim and Emacs editing modes, an extensible completion system, and a programmable API for custom integrations.
Go developers building interactive command-line applications, shells, or REPLs that require sophisticated line editing, autocompletion, and user interface features. It's particularly useful for those who want Vim/Emacs keybindings and Z-Shell-like completions in their Go projects.
Developers choose Readline because it combines decades of readline legacy with modern shell innovations in a pure Go package. Its unique selling points include full `.inputrc` support, near-native Vim and Emacs modes, a Z-Shell-inspired completion system, and a robust, cross-platform architecture with extensive testing.
Shell library with powerful and modern UI, large feature set, and .inputrc support
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Supports all .inputrc commands and options, ensuring seamless backward compatibility with existing shell configurations, as stated in the README's core features.
Offers near-native Vim mode with text objects and surround functionality, plus native Emacs commands and macros, providing advanced editing capabilities similar to contemporary shells.
Features a Z-Shell-inspired, keymap-based completion system with fuzzy search, asynchronous support, and multiple display styles, making it highly configurable for complex CLI applications.
Built almost exclusively with the Go standard library, it runs reliably on Linux, macOS, and Windows, with extensive test coverage for core code.
Includes support for PS1/PS2/RPROMPT prompts, syntax highlighting, and multiline editing with undo/redo history, enhancing user experience in interactive applications.
The README admits potential bugs in key dispatch and meta-key handling across diverse terminal emulators, which could lead to inconsistent behavior in some environments.
Emacs-style macros do not work across multiple calls, as noted in the features list, reducing their utility for complex, multi-step editing tasks.
Documentation is split across a wiki and requires installing an example binary to grasp functionality, which can hinder quick onboarding and debugging.
The extensive feature set, including async completions and syntax highlighting, may introduce latency or memory overhead for simple use cases compared to minimalist libraries.