The U command is missing.  (It should undo all changes to a single line.)

The replace mode is a hack.  It doesn't save the text that it overwrites.

The search commands can only find the first occurrence of the target in a line.
If the line contains more than one occurrence, the second is ignored.  (This
doesn't affect the  :s/target/replacement/g  command, though.)

Long lines are displayed differently -- where the real vi would wrap a long
line onto several rows of the screen, Elvis simply displays part of the line,
and allows you to scroll the screen sideways to see the rest of it.

The ":preserve" and ":recover" commands are missing, as is the -r flag.
I've never had a good reason to use ":preserve", and since use of ":recover"
is so rare, I decided to implement it as a separate program.  There's no
need to load the recovery code into memory every time you edit a file.

LISP support is missing.

The "@" and ":@" commands are missing.

You can't APPEND to a cut buffer.  The following DOES NOT WORK:
	"Ayy
