- nvi
-
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 (see USL v. BSDi), the CSRG was required to replace all Unix-derived portions of BSD source with new and unencumbered code. nvi was one of many components to be re-written despite the fact that the original vi was from UC Berkeley. AT&T had a legal claim over the license. nvi turned out to be a major improvement over the classical vi as discussed below.
Contents
Features
Usually referred to as a vi-clone, nvi contains a number of features not present in the original program. These include:
- 8-bit clean data, lines and files limited by available memory
- Multiple edit buffers
- Colon command-line editing and path name completion
- Tag stacks
- Cscope support
- Extended Regular Expressions
- Infinite undo
- Horizontal scrolling
- Message catalogs (Dutch, English, French, German, Russian, Spanish, Swedish)
- Preliminary support for Perl and Tcl/Tk scripting languages
Features that are not present in version 1.79 (which are in the original program) include:
- lisp mode
- modelines
- open mode
Credits and distribution
nvi was written by Keith Bostic, and currently seems to be frozen at version 1.79. It is the default vi on all BSD systems (NetBSD, OpenBSD, and FreeBSD).
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. 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 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 1.85 database.
There are also reportedly changes to nvi after 1.79 which make nvi less vi-compatible[citation needed].
Due to the liberal policy of the BSD license, nvi can vary subtly across the BSDs.
As with the original vi, nvi is only executable on POSIX/Unix platforms due to its reliance on the curses/ncurses library.
A multilingual version is available as nvi-m17n by Jun-ichiro itojun Hagino.[1] [2]
See also
References
- ^ Mike Fabian. "(CJK) Support in SuSE Linux". http://www.suse.de/~mfabian/suse-cjk/nvi-m17n.html.
- ^ Jun-ichiro itojun Hagino and Yoshitaka Tokugawa. "Multilingual vi clones: past, now and the future". http://www.usenix.org/events/usenix99/full_papers/hagino/hagino.ps.
External links
Categories:- Free text editors
- Unix text editors
- Curses (programming library)
Wikimedia Foundation. 2010.