-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathSUMMARY.LST
660 lines (374 loc) · 24.1 KB
/
SUMMARY.LST
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
Summary of Differences between Vi and Xvi
Chris Downey
John Downey
Xvi (pronounced _e_c_k_s-_v_e_e-_e_y_e) is a free, portable,
multi-window implementation of the popular UNIX|- editor
vi.
This document summarises the differences between the
``real'' vi and xvi. These differences are divided
into three groups: _u_n_i_m_p_l_e_m_e_n_t_e_d _f_e_a_t_u_r_e_s, _d_i_f_f_e_r_e_n_c_e_s
and _e_n_h_a_n_c_e_m_e_n_t_s, and each of these is described in the
following sections.
_1. _U_n_i_m_p_l_e_m_e_n_t_e_d _F_e_a_t_u_r_e_s
_1._1. _E_x _M_o_d_e
The main area in which xvi is lacking is vi's _e_x mode, which is
not implemented at all (and neither are edit, e, and open modes).
However, many of the ex commands are available in xvi as colon
commands; the colon commands that have not been implemented are
mostly those which offer the same functionality as other commands
in vi mode.
Specifically, the following ex commands are not implemented, and
probably never will be within xvi:
_i_n_s_e_r_t _u_n_d_o _e_x
_c_h_a_n_g_e _o_p_e_n |
_a_p_p_e_n_d _z
while these ex commands, although not currently implemented, may
be added as colon commands at some time in the future:
_a_b_b_r_e_v_i_a_t_e _r_e_c_o_v_e_r _w_r_i_t_e>>
_u_n_a_b_b_r_e_v_i_a_t_e _j_o_i_n
_________________________
|- UNIX is a trademark of Bell Laboratories.
_2_5_t_h _S_e_p_t_e_m_b_e_r _1_9_9_2 _P_a_g_e _1
_2 _S_u_m_m_a_r_y _o_f _D_i_f_f_e_r_e_n_c_e_s _b_e_t_w_e_e_n _V_i _a_n_d _X_v_i
_1._2. _V_i _c_o_m_m_a_n_d_s
The following vi mode commands are not implemented, although
there is no real reason why they shouldn't be:
_U =
while this one is inappropriate in the context of xvi, since
there is no _e_x mode:
_Q
_1._3. _P_a_r_a_m_e_t_e_r_s
The following parameters have not been implemented, and probably
won't be:
_a_d_a _l_i_s_p _r_e_d_r_a_w
_a_d_a_p_a_t_h _m_e_s_g _s_l_o_w_o_p_e_n
_a_u_t_o_p_r_i_n_t _m_o_d_e_l_i_n_e _t_e_r_m
_b_e_a_u_t_i_f_y _o_p_e_n _t_e_r_s_e
_d_i_r_e_c_t_o_r_y _o_p_t_i_m_i_z_e _t_t_y_t_y_p_e
_e_d_c_o_m_p_a_t_i_b_l_e _p_r_o_m_p_t _w_i_n_d_o_w
_h_a_r_d_t_a_b_s
while these parameters may well be implemented at some point:
_a_u_t_o_w_r_i_t_e _s_c_r_o_l_l _w_a_r_n
_e_r_r_o_r_b_e_l_l_s _s_o_u_r_c_e_a_n_y _w_r_i_t_e_a_n_y
_1._4. _M_i_s_c_e_l_l_a_n_e_o_u_s
Some features of certain commands do not work as they should.
Specifically:
o+ Repeat counts before insertions don't work.
o+ Appending to named buffers is not yet implemented.
o+ Typing ^Q in input mode does not mean the same as ^V; it
just inserts a `^Q', assuming it gets as far as the editor
at all.
o+ Typing ^W in insert mode does not back up one word as in vi.
o+ It is not possible to interrupt the editor while it is
performing certain operations. If you start off a big
global command, you have to wait for it to finish.
o+ Flags and counts after colon commands are not supported.
_P_a_g_e _2 _2_5_t_h _S_e_p_t_e_m_b_e_r _1_9_9_2
_S_u_m_m_a_r_y _o_f _D_i_f_f_e_r_e_n_c_e_s _b_e_t_w_e_e_n _V_i _a_n_d _X_v_i _3
o+ It is not possible to read the output of a system command
using
:r !_c_o_m_m_a_n_d
or to write into a command using
:w !_c_o_m_m_a_n_d
o+ The :substitute command does not support splitting of lines.
o+ Regular expressions, although implemented (see later for
more details), do not support the ~ character; also, the \u
and \l escape sequences are not supported on the right-hand
side of a substitute replacement pattern.
o+ The :global command only supports the commands [lps&~d].
o+ Undo does not work properly when applied to macros (either @
or :map); it should undo all the changes made by the macro,
but in fact only the last command within the macro is
undone.
_2. _E_n_h_a_n_c_e_m_e_n_t_s
The following extensions are available in xvi.
_2._1. _P_a_r_a_m_e_t_e_r _H_a_n_d_l_i_n_g
Xvi supports 5 types of parameter: as well as vi's _n_u_m_e_r_i_c,
_s_t_r_i_n_g and _b_o_o_l_e_a_n, it also has _e_n_u_m_e_r_a_t_e_d and _l_i_s_t types. The
former is used for e.g. format and regextype, while the latter is
currently only used for tags. The advantage of the _e_n_u_m_e_r_a_t_e_d
type is that if you try to set an illegal value, the set of
correct values will be displayed, which is very useful if you
have forgotten what the values may be. (Try :set preserve to see
an example of this.)
_2._2. _W_i_n_d_o_w_s
Xvi supports multiple _b_u_f_f_e_r_s and _w_i_n_d_o_w_s. A _b_u_f_f_e_r is the
object which holds a file in memory, while a _w_i_n_d_o_w is an area of
the screen which shows part of a buffer. Note that every window
references a buffer, even if no file is being edited.
The following commands are available for operating on buffers and
windows:
:buffer create a new buffer in a new window; can be followed by
a filename, which will be edited in the new buffer.
:split create a new window onto the current buffer by
splitting the current window in half. The two
_2_5_t_h _S_e_p_t_e_m_b_e_r _1_9_9_2 _P_a_g_e _3
_4 _S_u_m_m_a_r_y _o_f _D_i_f_f_e_r_e_n_c_e_s _b_e_t_w_e_e_n _V_i _a_n_d _X_v_i
resulting windows are similar to _v_i_e_w_p_o_r_t_s on to a
single editing buffer, in that changes made in one
window are reflected in the other one.
:close close the current window; will also close the buffer if
this is the last window onto it.
:x / ZZ close only the current window. If the window is the
only one onto the buffer, the buffer will be closed as
well, writing it first if it is modified. Hence, for a
single window, this command does the same as in vi.
g move to the next window. This is normally the window
directly below the current one on the screen, or the
top window on the screen if the current window is the
bottom one.
^W increase the size of the current window (may be given a
numeric prefix, default is one line).
^T decrease the size of the current window (may be given a
numeric prefix, default is one line).
^O make the current window as large as possible.
^] as for vi, but creates a new buffer window if
appropriate (and if autosplit allows).
Note that the :quit command quits out of the editor, not out of a
window. The :close command is thus the equivalent of :quit for
windows. There is no equivalent of :x or ZZ for the whole
editor; these have been hijacked for operations on windows.
Also the numeric autosplit parameter specifies the maximum number
of buffer windows that will be created automatically whenever you
either edit more than one file, or use tags to edit a different
file.
Undo works per buffer, as do marks; yank/put and redo (the .
command) work over all buffers, i.e. you can delete from one
buffer and put the text into a different buffer.
The minrows parameter specifies the minimum number of rows to
which a window may be shrunk, including the status line. The
default value is 2; 0 and 1 may also be useful.
_2._3. _N_a_m_e_d _B_u_f_f_e_r_s
As well as the normal named (conjugate) buffers, and the default
one named @, several extra buffers named :, /, ? and ! contain
the last command lines entered for each of the command types. So
for instance, @: will re-execute the last colon command, or you
can insert it into your buffer, edit it and then re-execute it
(e.g. with _d_d@@).
_P_a_g_e _4 _2_5_t_h _S_e_p_t_e_m_b_e_r _1_9_9_2
_S_u_m_m_a_r_y _o_f _D_i_f_f_e_r_e_n_c_e_s _b_e_t_w_e_e_n _V_i _a_n_d _X_v_i _5
_2._4. _F_i_l_e _F_o_r_m_a_t_s
Xvi will handle different file formats, via the format parameter,
which may be set to e.g. "unix", "msdos", etc. This means you
can edit MS-DOS files under UNIX, etc.
_2._5. _R_e_g_u_l_a_r _E_x_p_r_e_s_s_i_o_n_s
Vi's magic parameter is replaced by the regextype parameter,
which can take the following values:
tags only ^ and $ are significant (used for tags).
grep like _g_r_e_p(1), but with _\< and _\> added.
egrep like _e_g_r_e_p(1), but with _\< and _\> added.
The default is _g_r_e_p.
The sections and paragraphs parameters define _e_g_r_e_p-style
patterns to search for, rather than _v_i's simplistic (and _t_r_o_f_f-
dependent) character pairs.
The sentences parameter is also implemented in this fashion, but
this is not completely satisfactory at the moment.
Note that it is possible to set or unset the magic parameter as
in vi; this will simply result in the regextype parameter being
set as appropriate.
_2._6. _C_o_l_o_u_r
Xvi has a minimal amount of support for colours. Basically,
there are considered to be four settable colours, each with a
numeric parameter to say what its value is:
colour colour used for text
statuscolour colour used for status lines
roscolour as statuscolour, but for readonly files
systemcolour colour used for system mode (i.e. subshells and
after termination).
The actual values of these parameters are system-dependent; on PC
versions, they are hardware-dependent video attributes, while on
UNIX they are indexes into the entries ``c0'' to ``c9'' in the
_t_e_r_m_c_a_p(5) database, which are assumed to be colour-setting
escape sequences if they are present. If they are not present,
"so" (begin standout mode) and "se" (end standout mode) are used
instead. Values of 0 and 1 give normal text, 2 to 9 give
standout mode.
_2_5_t_h _S_e_p_t_e_m_b_e_r _1_9_9_2 _P_a_g_e _5
_6 _S_u_m_m_a_r_y _o_f _D_i_f_f_e_r_e_n_c_e_s _b_e_t_w_e_e_n _V_i _a_n_d _X_v_i
The default colour for the roscolour parameter will usually
involve red if colours are available; this is intended to provide
a warning to the user that writing the file may not be possible.
The colour values may be entered in decimal, octal or hexadecimal
form. This may be convenient for PC versions where the numbers
actually represent colour bitmaps; for example, on MS-DOS,
:_s_e_t _c_o=_0_x_1_f
gives bright white text on a blue background.
_2._7. _R_e_p_l_a_c_e _M_o_d_e
Xvi's _r_e_p_l_a_c_e mode (entered by the R command) acts more
intelligently when you press the return key - it leaves the rest
of the current line alone, and just starts replacing text on the
next line, starting at the screen column where you first typed R.
_2._8. _P_r_e_s_e_r_v_e
Rather than use vi's UNIX-specific method for preservation, xvi
does periodic preservation of all files currently being edited
into a temporary file in the same directory. Xvi tries to do
this when you are not typing, so that you won't notice the short
delay when the temporary file is written out. Obviously, only
changed files are preserved in this way, and the temporary file
is normally removed once the real file has been successfully
written. As an additional safety measure, when a file is
explicitly saved and it appears not to have been preserved
recently, it is normally preserved first. This ensures that,
even if the operating system crashes while the real file is being
created, there should always be at least one recent copy of it in
the filesystem. The :preserve command is available as in vi to
preserve a specific buffer manually.
The level of safety provided by the preservation facility may be
configured by changing the values of the _p_r_e_s_e_r_v_e and
_p_r_e_s_e_r_v_e_t_i_m_e parameters. The following values are available for
_p_r_e_s_e_r_v_e:
unsafe Never preserve any buffer before an explicit save.
This can be useful on old, slow, floppy-only systems,
but is not generally recommended.
standard The default value. Only preserve a buffer before an
explicit save if it appears not to have been preserved
recently.
safe Always preserve buffers before they are written.
paranoid As for safe, but the preserve file is never removed,
even after the file has been successfully written.
In all cases, all modified buffers are preserved automatically
_P_a_g_e _6 _2_5_t_h _S_e_p_t_e_m_b_e_r _1_9_9_2
_S_u_m_m_a_r_y _o_f _D_i_f_f_e_r_e_n_c_e_s _b_e_t_w_e_e_n _V_i _a_n_d _X_v_i _7
after no user events have been received for _p_r_e_s_e_r_v_e_t_i_m_e seconds,
if a minimum number of events (currently 60) have been received
since the last automatic preservation. This behaviour can be
more or less disabled by setting _p_r_e_s_e_r_v_e_t_i_m_e to a very high
value. (For example, one of the authors sets it to 600 on the
machine he uses at home, which is an 8088-based PC with no hard
disk; by way of contrast, on the SparcStation IPX which he uses
at work, he sets it to 2.)
The names given to preserve files are system-dependent, but are
generally of the form "_f_i_l_e_n_a_m_e.tmp", or "_f_i_l_e_n_a_m_e.001" to
"_f_i_l_e_n_a_m_e.999". If a preserve file already exists, it will not
be overwritten; instead, a new filename will be generated.
The -r command line option is not supported.
_2._9. _H_e_l_p
A primitive help facility is available; the command :help, also
mapped to the HELP or F1 keys on many systems, simply creates a
new buffer window onto a standard help file. The name of the
file which is edited is given by the helpfile string parameter;
the default on Unix versions is "/usr/lib/xvi.help".
_2._1_0. _S_c_r_o_l_l_i_n_g
The _j_u_m_p_s_c_r_o_l_l enumerated parameter controls the editor's
behaviour when the cursor moves beyond the limits of the current
window. If its value is _o_f_f, and the new position is still
reasonably close to the current window, the window will be
scrolled so that the new cursor position is at the top or bottom
of it. Typically, the window will be scrolled one line at a time
as the cursor is moved up or down. This behaviour may not always
be desirable; for example, terminals without real scrolling
regions may force the editor to do a lot of screen updating,
possibly over a slow telephone line or overloaded network. Also,
on LCD screens or other displays with a long image persistence,
it may make the text more difficult to read. If _j_u_m_p_s_c_r_o_l_l is
set to _o_n, scrolling behaviour is modified so that, whenever the
cursor moves beyond the limits of the current window, the window
is redrawn so as to place the cursor as centrally as possible in
it; thus, the window appears to _j_u_m_p to the new position. The
default value for _j_u_m_p_s_c_r_o_l_l is auto, which causes the editor to
jump instead of scrolling only if it can't scroll the affected
window efficiently.
In all cases, if the distance from the top or bottom of the
window to the new position is more than half the window size, the
editor will jump instead of scrolling.
Explicit scroll commands (e.g. ^D) are not affected by the
jumpscroll parameter.
_2_5_t_h _S_e_p_t_e_m_b_e_r _1_9_9_2 _P_a_g_e _7
_8 _S_u_m_m_a_r_y _o_f _D_i_f_f_e_r_e_n_c_e_s _b_e_t_w_e_e_n _V_i _a_n_d _X_v_i
_2._1_1. _8-_b_i_t _C_h_a_r_a_c_t_e_r_s
Characters with the top bit set may be displayed, although it is
not yet possible to have null ('\0') bytes in a file buffer. How
the characters are displayed varies between systems; on UNIX,
they will be shown as an octal escape sequence, while on MS-DOS,
OS/2 and QNX they will be shown as the actual character in the PC
character set. This can be controlled by setting the cchars and
mchars variables; if these parameters are set, control- and
meta-characters (respectively) are shown directly, otherwise they
are shown as some sequence of printable characters.
You can use the ^_ (control-underscore) command to flip the top
bit of the character the cursor is on. This may be useful on
systems where it is otherwise impossible to enter 8-bit
characters.
Tabs are normally displayed as a series of spaces of the
appropriate length (according to the tabstops parameter); setting
list mode will cause them to be displayed as a control character,
as will unsetting the tabs parameter. How the tab character is
displayed is then under the control of the cchars parameter.
_2._1_2. _M_o_u_s_e _S_u_p_p_o_r_t
Some mouse support is available for micro-based systems and
workstations. Clicking the mouse button on:
any line outside current window
changes current window to the one indicated by the mouse
(can be used instead of g).
top line of any window
scrolls window downwards (same as ^Y).
bottom line of any window
scrolls window upwards (same as ^E).
status line of any window
shows current file and lines (same as ^G).
any text line of any window
moves text cursor as near as possible to mouse cursor.
Also, windows can be resized by "dragging" the appropriate status
line up or down with the mouse.
_2._1_3. _M_i_s_c_e_l_l_a_n_e_o_u_s
o+ The :wn (write file and edit next) command is provided, as
per PC-vi.
o+ There is no limit to the number or size of maps which may be
defined, nor is there any fixed limit to the number of lines
_P_a_g_e _8 _2_5_t_h _S_e_p_t_e_m_b_e_r _1_9_9_2
_S_u_m_m_a_r_y _o_f _D_i_f_f_e_r_e_n_c_e_s _b_e_t_w_e_e_n _V_i _a_n_d _X_v_i _9
in a buffer.
o+ The edit parameter controls whether a buffer can be
modified. This may be used, together with the _r_e_a_d_o_n_l_y
parameter, to implement a nicer version of _v_i_e_w(1) than vi's
version, since it won't fool you into thinking that editing
the buffer is in any way safe. Be warned: once having set
noedit, it is not possible to do a :set edit. It's a one-
way street.
o+ The timeout parameter is implemented as a numeric value,
specifying the number of milliseconds after which to assume
that no further input is available to continue with the
parsing of a map sequence. This replaces vi's boolean
parameter of the same name.
o+ The vbell parameter may be used to specify use of a visual,
rather than audible, bell, if this is available.
o+ The :echo command is available; it simply echoes its
arguments, after expansion of % and # characters.
o+ In insert and replace modes, ^_A has the same meaning as ^@
in vi, except that it works at any time, not just for the
first character. Also, typing ^B_x, where _x is the name of a
conjugate buffer, inserts the contents of that buffer into
the input stream at that point. The buffer named < always
contains the last thing inserted, so that ^_B< is the same as
^_A.
_3. _D_i_f_f_e_r_e_n_c_e_s
o+ Argument handling is somewhat different; for instance, -_R is
not supported, but "-s parameter=value" is, which is much
more useful anyway.
o+ The _X_V_I_N_I_T environment variable is read instead of _E_X_I_N_I_T.
Whilst no files are sourced automatically, users who wish to
have a startup file can arrange it very easily. _s_h(1) or
_k_s_h(1) users should add this line to their $_H_O_M_E/._p_r_o_f_i_l_e:
_X_V_I_N_I_T='_s_o_u_r_c_e _x_v_i-_s_t_a_r_t_u_p-_f_i_l_e'; _e_x_p_o_r_t _X_V_I_N_I_T
_c_s_h(1) users should add this to their $_H_O_M_E/._l_o_g_i_n:
_s_e_t_e_n_v _X_V_I_N_I_T '_s_o_u_r_c_e _x_v_i-_s_t_a_r_t_u_p-_f_i_l_e'
and MS-DOS users should add this to their _a_u_t_o_e_x_e_c._b_a_t:
_s_e_t _X_V_I_N_I_T=_s_o_u_r_c_e _x_v_i-_s_t_a_r_t_u_p-_f_i_l_e
o+ The tags parameter can be used to specify multiple tags
files; these can be separated by either "\ " (backslash
space) or "," (comma).
_2_5_t_h _S_e_p_t_e_m_b_e_r _1_9_9_2 _P_a_g_e _9
_1_0 _S_u_m_m_a_r_y _o_f _D_i_f_f_e_r_e_n_c_e_s _b_e_t_w_e_e_n _V_i _a_n_d _X_v_i
o+ Alternate files are handled slightly differently, owing to
the presence of buffer and window handling. Essentially,
when you close a buffer, its filename is remembered as the
alternate file; when you invoke the ^^ or :e # commands,
this filename is re-edited. Note that ^^ edits the
alternate file in a new buffer window.
o+ Hitting the escape key while in the command line does not
terminate input; instead, it cancels input, returning the
prompt to the beginning of the line. This applies to input
for :, /, ? and !.
o+ Character-based yanks (or deletes) which span line
boundaries are handled correctly (vi gets this wrong).
_P_a_g_e _1_0 _2_5_t_h _S_e_p_t_e_m_b_e_r _1_9_9_2