99 |
7u83 |
1 |
Welcome to the ex/vi port!
|
|
|
2 |
==========================
|
|
|
3 |
|
|
|
4 |
This implementation is derived from ex/vi 3.7 of 6/7/85 and the BSD
|
|
|
5 |
termcap library, originally from the 2.11BSD distribution. All of them
|
|
|
6 |
were changed to compile and run on newer POSIX compatible Unix systems.
|
|
|
7 |
Support for international character sets was added, including support
|
|
|
8 |
for multibyte locales (based on UTF-8 or East Asian encodings), and some
|
|
|
9 |
changes were made to get closer to the POSIX.2 guidelines for ex and
|
|
|
10 |
vi. Some issues that were clearly bugs and not features have also been
|
|
|
11 |
resolved; see the Changes file for details.
|
|
|
12 |
|
|
|
13 |
New releases are announced on Freshmeat. If you want to get
|
|
|
14 |
notified by email on each release, use their subscription service at
|
|
|
15 |
<http://freshmeat.net/projects/vi/>.
|
|
|
16 |
|
|
|
17 |
The project homepage is currently at <http://ex-vi.sourceforge.net>.
|
|
|
18 |
|
|
|
19 |
|
|
|
20 |
How to build
|
|
|
21 |
============
|
|
|
22 |
|
|
|
23 |
First look at the Makefile and change the settings there to match your
|
|
|
24 |
build environment. Explanations are provided directly in this file.
|
|
|
25 |
|
|
|
26 |
You can tune the sizes of some internal buffers by editing config.h. In
|
|
|
27 |
particular, you will have to raise the size of the 'TUBE' constants if
|
|
|
28 |
you wish to use really large-sized terminals.
|
|
|
29 |
|
|
|
30 |
Then type 'make' and 'make install'.
|
|
|
31 |
|
|
|
32 |
It is possible to build a RPM file directly from the source distribution
|
|
|
33 |
by executing
|
|
|
34 |
|
|
|
35 |
rpmbuild -tb ex-<version>.tar.bz2
|
|
|
36 |
|
|
|
37 |
Note that the RPM spec installs the binary in /usr/5bin by default to
|
|
|
38 |
avoid conflicts with vendor files in /usr/bin. The default locations
|
|
|
39 |
match those of the Heirloom Toolchest <http://heirloom.sourceforge.net>.
|
|
|
40 |
|
|
|
41 |
The following systems have been reported to compile this code:
|
|
|
42 |
|
|
|
43 |
Linux Kernel 2.0 and above; libc4, libc5, glibc 2.2 and above,
|
|
|
44 |
diet libc, uClibc
|
|
|
45 |
Sun Solaris 2.5.1 and above
|
|
|
46 |
Caldera Open UNIX 8.0.0
|
|
|
47 |
SCO UnixWare 7.1.1, 7.0.1, 2.1.2
|
|
|
48 |
HP HP-UX B.11.23, B.11.11, B.11.00, B.10.20
|
|
|
49 |
HP Tru64 UNIX 4.0G, 5.1B
|
|
|
50 |
IBM AIX 5.1, 4.3
|
|
|
51 |
NEC SUPER-UX 10.2
|
|
|
52 |
NEC UX/4800 Release11.5 Rev.A
|
|
|
53 |
Control Data EP/IX 2.2.1AA
|
|
|
54 |
FreeBSD 3.1, 4.5, 5.x
|
|
|
55 |
NetBSD 1.6, 2.0
|
|
|
56 |
|
|
|
57 |
Reports about other Unix systems are welcome, whether successful or not
|
|
|
58 |
(in the latter case add a detailed description). This port of vi is only
|
|
|
59 |
aimed at Unix, though, so I am not interested about results from running
|
|
|
60 |
this software on Windows etc.
|
|
|
61 |
|
|
|
62 |
Prerequisites for ports to other systems are:
|
|
|
63 |
|
|
|
64 |
- The system must provide an ANSI C-89 compiler and POSIX.1-1990 functions.
|
|
|
65 |
|
|
|
66 |
- The system must provide an sbrk() call to increase the memory heap size.
|
|
|
67 |
If only a fake sbrk() call is provided that works by pre-allocating
|
|
|
68 |
several MB, vi will probably work too.
|
|
|
69 |
|
|
|
70 |
- The system library must allow replacement of malloc() and printf() by the
|
|
|
71 |
versions provided by vi. For malloc(), it also must make its own internal
|
|
|
72 |
memory requests using the vi malloc(). Otherwise, vi will likely die with
|
|
|
73 |
a segmentation fault because the storage allocated by sbrk() interferes
|
|
|
74 |
with usual Unix library implementations of malloc().
|
|
|
75 |
|
|
|
76 |
The last two requirements could probably be eliminated with some effort, but
|
|
|
77 |
it would not result in any real improvements for usual the Unix platforms vi
|
|
|
78 |
is targeted at, so it has not be done yet.
|
|
|
79 |
|
|
|
80 |
|
|
|
81 |
Terminal capabilities
|
|
|
82 |
=====================
|
|
|
83 |
|
|
|
84 |
vi normally uses the termcap library to gather information about the
|
|
|
85 |
capabilities of the terminal it is using. A BSD-derived termcap library
|
|
|
86 |
is included with the vi distribution, and is usually the preferred choice.
|
|
|
87 |
On some platforms, though, either no /etc/termcap file exists, or the file
|
|
|
88 |
lacks up-to-date entries. In these cases, two workarounds are possible.
|
|
|
89 |
First, vi can be linked against libcurses, libncurses, or libtermcap, if
|
|
|
90 |
these provide access to a proper terminal information database. Second, it
|
|
|
91 |
is possible to use the included termcap library with a TERMCAP environment
|
|
|
92 |
variable that contains a complete termcap entry. Most terminals in current
|
|
|
93 |
use provide a superset of DEC VT102 capabilities, so the following will
|
|
|
94 |
normally work:
|
|
|
95 |
|
|
|
96 |
TERMCAP="vt102|$TERM|dec vt102:"'\
|
|
|
97 |
:do=^J:co#80:li#24:cl=50\E[;H\E[2J:\
|
|
|
98 |
:le=^H:bs:cm=5\E[%i%d;%dH:nd=2\E[C:up=2\E[A:\
|
|
|
99 |
:ce=3\E[K:cd=50\E[J:so=2\E[7m:se=2\E[m:us=2\E[4m:ue=2\E[m:\
|
|
|
100 |
:md=2\E[1m:mr=2\E[7m:mb=2\E[5m:me=2\E[m:is=\E[1;24r\E[24;1H:\
|
|
|
101 |
:rs=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h:ks=\E[?1h\E=:ke=\E[?1l\E>:\
|
|
|
102 |
:ku=\EOA:kd=\EOB:kr=\EOC:kl=\EOD:kb=^H:\
|
|
|
103 |
:ho=\E[H:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:pt:sr=5\EM:vt#3:\
|
|
|
104 |
:sc=\E7:rc=\E8:cs=\E[%i%d;%dr:vs=\E[?7l:ve=\E[?7h:\
|
|
|
105 |
:mi:al=\E[L:dc=\E[P:dl=\E[M:ei=\E[4l:im=\E[4h:'
|
|
|
106 |
export TERMCAP
|
|
|
107 |
|
|
|
108 |
|
|
|
109 |
Multibyte locale support
|
|
|
110 |
========================
|
|
|
111 |
|
|
|
112 |
Support for multibyte locales has been added to vi. It requires a number of
|
|
|
113 |
functions that, while specified in XPG6, are not present on all systems that
|
|
|
114 |
provide basic multibyte support. In particular, vi needs wcwidth() to
|
|
|
115 |
determine the visual width of a character, and mbrtowc() to detect when a
|
|
|
116 |
byte sequence that is entered at the terminal has been completed.
|
|
|
117 |
|
|
|
118 |
The multibyte code is known to work on the following systems:
|
|
|
119 |
|
|
|
120 |
Linux glibc 2.2.2 and later
|
|
|
121 |
Sun Solaris 9 and later
|
|
|
122 |
HP HP-UX B.11.11 and later
|
|
|
123 |
FreeBSD 5.3
|
|
|
124 |
NetBSD 2.0
|
|
|
125 |
|
|
|
126 |
It has been tested on xterm patch #192, rxvt-unicode 4.2, mlterm 2.9.1, and
|
|
|
127 |
xiterm 0.5.
|
|
|
128 |
|
|
|
129 |
Successful operation is known for the following encodings: UTF-8, EUC-JP,
|
|
|
130 |
EUC-KR, Big5, Big5-HKSCS, GB 2312, GBK. vi does not support locking-shift
|
|
|
131 |
encodings like those that use ISO 2022 escape sequences. It also requires
|
|
|
132 |
that the first byte of any multibyte character has the highest bit set.
|
|
|
133 |
This excludes 7-bit encodings like UTF-7, and encodings whose sequences
|
|
|
134 |
start with ASCII characters like TCVN 5712.
|
|
|
135 |
|
|
|
136 |
To use UTF-8 locales in ex mode, the terminal should be put in 'stty iutf8'
|
|
|
137 |
mode on Linux if it does not perform this automatically. Otherwise, typing
|
|
|
138 |
the erase key once after entering a multibyte character will result in an
|
|
|
139 |
incomplete byte sequence.
|
|
|
140 |
|
|
|
141 |
|
|
|
142 |
Gunnar Ritter 2/20/05
|
|
|
143 |
Freiburg i. Br.
|
|
|
144 |
Germany
|
|
|
145 |
<Gunnar.Ritter@pluto.uni-freiburg.de>
|