Nvi
{{short description|Re-implementation of ex/vi}}
{{Other uses|NVI (disambiguation){{!}}NVI}}
{{lowercase}}
{{infobox software
| name = nvi
| screenshot = OpenBSD vi Editor Ruby Hello World.png
| caption = The vi editor in OpenBSD (nvi), editing a small "Hello, world!" type Ruby program
| latest release version = {{wikidata|property|preferred|references|edit|Q556171|P348|P548=Q2804309}}
| latest release date = {{wikidata|qualifier|preferred|single|Q556171|P348|P548=Q2804309|P577}}
| latest preview version = {{wikidata|property|preferred|references|edit|Q556171|P348|P548=Q51930650}}
| latest preview date = {{wikidata|qualifier|preferred|single|Q556171|P348|P548=Q51930650|P577}}
| repo = {{URL|http://repo.or.cz/nvi.git}}
| license = BSD-3-Clause{{cite web|url=http://repo.or.cz/w/nvi.git/commit/ff6492176fd3c47dbc5b3fbf8247adc571f1a63c|title=Update the license: we're going to standard BSD, copyright UC Berkeley|author=Keith Bostic|author-link=Keith Bostic (software engineer)}}
| website = {{URL|https://sites.google.com/a/bostic.com/keithbostic/the-berkeley-vi-editor-home-page}}
}}
nvi (new vi) is a re-implementation of the classic Berkeley text editor, ex/vi, traditionally distributed with BSD and, later, Unix systems. It was originally distributed as part of the Fourth Berkeley Software Distribution (4BSD).
Due to licensing disputes between AT&T and the Computer Systems Research Group (CSRG) at the University of California, Berkeley, the CSRG was required to replace all Unix-derived portions of BSD source with new and unencumbered code. nvi was one of many components rewritten, despite the fact that the original vi was from UC Berkeley. AT&T had a legal claim over the license.
Credits and distribution
nvi was written by Keith Bostic. It is the default vi on all major BSD systems (NetBSD, OpenBSD, and FreeBSD) as well as MINIX.{{cite web|url=http://git.minix3.org/?p=minix.git;a=commit;h=3e1db26a5a6252fcff0898d4cb0c3fa16ccf561d|title=Termcap update, replacing elvis by nvi.|author=Lionel Sambuc}}
It was originally derived from the first incarnation of elvis, written by Steve Kirkendall, as noted in the README file included in nvi's sources.
Sven Verdoolaege added support for Unicode in 2000.{{cite web |archiveurl=https://web.archive.org/web/20010501133542/http://www.kotnet.org/~skimo/nvi/commitlog |url=http://www.kotnet.org/~skimo/nvi/commitlog |archivedate=May 1, 2001 |title=nvi commitlog}} He also has been developing a GTK+ front end for nvi, but this effort seems to have stalled. The aspects of nvi that are still marked preliminary or unimplemented are, for the time being, likely to remain that way.
BSD projects continue to use nvi version 1.79 due to licensing differences between Berkeley Database 1.85 and the later versions by Sleepycat Software. nvi is unusual because it uses a database to store the text as it is being edited. Sven Verdoolaege's changes after version 1.79 use locking features not available in the Berkeley DB 1.85 database. Reportedly, changes to nvi after 1.79 make it less vi-compatible.{{Citation needed|date=August 2007}}
nvi can vary subtly across the BSDs.
nvi is only available on POSIX/Unix platforms due to its reliance on the curses/ncurses library.{{citation |url=http://invisible-island.net/ncurses/ncurses.faq.html#uses_of_library |title=NCURSES – Frequently Asked Questions (FAQ) |section=Types of library users |author=Thomas E. Dickey |accessdate=July 11, 2014}}
An unmaintained, multilingual version by the late Jun-ichiro itojun Hagino is available as nvi-m17n.
{{cite web|url=http://www.usenix.org/events/usenix99/full_papers/hagino/hagino.ps|title=Multilingual vi clones: past, now and the future|author=Jun-ichiro itojun Hagino and Yoshitaka Tokugawa}}{{cite web |url=http://www.securityfocus.com/columnists/459 |title=The Man in the Machine |author=Federico Biancuzzi |publisher=SecurityFocus |date=December 4, 2007 }}
A currently-maintained, multibyte version is available as nvi2, and is the default vi on DragonFly BSD.{{cite web|url=https://github.com/lichray/nvi2|title=nvi2 git repo|author=Zhihao Yuan|website=GitHub |date=17 November 2022 }}
See also
References
{{Reflist}}
External links
- [https://man.openbsd.org/vi.1 the (n)vi man page] via OpenBSD