39 releases

0.11.1 Jan 18, 2026
0.10.7 Jan 14, 2026
0.10.1 Dec 30, 2025
0.9.9 Nov 9, 2025
0.1.0 Nov 28, 2023

#18 in Text editors

Download history 220/week @ 2025-10-15 163/week @ 2025-10-22 62/week @ 2025-10-29 160/week @ 2025-11-05 26/week @ 2025-11-12 30/week @ 2025-11-19 47/week @ 2025-11-26 37/week @ 2025-12-03 22/week @ 2025-12-10 58/week @ 2025-12-17 118/week @ 2025-12-24 126/week @ 2025-12-31 240/week @ 2026-01-07 122/week @ 2026-01-14 121/week @ 2026-01-21 2544/week @ 2026-01-28

3,155 downloads per month
Used in 6 crates

MIT license

6MB
5.5K SLoC

EdTUI

Crate Badge Continuous Integration Deps Status License Badge

Overview

EdTUI is a text editor widget for the Ratatui ecosystem. It is designed to provide a user experience inspired by Vim. Edtui is developed to be used as an editor in ratatui apps. It is not supposed to be a stand-alone code editor.

Create a new EditorState and render it using EditorView. You can customize the theme, enable line wrapping, syntax highlight the text or set the tab width:

use edtui::{EditorState, EditorTheme, EditorView};
use ratatui::widgets::Widget;

let mut state = EditorState::default();
EditorView::new(&mut state)
        .theme(EditorTheme::default())
        .wrap(true)
        .syntax_highlighter(None)
        .tab_width(2)
        .render(area, buf);

Handle events (Vim mode by default):

use edtui::EditorEventHandler;

let mut event_handler = EditorEventHandler::default();
event_handler.on_key_event(key_event, &mut state);

Or use Emacs mode (modeless editing):

use edtui::{EditorState, EditorEventHandler, Lines};

let mut state = EditorState::new(Lines::from("Hello World"));
let mut event_handler = EditorEventHandler::emacs_mode();
event_handler.on_key_event(key_event, &mut state);

Or customize keybindings:

let mut key_handler = KeyEventHandler::vim_mode();
key_handler.insert(
    KeyEventRegister::n(vec![KeyInput::ctrl('x')]),
    SwitchMode(EditorMode::Insert),
);
let event_handler = EditorEventHandler::new(key_handler);

Demo