3 things i have learnt about nvi today:

a) There are _number_ buffers that hold the nth last yanked/deleted text (that included newlines): "3p pastes the 3rd most recent thing you deleted (this one applies to vi and is thanks to Learning the Vi Editor by Linda Lamb);
b) nvi faithfully implements a second u undoing the first u, therefore making a 2-cycle undo/redo loop; but, a . after a u undoes older and older edits! (thanks to a random blog post);
c) the :script sh ex command is like emacs subshell-buffers, except without the convenience of editing with emacs bindings. Surreal. (thanks to unearthing ancient pty calls in the source code)

#vi

@drj I've known/used the first two for a long while, but the 3rd one is not only new to me.

The man-page mentions nothing about :script, and the source-code are pretty lacking/opaque in what it does. I can't seem to get it to do anything useful (it seems to take a filename and dump it, then put your shell-prompt in the text?)

What does your book suggest that it's supposed to do?

@gumnos it's not in the book. I am thinking about writing :script up. Somewhere, sometime.
My take on vi nvi undo is that "u" toggles direction (and applies one undo)
And the "." just keeps going in that direction.