Subversion Repositories planix.SVN

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
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>