RustyLine
Readline implementation in Rust that is based on Antirez' Linenoise
Supported Platforms
- Linux
- Windows
- cmd.exe
- Powershell
Note: Powershell ISE is not supported, check issue #56
Build
This project uses Cargo and Rust stable
Example
extern crate rustyline;
use ReadlineError;
use Editor;
crates.io
You can use this package in your project by adding the following
to your Cargo.toml:
[]
= "1.0.0"
Features
- Unicode (UTF-8) (linenoise supports only ASCII)
- Word completion (linenoise supports only line completion)
- Filename completion
- History search (Searching for Commands in the History)
- Kill ring (Killing Commands)
- Multi line mode
- Word commands
Actions
| 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-I, Tab | Next completion |
| Ctrl-J, Ctrl-M, Enter | 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 (Meta-Y to paste next yank instead) |
| Meta-< | Move to first entry in history |
| Meta-> | Move to last entry in history |
| Meta-B, Alt-Left | Move cursor to previous word |
| Meta-C | Capitalize the current word |
| Meta-D | Delete forwards one word |
| Meta-F, Alt-Right | Move cursor to next word |
| Meta-L | Lower-case the next word |
| Meta-T | Transpose words |
| Meta-U | Upper-case the next word |
| Meta-Y | See Ctrl-Y |
| Meta-BackSpace | Kill from the start of the current word, or, if between words, to the start of the previous word |
ToDo
- Show completion list
- Undos
- Read input with timeout to properly handle single ESC key
- expose an API callable from C
Wine
)
Similar projects
- copperline (Rust)
- liner (Rust)
- linenoise-ng (C++)
- liner (Go)
- readline (Go)
- haskeline (Haskell)