Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/badboy/red
A Rust Editor
https://github.com/badboy/red
Last synced: 9 days ago
JSON representation
A Rust Editor
- Host: GitHub
- URL: https://github.com/badboy/red
- Owner: badboy
- License: mit
- Created: 2018-09-08T15:51:28.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2018-09-13T13:28:11.000Z (over 6 years ago)
- Last Synced: 2024-12-24T02:01:32.517Z (12 days ago)
- Language: Rust
- Size: 71.3 KB
- Stars: 9
- Watchers: 2
- Forks: 2
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
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*.