ratatui-textarea

A simple yet powerful multi-line text editor widget for Ratatui terminal user interfaces.

Library
Cargo
v0.9.2
95stars
MIT License

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum.How we score it →
55/100Fair
Development Activity52
Maintenance56
Community44
Maturity28
Momentum40

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation.How we score it →
85/100Excellent
Architecture87
Code Quality88
Innovation85
Learning Curve80

ratatui-textarea is a text editor widget for the Ratatui TUI framework, playing the role of an HTML <textarea> inside terminal applications. It provides a full multi-line editing experience that you can drop into any part of your interface.

A maintained Ratatui-native fork of the popular tui-textarea, it bundles Emacs-style shortcuts, undo/redo, regex search, text selection, soft wrapping, and mouse scrolling, while staying backend-agnostic across crossterm, termion, and termwiz.

What You Get

  • A multi-line TextArea widget with insert, delete, auto-scroll, and cursor-line highlighting
  • Emacs-like keybindings out of the box (C-n/C-p/C-f/C-b, C-a/C-e, C-k, M-f/M-b, and more)
  • Undo/redo history, text selection, and yank/paste support
  • Regex-based search with match highlighting (via the optional search feature)
  • Soft wrapping with character and word wrap modes, plus optional line numbers

Common Use Cases

  • Embedding a code or note editor inside a terminal application
  • Adding single-line or multi-line input fields to a TUI form
  • Building a Vim- or Emacs-style editing pane within a larger dashboard
  • Capturing masked password input or placeholder-driven prompts in the terminal

Under The Hood

Architecture - The crate is organized around a central TextArea (src/textarea.rs, ~2,600 lines) that owns the text buffer and delegates to focused modules: cursor.rs and screen_map.rs for positioning, history.rs for undo/redo, scroll.rs for viewport management, search.rs for regex matching, wrap.rs/word.rs for line wrapping, highlight.rs for styling, and widget.rs for Ratatui rendering. Input events are decoded in the input module into editing commands. Tech Stack - Rust edition 2024 (MSRV 1.86) built on ratatui-core and ratatui-widgets, with unicode-segmentation and unicode-width for correct grapheme handling; backends (crossterm, termion, termwiz), regex search, serde, and arbitrary are all optional cargo features. Code Quality - Every core module carries its own #[cfg(test)] unit tests, and the code is cleanly separated by concern with Unicode-aware text handling throughout. API Design - The public surface centers on one widget type with discoverable methods, feature-gated backends keep the default build lean, and a dozen runnable examples (minimal, editor, vim, password, wrap, and more) make the ergonomics easy to learn.

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers

Search