Введение

Реализация ex/vi

nvi (new vi) – это переосмысление классического текстового редактора Berkeley, ex/vi, который традиционно распространялся с BSD и, позднее, Unix-системами. Изначально он был включен в состав Четвертого дистрибутива программного обеспечения Беркли (4BSD). В связи с лицензионными спорами между AT&T и исследовательской группой компьютерных систем (CSRG) Калифорнийского университета в Беркли, CSRG была вынуждена заменить все части исходного кода BSD, происходящие от Unix, новым и свободным от ограничений кодом. nvi стал одним из многих компонентов, которые были переписаны, несмотря на то, что оригинальный vi был разработан в UC Berkeley. AT&T имела юридические права на лицензию.

Кредиты и распространение

Nvi был написан Китом Бостиком. Это стандартный редактор vi во всех основных BSD-системах (NetBSD, OpenBSD и FreeBSD), а также в MINIX. Изначально он был создан на основе первой версии elvis, написанной Стивом Киркендаллом, как указано в файле README, включенном в исходный код nvi. Свен Вердолаге добавил поддержку Unicode в 2000 году. Он также разрабатывал GTK+-интерфейс для nvi, но эта работа, по-видимому, приостановлена. Функции nvi, которые до сих пор помечены как предварительные или нереализованные, скорее всего, останутся таковыми в ближайшем будущем. Проекты BSD продолжают использовать версию nvi 1.79 из-за различий в лицензиях между Berkeley Database 1.85 и более поздними версиями от Sleepycat Software. Nvi необычен тем, что использует базу данных для хранения редактируемого текста. Изменения Свена Вердолаге после версии 1.79 используют механизмы блокировки, недоступные в базе данных Berkeley DB 1.85. Сообщается, что изменения в nvi после версии 1.79 снижают его совместимость с vi. Nvi может незначительно отличаться в разных BSD-системах. Nvi доступен только на платформах POSIX/Unix из-за зависимости от библиотек curses/ncurses. Неподдерживаемая многоязычная версия, созданная покойным Джун Итиро Хагино (Itojun), доступна как nvi m17n. В настоящее время поддерживаемая многобайтовая версия доступна как nvi2 и является редактором vi по умолчанию в DragonFly BSD.