collapseos/apps/ed
Virgil Dupras 77a23cee84 ed: fix bufDelLines logic
It was mostly wrong.
2019-07-14 16:18:33 -04:00
..
README.md ed: add README 2019-07-14 11:31:14 -04:00
buf.asm ed: fix bufDelLines logic 2019-07-14 16:18:33 -04:00
cmd.asm ed: add 'd' cmd 2019-07-14 10:32:28 -04:00
glue.asm apps/ed: refactoring 2019-07-13 21:08:16 -04:00
io.asm apps/ed: start implementing I/O 2019-07-13 11:29:06 -04:00
main.asm ed: read initial contents in bufInit 2019-07-14 12:19:37 -04:00

README.md

ed - line editor

Collapse OS's ed is modeled after UNIX's ed (let's call it Ued). The goal is to have an editor that is tight on resources and that doesn't require ncurses-like screen management.

In general, we try to follow Ued's conventions and the "Usage" section is mostly a repeat of Ued's man page.

Differences

There are a couple of differences with Ued that are intentional. Differences not listed here are either bugs or simply arent implemented yet.

  • Always has a prompt, :.
  • No size printing on load
  • Initial line is the first one

Usage

ed is invoked from the shell with no argument. ed takes no argument. It reads from the currently selected blkdev and writes to it.

In normal mode, ed waits for a command and executes it. If the command is invalid, a line with ? is printed and ed goes back to waiting for a command.

A command can be invalid because it is unknown, malformed or if its address range is out of bounds.

Commands

  • (addrs)p: Print lines specified in addrs range. This is the default command. If only (addrs) is specified, it has the same effect.
  • (addrs)d: Delete lines specified in addrs range.
  • q: quit ed

Current line

The current line is central to ed. Address ranges can be expressed relatively to it and makes the app much more usable. The current line starts at 1 and every command changes the current line to the last line that the command affects. For example, 42p changes the current line to 42, 3,7d, to 7.

Address ranges

An "address" is a line number. The first line is 1. An address range is a start line and a stop line, expressed as start,stop. For example, 2,4 refer to lines 2, 3 and 4.

When expressing ranges, stop can be omitted. It will then have the same value as start. 42 is equivalent to 42,42.

Addresses can be expressed relatively to the current line with + and -. +3 means "current line + 3", -5, +2 means "address range starting at 5 lines before current line and ending 2 lines after it`.

+ alone means +1, - means -1.