The 1.8 branch of the Nvi editor, as well as the Nvi2 fork have mulitbyte support.
I could be mistaken but I believe both of these multibyte implementations descend from the late itojun's (http://www.itojun.org/itojun.html) Nvi-m17n project (archived at https://cgit.freebsd.org/ports/tree/editors/nvi-m17n/files). A paper was presented at USENIX99 (http://www.usenix.org/events/usenix99/full_papers/hagino/hag...) describing the work, which was actually developed as part of the KAME project.
Just a decade ago, it was almost a meme that the Emacs and Vi factions fought over which editor is better. I imagine that those that truly bought into the Vi ecosystem/fandom use it in preference to other available options.
The other 1% is Eclipse or VSCode ... and I have VSCode setup to use the embedding functionality of NeoVim.
It is. If it weren't, I would not use this editor.
One point of using BSD is (so the BSD people say) to have an operating system where everything comes from the same team - kernel and userland, unlike Linux where kernel and userland comes from dozens if not hundreds of different origins. But if you start to use arbitrary ports in BSD your OS is not much better than Linux in that regard
For a host I did primary development on, I’d install vim (visual mode and then syntax highlighting was so nice).
But we managed config centrally with idempotent scripts that handled the differences (like no getent on HP-UX). We did have to install ksh88 or a clone everywhere to get a stable consistent shell. GNU was flaky on so many platforms then.
Vi was always there for those WTF scenarios, less as a primary programming editor. And it is so nice on slow connections, where repainting the whole screen for every keystroke sucked.
It really annoyed me when Linuxes dropped the basic vi everywhere in favor of nano. I’d be fine with nano as a default for accessibility, but at least have some vi in my path.
Our standard images include it, but I always forget when I’m testing/debugging locally with Vagrant or a Docker image.
Vi is always a little weird. I don’t think any 2 people use it the same. Everyone has their own go-to set of commands. Pairing with grey beards influenced me so much.
I actually started with emacs in college, but real life with 1,000s of servers forced the change. I don’t have the muscle memory for it anymore and have no desire to go back.
Nowadays my local neovim config is almost VSCode. But I still like VSCode-ish in vi more than vi-ish in VSCode. I tried, but inevitably do something that VSCode’s vim plug-in doesn’t support.
I do use go more and more for complex stuff, but often am forced back to shell due to old kernels still out there which hurts my soul.
Don’t nearly all distros still have something (usually nvi or vim) in /usr/bin/vi out of the box?
For vim, `set compatible` or `set cp` is close, but still not traditional vi by any means.
A multibyte variant of the traditional vi is maintained at https://github.com/n-t-roff/heirloom-ex-vi/.
Nvi (now on version 1.8x) is also maintained - https://repo.or.cz/nvi.git
Nvi2 is yet another fork of Nvi, https://github.com/lichray/nvi2
Despite the very similar names, all of these editors have a variety of different features, and are structured very differently.
Nvi has a concept of a front-end and a back-end (which uses the BDB database). OpenVi uses the OpenBSD version of Berkeley DB which derives from 1.85. Nvi (1.8x) provides a minimal version of code also derived from that release intended from use with Nvi, and (IIRC) also provides support for using Db3/4/5. Similar situation for Nvi2.
Nvi 1.8 has been structured where a third library layer has been added, which doesn't exist in OpenBSD's vi or OpenVi. There is scripting support (Tcl, Perl, etc.) and GUI code in the other various forks ... all of these support various different options as well.
I should probably make a matrix of these, but you can get an idea by looking at the settable options implemented in each of the variants (as they historically include a comment to document from where the option originated):
OpenVi: https://github.com/johnsonjh/OpenVi/blob/22c2a7022e31d91e09e...
OpenBSD vi: https://github.com/openbsd/src/blob/master/usr.bin/vi/common...
Nvi2: https://github.com/lichray/nvi2/blob/5fcdc13656500a8c5b4c073...
Nvi1: https://repo.or.cz/nvi.git/blob/HEAD:/common/options.c#l52
Or maybe Arabic so the characters flow into each other
Improvements are in order, and should be made, but the mere inability to visually render multibyte characters is not always a showstopper.
Or once the Arabic exceeds 50% the alignment of the buffer flips? :)