commit | 7825809f25210035a6191dbe8ab20afacd5cac0f | [log] [tgz] |
---|---|---|
author | Katsu Kawakami <kkawa1570@gmail.com> | Thu Jun 02 22:43:40 2016 -0400 |
committer | Katsu Kawakami <kkawa1570@gmail.com> | Thu Jun 02 22:43:40 2016 -0400 |
tree | 82236f0b196aa53cb5f7bcc028e0c39cc98965d1 | |
parent | 65f45a3a725a12783029078bdd346eb291869e5d [diff] |
Add TODO note to remove char_iter once Read::Chars stabilizes
Readline implementation in Rust that is based on Antirez' Linenoise
This project uses Cargo and Rust Nightly
cargo build --release
extern crate rustyline; use rustyline::error::ReadlineError; use rustyline::Editor; fn main() { let mut rl = Editor::new(); if let Err(_) = rl.load_history("history.txt") { println!("No previous history."); } loop { let readline = rl.readline(">> "); match readline { Ok(line) => { rl.add_history_entry(&line); println!("Line: {}", line); }, Err(ReadlineError::Interrupted) => { println!("CTRL-C"); break }, Err(ReadlineError::Eof) => { println!("CTRL-D"); break }, Err(err) => { println!("Error: {:?}", err); break } } } rl.save_history("history.txt").unwrap(); }
You can use this package in your project by adding the following to your Cargo.toml
:
[dependencies] rustyline = "0.2.2"
Keystroke | Action |
---|---|
Ctrl-A, Home | Move cursor to the beginning of line |
Ctrl-B, Left | Move cursor one character left |
Ctrl-C | Interrupt/Cancel edition |
Ctrl-D, Del | (if line is not empty) Delete character under cursor |
Ctrl-D | (if line is empty) End of File |
Ctrl-E, End | Move cursor to end of line |
Ctrl-F, Right | Move cursor one character right |
Ctrl-H, BackSpace | Delete character before cursor |
Ctrl-J, Return | Finish the line entry |
Ctrl-K | Delete from cursor to end of line |
Ctrl-L | Clear screen |
Ctrl-N, Down | Next match from history |
Ctrl-P, Up | Previous match from history |
Ctrl-R | Reverse Search history (Ctrl-S forward, Ctrl-G cancel) |
Ctrl-T | Transpose previous character with current character |
Ctrl-U | Delete from start of line to cursor |
Ctrl-V | Insert any special character without perfoming its associated action |
Ctrl-W | Delete word leading up to cursor (using white space as a word boundary) |
Ctrl-Y | Paste from Yank buffer (Alt-Y to paste next yank instead) |
Tab | Next completion |
Alt-B, Alt-Left | Move cursor to previous word |
Alt-C | Capitalize the current word |
Alt-D | Delete forwards one word |
Alt-F, Alt-Right | Move cursor to next word |
Alt-L | Lower-case the next word |
Alt-T | Transpose words |
Alt-U | Upper-case the next word |
Alt-Y | See Ctrl-Y |
Alt-BackSpace | Kill from the start of the current word, or, if between words, to the start of the previous word |