I decided to see if I could make a rough emulation of the original rand text editor. I'd used the editor for years and always found the "feel" of the editor to be better than emacs and certainly better than vi. It turns out it only took a couple of weekends to make something that more or less did everything I remembered. Some of the original features like WP mode were to fuzzy in my mind to try to replicate. The basics are there though including multple windows, alternate files in windows & rectangular get and cut buffers. If your interested, its free for the taking as a GPL program. You can grab the source and a precompiled 64 bit version here. I decided to name it sre, for Stabie's Rand Editor. It is a pity it fell out of existence. It was the grand-daddy of all full screen editors.
Update 3/6/2011:
Added split and join commands along with a simple way to
define your own keys. I figured anyone who really
uses this editor will want their own keys, and I had to have
split & join after a bit of use.
Update 3/13/2011:
Added a command to "tag" to a function if a tags file is
available. Use the env var TAGPATH to search multiple directories.
Also added a command to "unload" a file from a window's edit queue.
With tagging it can be especially useful to limit the windows alternate
files. Fixed a bug in rectangular cut as well.
Update 3/26/11:
Fixed a bug in delete char if the line was not in memory.
Added ability to open up to 4 files when starting the editor
by specifying additional files as arguments.
Fixed a bug where the file modified flag was not set if lines
were cut using the mark command.
Update 4/19/11:
Check if file is RO and do not allow modification if it is.
Copy the file access mode when saving file to preserve exec mode etc.
Preserve insertmode and search key in init file
Add a variable bell, to control if a beep is made on errors.
(set bell 0, set bell 1 on command line)
Add new command "match" assigned to keypad key "5", which
matches [], {}, and (). Just put cursor over the [], {}, or ()
and press the 5 keypad key. The matching bracket, brace or paren
will be the new cursor location. A matched failed message is
returned if no match is available.
Update 6/2/11:
Add "range" command to limit editing to a range of lines
within a file. Easiest way to use is to first set a mark
over the beginning brace of a function, hit ^G, then
keypad 5 to jump to the matching end brace of the function,
then ^space to get command prompt, then enter range, and the
marked area is now the range of the cursor. All commands
obey the range with the exception of a goto. So a goto 1
will always goto line 1. Turn off the range with the -range
command. You can have multiple windows open. The range applies to
only the specified window and only the file active when range
is enabled.
Update 6/17/11:
Fix bug that could cause a crash when opening/cutting/pasting
lines. The bug occured from the current line optimization.
Update 4/20/12:
Fix bug in cut command. Add new repl /xxx/yyy/ command.
Also fix ix minor nuisance of hitting escape
by accident requiring entering some keys to simulate
a multi-byte function key.
Update 5/10/13:
Fix bug in repl when replacement string was of the form
/string/string1/
and fix problem in search when window was shifted left and
search string was under the cursor.
Add new command "run unixProgram opts"
where program unixProgram is run with opts and stdin
to the program is the current line (or marked region)
and the current line (or marked region) us replaced by
the stdout of unixProgram. The line(s) replaced are stored
in the new "unrun" buffer. To retrieve the old text use the command unrun.
Note unrun does not delete the output from the unixProgram.
A simple example is
run ls
where the current line will be replaced by a listing of the
files in the current directory.