ex-vi/README

108 lines
3.9 KiB
Plaintext

Welcome to the ex/vi port!
==========================
This implementation is derived from ex/vi 3.7 of 6/7/85 and the BSD
termcap library, originally from the 2.11BSD distribution. All of them
were changed to compile and run on newer POSIX compatible Unix systems.
Support for international character sets was added, including support
for multibyte locales (in particular UTF-8), and some changes were made
to get closer to the POSIX.2 guidelines for ex and vi. Some issues that
were clearly bugs and not features have also been resolved; the the
Changes file for details.
New releases are announced on Fresmeat. If you want to get
notified by email on each release, use their subscription service at
<http://freshmeat.net/projects/vi/>.
The project homepage is currently at <http://ex-vi.sourceforge.net>.
How to build
============
First look at the Makefile and change the settings there to match your
build environment. Explanations are provided directly in this file.
You can tune the sizes of some internal buffers by editing config.h. In
particular, you will have to raise the size of the 'TUBE' constants if
you wish to use really large-sized terminals.
Then type 'make' and 'make install'.
It is possible to build a RPM file directly from the source distribution
by executing
rpmbuild -tb ex-<version>.tar.bz2
Note that the RPM spec installs the binary in /usr/5bin by default to
avoid conflicts with vendor files in /usr/bin. The default locations
match those of the Heirloom Toolchest <http://heirloom.sourceforge.net>.
The following systems have been reported to compile this code:
Linux Kernel 2.0 and above; libc4, libc5, glibc 2.2 and above,
diet libc, uClibc; gcc, Intel C
Sun Solaris 2.5.1 and above
Open UNIX 8.0.0
UnixWare 7.1.1, 7.0.1, 2.1.2
HP HP-UX B.11.23, B.11.11, B.11.00, B.10.20
HP Tru64 UNIX 4.0G, 5.1B
IBM AIX 5.1, 4.3
NEC SUPER-UX 10.2
NEC UX/4800 Release11.5 Rev.A
FreeBSD 3.1, 4.5, 5.x
NetBSD 1.6
Reports about other Unix systems are welcome, whether successful or not
(in the latter case add a detailed description). This port of vi is only
aimed at Unix, though, so I am not interested about results from running
this software on Windows etc.
Prerequisites for ports to other systems are:
- The system must provide an ANSI C-89 compiler and POSIX.1-1990 functions.
- The system must provide an sbrk() call to increase the memory heap size.
If only a fake sbrk() call is provided that works by pre-allocating
several MB, vi will probably work too.
- The system library must allow replacement of malloc() and printf() by the
versions provided by vi. For malloc(), it also must make its own internal
memory requests using the vi malloc(). Otherwise, vi will likely die with
a segmentation fault because the storage allocated by sbrk() interferes
with usual Unix library implementations of malloc().
The last two requirements could probably be eliminated with some effort, but
it would not result in any real improvements for usual the Unix platforms vi
is targeted at, so it has not be done yet.
Multibyte locale support
========================
Support for multibyte locales has been added to vi. It requires a number of
functions that, while specified in XPG6, are not present on all systems that
provide basic multibyte support. In particular, vi needs wcwidth() to
determine the visual width of a character, and mbrtowc() to detect when a
byte sequence that is entered at the terminal has been completed.
The multibyte code is known to work with UTF-8 locales on the following
systems:
Linux glibc 2.3.3
Sun Solaris 10
FreeBSD 5.3
It has been tested with xterm patch #192 and rxvt-unicode 4.2.
To use UTF-8 locales in ex mode, the terminal must be put in 'stty iutf8'
mode on Linux if it does not perform this automatically. Otherwise, typing
the erase key once after entering a multibyte character will result in an
incomplete byte sequence.
Gunnar Ritter 12/2/04
Freiburg i. Br.
Germany
<Gunnar.Ritter@pluto.uni-freiburg.de>