Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/badboy/red

A Rust Editor
https://github.com/badboy/red

Last synced: 9 days ago
JSON representation

A Rust Editor

Awesome Lists containing this project

README

        

# red - A Rust Editor

*red* is a line-oriented text editor, based on the popular [*ed* utility](http://pubs.opengroup.org/onlinepubs/009604599/utilities/ed.html).
It has two modes: *command mode* and *input mode*. In command mode the input characters are interpreted as commands, and in input mode they are interpreted as text.

Some of the history of *ed* is discussed in the article ["Where Vim Came From"](https://twobithistory.org/2018/08/05/where-vim-came-from.html).

## Installation

```
cargo install red-editor
```

## Usage

```
$ red file.txt
a
Hello World!
.
w
13
1,$p
Hello World!
q
```

## Available commands

* `q` - Quit the editor. If the buffer has changed since the last time it was written, a warning is saved and the editor is not quit. A successive `q` command will exit.
* `Q` - Quit the editor without checking whether changes are unsaved.
* `(.,.)p` - Print the addressed lines to standard output.
* `(.,.)n` - Print the addressed lines to standard output, preceding each line by its line number and a <tab>.
* `(.,.)d` - Delete the addressed lines from the buffer.
* `(.,.)w [file]` - Write the addressed lines to the named file. The pathname is remembered for following writes.
* `(.)a` - Append text after the addressed line. End text input with a single `.` in a line.
* `(.)i` - Insert text before the addressed line. End text input with a single `.` in a line.
* `h` - Write a short message to standard output that explains the reason for the most recent `?`.
* `e [file]` - Delete the entire contents of the buffer and read the specified file into the buffer.
* `(.,.)c` - Delete the addressed line, then accept input text to replace these lines.
* `(.)r [file]` - Read contents of another file and insert into the buffer.
* `(.,.)maddress` - Move the addressed lines after the line addressed by `address`.
* `(.,.)s/RE/replacement/flags` - Search the addressed lines for an occurence of `RE` and substitute either the first or all matched strings with `replacement`. Supported flags: **g** to globally substitute instances of `RE`.

## Not (yet) implemented

* `/` - Addressing lines by search.
* `(.,.)g/RE/command` - Global regular expression search.
* `'x` - Marking lines with a name.

## License

MIT. See [LICENSE](LICENSE).

---
This file was written with *red*.