It isn't really an "old" version of Nvi by any means - the development went in a different direction. OpenBSD's vi has been developed mostly independently since being imported back in 1997.<p>The documentation has been updated to explain the rationale - see <a href="https://github.com/johnsonjh/OpenVi#why" rel="nofollow">https://github.com/johnsonjh/OpenVi#why</a><p>In the 25 years since the "fork", OpenBSD vi has diverged significantly from Nvi1 (as Nvi2 has diverged from Nvi1 as well).<p>It has grown much smaller and more compact - one might argue more focused.<p>Much of the code has been simplified and many features removed, rather than added. Still, it has adopted features and taken some fixes back from Nvi1/Nvi2 versions and other variants, such as adopting support for expandtab from NetBSD's variant.<p>You can get a good idea of the history of this particular fork by reviewing the ChangeLog at <a href="https://raw.githubusercontent.com/johnsonjh/OpenVi/master/ChangeLog" rel="nofollow">https://raw.githubusercontent.com/johnsonjh/OpenVi/master/Ch...</a> where the OpenBSD changes begin in 1997.
Hi, I'm the "perpetrator" responsible for OpenVi. Apologies to everyone! /s<p>I've added details to the README to hopefully explain why it exists: <a href="https://github.com/johnsonjh/OpenVi#why" rel="nofollow">https://github.com/johnsonjh/OpenVi#why</a><p>The OpenVi ChangeLog at <a href="https://raw.githubusercontent.com/johnsonjh/OpenVi/master/ChangeLog" rel="nofollow">https://raw.githubusercontent.com/johnsonjh/OpenVi/master/Ch...</a> includes all the history going back to 1993's Nvi 0.93. Nvi 1.79 was released in 1996, which is the version OpenBSD's vi was derived from.<p>The ChangeLog entries are only a summary of the full commit messages - the complete details are in OpenBSD's CVS tree, and viewable a bit easier via GitHub (<a href="https://github.com/openbsd/src/commits/master/usr.bin/vi" rel="nofollow">https://github.com/openbsd/src/commits/master/usr.bin/vi</a>)<p>Changes to the (OpenVi bundled) OpenBSD regular expression engine are not included in the legacy ChangeLog, but you can see that development in the CVS tree or via GitHub as well (<a href="https://github.com/openbsd/src/commits/master/lib/libc/regex" rel="nofollow">https://github.com/openbsd/src/commits/master/lib/libc/regex</a>).<p>OpenVi also utilizes the OpenBSD version of Berkely DB (<a href="https://github.com/openbsd/src/commits/master/lib/libc/db" rel="nofollow">https://github.com/openbsd/src/commits/master/lib/libc/db</a>).
If you want to go ultimately minimalist <a href="http://ex-vi.sourceforge.net/" rel="nofollow">http://ex-vi.sourceforge.net/</a> builds and runs on most modern systems just fine.<p>Having learned vi across eight-ish different unices at once my muscle memory is very minimalist so I tend to use ex-vi preferentially, simply because everything else adds features I don't use that I can accidentally activate with a typo and break myself out of flow figuring out wtf just happened.<p>I can absolutely imagine that for somebody who tends to use OpenBSD on their own machines, being able to have the exact same editor elsewhere could be really quite handy for much the same reasons.
I've been using busybox vi as my root editor but it doesn't have secure mode which disables shell access within vi. It looks like OpenVi and nvi2 have them. Are they preferable to busybox vi if I want better security as a root editor?
Why would somebody want to use this over nvi, elvis, or the original BSD vi?<p>(I assume that people who are interested in features already know where to find (Neo)Vim.)
Cleanly doing UTF-8 support (the "right" way) is planned but is certainly non-trivial ... for example, see:<p><a href="https://www.openbsd.org/papers/eurobsdcon2016-utf8.pdf" rel="nofollow">https://www.openbsd.org/papers/eurobsdcon2016-utf8.pdf</a> and <a href="http://www.usenix.org/events/usenix99/full_papers/hagino/hagino.ps" rel="nofollow">http://www.usenix.org/events/usenix99/full_papers/hagino/hag...</a><p>Nvi2 (and Nvi1) are excellent editors, but I wouldn't want to copy the Nvi2 implementation directly. This has been talked about elsewhere*<p>* <a href="https://misc.openbsd.narkive.com/9NHoQv8L/nvi-and-unicode#post4" rel="nofollow">https://misc.openbsd.narkive.com/9NHoQv8L/nvi-and-unicode#po...</a>