1 .\"
2 .\" Sun Microsystems, Inc. gratefully acknowledges The Open Group for
3 .\" permission to reproduce portions of its copyrighted documentation.
4 .\" Original documentation from The Open Group can be obtained online at
5 .\" http://www.opengroup.org/bookstore/.
6 .\"
7 .\" The Institute of Electrical and Electronics Engineers and The Open
8 .\" Group, have given us permission to reprint portions of their
9 .\" documentation.
10 .\"
11 .\" In the following statement, the phrase ``this text'' refers to portions
12 .\" of the system documentation.
13 .\"
14 .\" Portions of this text are reprinted and reproduced in electronic form
15 .\" in the SunOS Reference Manual, from IEEE Std 1003.1, 2004 Edition,
16 .\" Standard for Information Technology -- Portable Operating System
17 .\" Interface (POSIX), The Open Group Base Specifications Issue 6,
18 .\" Copyright (C) 2001-2004 by the Institute of Electrical and Electronics
19 .\" Engineers, Inc and The Open Group. In the event of any discrepancy
20 .\" between these versions and the original IEEE and The Open Group
21 .\" Standard, the original IEEE and The Open Group Standard is the referee
22 .\" document. The original Standard can be obtained online at
23 .\" http://www.opengroup.org/unix/online.html.
24 .\"
25 .\" This notice shall appear on any product containing this material.
26 .\"
27 .\" The contents of this file are subject to the terms of the
28 .\" Common Development and Distribution License (the "License").
29 .\" You may not use this file except in compliance with the License.
30 .\"
31 .\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
32 .\" or http://www.opensolaris.org/os/licensing.
33 .\" See the License for the specific language governing permissions
34 .\" and limitations under the License.
35 .\"
36 .\" When distributing Covered Code, include this CDDL HEADER in each
37 .\" file and include the License file at usr/src/OPENSOLARIS.LICENSE.
38 .\" If applicable, add the following below this CDDL HEADER, with the
39 .\" fields enclosed by brackets "[]" replaced with your own identifying
40 .\" information: Portions Copyright [yyyy] [name of copyright owner]
41 .\"
42 .\"
43 .\" Copyright 1989 AT&T
44 .\" Portions Copyright (c) 1992, X/Open Company Limited All Rights Reserved
45 .\" Copyright (c) 2007, Sun Microsystems, Inc. All Rights Reserved.
46 .\"
47 .TH VI 1HAS "May 16, 2007"
48 .SH NAME
49 vi, view, vedit \- screen-oriented (visual) display editor based on ex
50 .SH SYNOPSIS
51 .LP
52 .nf
53 \fB/usr/bin/vi\fR [\fB-|\fR \fB-s\fR] [\fB-l\fR] [\fB-L\fR] [\fB-R\fR] [\fB-r\fR [\fIfilename\fR]] [\fB-S\fR]
54 [\fB-t\fR \fItag\fR] [\fB-v\fR] [\fB-V\fR] [\fB-x\fR] [\fB-w\fR\fIn\fR] [\fB-C\fR]
55 [\fB+\fR\fIcommand\fR | \fB-c\fR \fIcommand\fR] \fIfilename\fR...
56 .fi
57
58 .LP
59 .nf
60 \fB/usr/bin/view\fR [\fB-|\fR \fB-s\fR] [\fB-l\fR] [\fB-L\fR] [\fB-R\fR] [\fB-r\fR [\fIfilename\fR]] [\fB-S\fR]
61 [\fB-t\fR \fItag\fR] [\fB-v\fR] [\fB-V\fR] [\fB-x\fR] [\fB-w\fR\fIn\fR] [\fB-C\fR]
62 [\fB+\fR\fIcommand\fR | \fB-c\fR \fIcommand\fR] \fIfilename\fR...
63 .fi
64
65 .LP
66 .nf
67 \fB/usr/bin/vedit\fR [\fB-|\fR \fB-s\fR] [\fB-l\fR] [\fB-L\fR] [\fB-R\fR] [\fB-r\fR [\fIfilename\fR]] [\fB-S\fR]
68 [\fB-t\fR \fItag\fR] [\fB-v\fR] [\fB-V\fR] [\fB-x\fR] [\fB-w\fR\fIn\fR] [\fB-C\fR]
69 [\fB+\fR\fIcommand\fR | \fB-c\fR \fIcommand\fR] \fIfilename\fR...
70 .fi
71
72 .LP
73 .nf
74 \fB/usr/xpg4/bin/vi\fR [\fB-|\fR \fB-s\fR] [\fB-l\fR] [\fB-L\fR] [\fB-R\fR] [\fB-r\fR [\fIfilename\fR]]
75 [\fB-S\fR] [\fB-t\fR \fItag\fR] [\fB-v\fR] [\fB-V\fR] [\fB-x\fR] [\fB-w\fR\fIn\fR] [\fB-C\fR]
76 [\fB+\fR\fIcommand\fR | \fB-c\fR \fIcommand\fR] \fIfilename\fR...
77 .fi
78
79 .LP
80 .nf
81 \fB/usr/xpg4/bin/view\fR [\fB-|\fR \fB-s\fR] [\fB-l\fR] [\fB-L\fR] [\fB-R\fR] [\fB-r\fR [\fIfilename\fR]]
82 [\fB-S\fR] [\fB-t\fR \fItag\fR] [\fB-v\fR] [\fB-V\fR] [\fB-x\fR] [\fB-w\fR\fIn\fR] [\fB-C\fR]
83 [\fB+\fR\fIcommand\fR | \fB-c\fR \fIcommand\fR] \fIfilename\fR...
84 .fi
85
86 .LP
87 .nf
88 \fB/usr/xpg4/bin/vedit\fR [\fB-|\fR \fB-s\fR] [\fB-l\fR] [\fB-L\fR] [\fB-R\fR] [\fB-r\fR [\fIfilename\fR]]
89 [\fB-S\fR] [\fB-t\fR \fItag\fR] [\fB-v\fR] [\fB-V\fR] [\fB-x\fR] [\fB-w\fR\fIn\fR] [\fB-C\fR]
90 [\fB+\fR\fIcommand\fR | \fB-c\fR \fIcommand\fR] \fIfilename\fR...
91 .fi
92
93 .LP
94 .nf
95 \fB/usr/xpg6/bin/vi\fR [\fB-|\fR \fB-s\fR] [\fB-l\fR] [\fB-L\fR] [\fB-R\fR] [\fB-r\fR [\fIfilename\fR]]
96 [\fB-S\fR] [\fB-t\fR \fItag\fR] [\fB-v\fR] [\fB-V\fR] [\fB-x\fR] [\fB-w\fR\fIn\fR] [\fB-C\fR]
97 [\fB+\fR\fIcommand\fR | \fB-c\fR \fIcommand\fR] \fIfilename\fR...
98 .fi
99
100 .LP
101 .nf
102 \fB/usr/xpg6/bin/view\fR [\fB-|\fR \fB-s\fR] [\fB-l\fR] [\fB-L\fR] [\fB-R\fR] [\fB-r\fR [\fIfilename\fR]]
103 [\fB-S\fR] [\fB-t\fR \fItag\fR] [\fB-v\fR] [\fB-V\fR] [\fB-x\fR] [\fB-w\fR\fIn\fR] [\fB-C\fR]
104 [\fB+\fR\fIcommand\fR | \fB-c\fR \fIcommand\fR] \fIfilename\fR...
105 .fi
106
107 .LP
108 .nf
109 \fB/usr/xpg6/bin/vedit\fR [\fB-|\fR \fB-s\fR] [\fB-l\fR] [\fB-L\fR] [\fB-R\fR] [\fB-r\fR [\fIfilename\fR]]
110 [\fB-S\fR] [\fB-t\fR \fItag\fR] [\fB-v\fR] [\fB-V\fR] [\fB-x\fR] [\fB-w\fR\fIn\fR] [\fB-C\fR]
111 [\fB+\fR\fIcommand\fR | \fB-c\fR \fIcommand\fR] \fIfilename\fR...
112 .fi
113
114 .SH DESCRIPTION
115 .sp
116 .LP
117 The \fBvi\fR (visual) utility is a display-oriented text editor based on an
118 underlying line editor \fBex\fR. It is possible to use the command mode of
119 \fBex\fR from within \fBvi\fR and to use the command mode of \fBvi\fR from
120 within \fBex\fR. The visual commands are described on this manual page; how to
121 set options (like automatically numbering lines and automatically starting a
122 new output line when you type carriage return) and all \fBex\fR line editor
123 commands are described on the \fBex\fR(1) manual page.
124 .sp
125 .LP
126 When using \fBvi\fR, changes you make to the file are reflected in what you see
127 on your terminal screen. The position of the cursor on the screen indicates the
128 position within the file.
129 .sp
130 .LP
131 The \fBview\fR invocation is the same as \fBvi\fR except that the
132 \fBreadonly\fR flag is set.
133 .sp
134 .LP
135 The \fBvedit\fR invocation is intended for beginners. It is the same as
136 \fBvi\fR except that the \fBreport\fR flag is set to \fB1\fR, the
137 \fBshowmode\fR and \fBnovice\fR flags are set, and \fBmagic\fR is turned off.
138 These defaults make it easier to learn how to use \fBvi\fR.
139 .SH OPTIONS
140 .sp
141 .LP
142 The following options are supporrted:
143 .SS "Invocation Options"
144 .sp
145 .LP
146 The following invocation options are interpreted by \fBvi\fR (previously
147 documented options are discussed under NOTES):
148 .sp
149 .ne 2
150 .na
151 \fB\fB\(mi\fR | \fB-s\fR\fR
152 .ad
153 .RS 25n
154 Suppresses all interactive user feedback. This is useful when processing editor
155 scripts.
156 .RE
157
158 .sp
159 .ne 2
160 .na
161 \fB\fB-C\fR\fR
162 .ad
163 .RS 25n
164 Encryption option. Same as the \fB-x\fR option, except that \fBvi\fR simulates
165 the \fBC\fR command of \fBex\fR. The \fBC\fR command is like the \fBX\fR
166 command of \fBex\fR, except that all text read in is assumed to have been
167 encrypted.
168 .RE
169
170 .sp
171 .ne 2
172 .na
173 \fB\fB-l\fR\fR
174 .ad
175 .RS 25n
176 Sets up for editing \fBLISP\fR programs.
177 .RE
178
179 .sp
180 .ne 2
181 .na
182 \fB\fB-L\fR\fR
183 .ad
184 .RS 25n
185 Lists the name of all files saved as the result of an editor or system crash.
186 .RE
187
188 .sp
189 .ne 2
190 .na
191 \fB\fB-r\fR \fIfilename\fR\fR
192 .ad
193 .RS 25n
194 Edits \fIfilename\fR after an editor or system crash. (Recovers the version of
195 \fIfilename\fR that was in the buffer when the crash occurred.)
196 .RE
197
198 .sp
199 .ne 2
200 .na
201 \fB\fB-R\fR\fR
202 .ad
203 .RS 25n
204 \fBReadonly\fR mode. The \fBreadonly\fR flag is set, preventing accidental
205 overwriting of the file.
206 .RE
207
208 .sp
209 .ne 2
210 .na
211 \fB\fB-S\fR\fR
212 .ad
213 .RS 25n
214 This option is used in conjunction with the \fB-t\fR \fItag\fR option to tell
215 \fBvi\fR that the tags file can not be sorted and that, if the binary search
216 (which relies on a sorted tags file) for \fItag\fR fails to find it, the much
217 slower linear search should also be done. Since the linear search is slow,
218 users of large tags files should ensure that the tags files are sorted rather
219 than use this flag. Creation of tags files normally produces sorted tags files.
220 See \fBctags\fR(1) for more information on tags files.
221 .RE
222
223 .sp
224 .ne 2
225 .na
226 \fB\fB-t\fR \fItag\fR\fR
227 .ad
228 .RS 25n
229 Edits the file containing \fItag\fR and position the editor at its definition.
230 It is an error to specify more than one \fB-t\fR option.
231 .RE
232
233 .sp
234 .ne 2
235 .na
236 \fB\fB-v\fR\fR
237 .ad
238 .RS 25n
239 Starts up in display editing state, using \fBvi\fR. You can achieve the same
240 effect by typing the \fBvi\fR command itself.
241 .RE
242
243 .sp
244 .ne 2
245 .na
246 \fB\fB-V\fR\fR
247 .ad
248 .RS 25n
249 Verbose. When \fBex\fR commands are read by means of standard input, the input
250 is echoed to standard error. This can be useful when processing \fBex\fR
251 commands within shell scripts.
252 .RE
253
254 .sp
255 .ne 2
256 .na
257 \fB\fB-w\fR\fIn\fR\fR
258 .ad
259 .RS 25n
260 Sets the default window size to \fIn\fR. This is useful when using the editor
261 over a slow speed line.
262 .RE
263
264 .sp
265 .ne 2
266 .na
267 \fB\fB-x\fR\fR
268 .ad
269 .RS 25n
270 Encryption option. When used, \fBvi\fR simulates the \fBX\fR command of
271 \fBex\fR and prompts the user for a key. This key is used to encrypt and
272 decrypt text using the algorithm of the \fBcrypt\fR command. The \fBX\fR
273 command makes an educated guess to determine whether text read in is encrypted
274 or not. The temporary buffer file is encrypted also, using a transformed
275 version of the key typed in for the \fB-x\fR option. If an empty encryption
276 key is entered (that is, if the return key is pressed right after the prompt),
277 the file is not encrypted. This is a good way to decrypt a file erroneously
278 encrypted with a mistyped encryption key, such as a backspace or undo key.
279 .RE
280
281 .sp
282 .ne 2
283 .na
284 \fB\fB-\fR\fIcommand\fR | \fB-c\fR \fIcommand\fR\fR
285 .ad
286 .RS 25n
287 Begins editing by executing the specified editor \fIcommand\fR (usually a
288 search or positioning command).
289 .RE
290
291 .SS "/usr/xpg4/bin/vi and /usr/xpg6/bin/vi"
292 .sp
293 .LP
294 If both the \fB-t\fR \fItag\fR and the \fB-c\fR \fIcommand\fR options are
295 given, the \fB-t\fR \fItag\fR optionis processed first. That is, the file
296 containing \fItag\fR is selected by \fB-t\fR and then the command is executed.
297 .SH OPERANDS
298 .sp
299 .LP
300 The following operands are supported:
301 .sp
302 .ne 2
303 .na
304 \fB\fIfilename\fR\fR
305 .ad
306 .RS 12n
307 A file to be edited.
308 .RE
309
310 .SH COMMAND SUMMARY
311 .sp
312 .LP
313 The \fBvi\fR command modes are summarized in this section.
314 .SS "vi Modes"
315 .sp
316 .ne 2
317 .na
318 \fBCommand\fR
319 .ad
320 .RS 13n
321 Normal and initial mode. Other modes return to command mode upon completion.
322 \fIESC\fR (escape) is used to cancel a partial command.
323 .RE
324
325 .sp
326 .ne 2
327 .na
328 \fBInput\fR
329 .ad
330 .RS 13n
331 Entered by setting any of the following options:
332 .sp
333 .in +2
334 .nf
335 a A i I o O c C s S R
336 .fi
337 .in -2
338 .sp
339
340 Arbitrary text can then be entered. Input mode is normally terminated with the
341 \fIESC\fR character, or, abnormally, with an interrupt.
342 .RE
343
344 .sp
345 .ne 2
346 .na
347 \fBLast line\fR
348 .ad
349 .RS 13n
350 Reading input for \fB: / ?\fR or \fB!\fR. Terminate by typing a carriage
351 return. An interrupt cancels termination.
352 .RE
353
354 .SS "Sample Commands"
355 .sp
356 .LP
357 In the descriptions, \fICR\fR stands for carriage return and \fIESC\fR stands
358 for the escape key.
359 .sp
360 .ne 2
361 .na
362 \fB\(<-, \(->\fR
363 .ad
364 .br
365 .na
366 \fBdown-arrow\fR
367 .ad
368 .br
369 .na
370 \fBup-arrow\fR
371 .ad
372 .RS 14n
373 arrow keys move the cursor
374 .RE
375
376 .sp
377 .ne 2
378 .na
379 \fBh j k l\fR
380 .ad
381 .RS 14n
382 same as arrow keys
383 .RE
384
385 .sp
386 .ne 2
387 .na
388 \fBi\fItext\fR\fIESC\fR\fR
389 .ad
390 .RS 14n
391 insert \fItext\fR
392 .RE
393
394 .sp
395 .ne 2
396 .na
397 \fBcw\fInew\fR\fIESC\fR\fR
398 .ad
399 .RS 14n
400 change word to \fInew\fR
401 .RE
402
403 .sp
404 .ne 2
405 .na
406 \fBea\fIs\fR\fIESC\fR\fR
407 .ad
408 .RS 14n
409 pluralize word (end of word; append \fBs\fR; escape from input state)
410 .RE
411
412 .sp
413 .ne 2
414 .na
415 \fBx\fR
416 .ad
417 .RS 14n
418 delete a character
419 .RE
420
421 .sp
422 .ne 2
423 .na
424 \fBdw\fR
425 .ad
426 .RS 14n
427 delete a word
428 .RE
429
430 .sp
431 .ne 2
432 .na
433 \fBdd\fR
434 .ad
435 .RS 14n
436 delete a line
437 .RE
438
439 .sp
440 .ne 2
441 .na
442 \fB3dd\fR
443 .ad
444 .RS 14n
445 delete 3 lines
446 .RE
447
448 .sp
449 .ne 2
450 .na
451 \fBu\fR
452 .ad
453 .RS 14n
454 undo previous change
455 .RE
456
457 .sp
458 .ne 2
459 .na
460 \fBZZ\fR
461 .ad
462 .RS 14n
463 exit \fBvi\fR, saving changes
464 .RE
465
466 .sp
467 .ne 2
468 .na
469 \fB:q!\fICR\fR\fR
470 .ad
471 .RS 14n
472 quit, discarding changes
473 .RE
474
475 .sp
476 .ne 2
477 .na
478 \fB/\fItext\fR\fICR\fR\fR
479 .ad
480 .RS 14n
481 search for \fItext\fR
482 .RE
483
484 .sp
485 .ne 2
486 .na
487 \fB^U ^D\fR
488 .ad
489 .RS 14n
490 scroll up or down
491 .RE
492
493 .sp
494 .ne 2
495 .na
496 \fB:\fIcmd\fR\fICR\fR\fR
497 .ad
498 .RS 14n
499 any \fBex\fR or \fBed\fR command
500 .RE
501
502 .SS "Counts Before vi Commands"
503 .sp
504 .LP
505 Numbers can be typed as a prefix to some commands. They are interpreted in one
506 of these ways:
507 .sp
508 .ne 2
509 .na
510 \fBline/column number\fR
511 .ad
512 .RS 22n
513 z G |
514 .RE
515
516 .sp
517 .ne 2
518 .na
519 \fBscroll amount\fR
520 .ad
521 .RS 22n
522 ^D ^U
523 .RE
524
525 .sp
526 .ne 2
527 .na
528 \fBrepeat effect\fR
529 .ad
530 .RS 22n
531 most of the rest
532 .RE
533
534 .SS "Interrupting, Canceling"
535 .sp
536 .ne 2
537 .na
538 \fB\fIESC\fR\fR
539 .ad
540 .RS 7n
541 end insert or incomplete command
542 .RE
543
544 .sp
545 .ne 2
546 .na
547 \fB\fIDEL\fR\fR
548 .ad
549 .RS 7n
550 (delete or rubout) interrupts
551 .RE
552
553 .SS "File Manipulation"
554 .sp
555 .ne 2
556 .na
557 \fBZZ\fR
558 .ad
559 .RS 15n
560 if file modified, write and exit; otherwise, exit
561 .RE
562
563 .sp
564 .ne 2
565 .na
566 \fB:w\fICR\fR\fR
567 .ad
568 .RS 15n
569 write back changes
570 .RE
571
572 .sp
573 .ne 2
574 .na
575 \fB:w!\fICR\fR\fR
576 .ad
577 .RS 15n
578 forced write, if permission originally not valid
579 .RE
580
581 .sp
582 .ne 2
583 .na
584 \fB:q\fICR\fR\fR
585 .ad
586 .RS 15n
587 quit
588 .RE
589
590 .sp
591 .ne 2
592 .na
593 \fB:q!\fICR\fR\fR
594 .ad
595 .RS 15n
596 quit, discard changes
597 .RE
598
599 .sp
600 .ne 2
601 .na
602 \fB:e \fIname\fR\fICR\fR\fR
603 .ad
604 .RS 15n
605 edit file \fIname\fR
606 .RE
607
608 .sp
609 .ne 2
610 .na
611 \fB:e!\fICR\fR\fR
612 .ad
613 .RS 15n
614 reedit, discard changes
615 .RE
616
617 .sp
618 .ne 2
619 .na
620 \fB:e + \fIname\fR\fICR\fR\fR
621 .ad
622 .RS 15n
623 edit, starting at end
624 .RE
625
626 .sp
627 .ne 2
628 .na
629 \fB:e +\fIn\fR\fICR\fR\fR
630 .ad
631 .RS 15n
632 edit, starting at line \fIn\fR
633 .RE
634
635 .sp
636 .ne 2
637 .na
638 \fB:e #\fICR\fR\fR
639 .ad
640 .RS 15n
641 edit alternate file
642 .RE
643
644 .sp
645 .ne 2
646 .na
647 \fB:e! #\fICR\fR\fR
648 .ad
649 .RS 15n
650 edit alternate file, discard changes
651 .RE
652
653 .sp
654 .ne 2
655 .na
656 \fB:w \fIname\fR\fICR\fR\fR
657 .ad
658 .RS 15n
659 write file \fIname\fR
660 .RE
661
662 .sp
663 .ne 2
664 .na
665 \fB:w! \fIname\fR\fICR\fR\fR
666 .ad
667 .RS 15n
668 overwrite file \fIname\fR
669 .RE
670
671 .sp
672 .ne 2
673 .na
674 \fB:sh\fICR\fR\fR
675 .ad
676 .RS 15n
677 run shell, then return
678 .RE
679
680 .sp
681 .ne 2
682 .na
683 \fB:!\fIcmd\fR\fICR\fR\fR
684 .ad
685 .RS 15n
686 run \fIcmd\fR, then return
687 .RE
688
689 .sp
690 .ne 2
691 .na
692 \fB:n\fICR\fR\fR
693 .ad
694 .RS 15n
695 edit next file in arglist
696 .RE
697
698 .sp
699 .ne 2
700 .na
701 \fB:n \fIargs\fR\fICR\fR\fR
702 .ad
703 .RS 15n
704 specify new arglist
705 .RE
706
707 .sp
708 .ne 2
709 .na
710 \fB^G\fR
711 .ad
712 .RS 15n
713 show current file and line
714 .RE
715
716 .sp
717 .ne 2
718 .na
719 \fB:ta \fItag\fR\fICR\fR\fR
720 .ad
721 .RS 15n
722 position cursor to \fItag\fR
723 .RE
724
725 .sp
726 .LP
727 In general, any \fBex\fR or \fBed\fR command (such as \fIsubstitute\fR or
728 \fIglobal\fR) can be typed, preceded by a colon and followed by a carriage
729 return.
730 .SS "Positioning Within a File"
731 .sp
732 .ne 2
733 .na
734 \fBF\fR
735 .ad
736 .RS 14n
737 forward screen
738 .RE
739
740 .sp
741 .ne 2
742 .na
743 \fB^B\fR
744 .ad
745 .RS 14n
746 backward screen
747 .RE
748
749 .sp
750 .ne 2
751 .na
752 \fB^D\fR
753 .ad
754 .RS 14n
755 scroll down half screen
756 .RE
757
758 .sp
759 .ne 2
760 .na
761 \fB^U\fR
762 .ad
763 .RS 14n
764 scroll up half screen
765 .RE
766
767 .sp
768 .ne 2
769 .na
770 \fB\fIn\fRG\fR
771 .ad
772 .RS 14n
773 go to the beginning of the specified line (end default), where \fIn\fR is a
774 line number
775 .RE
776
777 .sp
778 .ne 2
779 .na
780 \fB/\fIpat\fR\fR
781 .ad
782 .RS 14n
783 next line matching \fIpat\fR
784 .RE
785
786 .sp
787 .ne 2
788 .na
789 \fB?\fIpat\fR\fR
790 .ad
791 .RS 14n
792 previous line matching \fIpat\fR
793 .RE
794
795 .sp
796 .ne 2
797 .na
798 \fBn\fR
799 .ad
800 .RS 14n
801 repeat last \fB/\fR or \fB?\fR command
802 .RE
803
804 .sp
805 .ne 2
806 .na
807 \fBN\fR
808 .ad
809 .RS 14n
810 reverse last \fB/\fR or \fB?\fR command
811 .RE
812
813 .sp
814 .ne 2
815 .na
816 \fB/\fIpat\fR/+\fIn\fR\fR
817 .ad
818 .RS 14n
819 \fIn\fRth line after \fIpat\fR
820 .RE
821
822 .sp
823 .ne 2
824 .na
825 \fB?\fIpat\fR?\(mi\fIn\fR\fR
826 .ad
827 .RS 14n
828 \fIn\fRth line before \fIpat\fR
829 .RE
830
831 .sp
832 .ne 2
833 .na
834 \fB]]\fR
835 .ad
836 .RS 14n
837 next section/function
838 .RE
839
840 .sp
841 .ne 2
842 .na
843 \fB[[\fR
844 .ad
845 .RS 14n
846 previous section/function
847 .RE
848
849 .sp
850 .ne 2
851 .na
852 \fB(\fR
853 .ad
854 .RS 14n
855 beginning of sentence
856 .RE
857
858 .sp
859 .ne 2
860 .na
861 \fB)\fR
862 .ad
863 .RS 14n
864 end of sentence
865 .RE
866
867 .sp
868 .ne 2
869 .na
870 \fB{\fR
871 .ad
872 .RS 14n
873 beginning of paragraph
874 .RE
875
876 .sp
877 .ne 2
878 .na
879 \fB}\fR
880 .ad
881 .RS 14n
882 end of paragraph
883 .RE
884
885 .sp
886 .ne 2
887 .na
888 \fB%\fR
889 .ad
890 .RS 14n
891 find matching \fB( )\fR or \fB{ }\fR
892 .RE
893
894 .SS "Adjusting the Screen"
895 .sp
896 .ne 2
897 .na
898 \fB^L\fR
899 .ad
900 .RS 16n
901 clear and redraw window
902 .RE
903
904 .sp
905 .ne 2
906 .na
907 \fB^R\fR
908 .ad
909 .RS 16n
910 clear and redraw window if \fB^L\fR is \(-> key
911 .RE
912
913 .sp
914 .ne 2
915 .na
916 \fBz\fICR\fR\fR
917 .ad
918 .RS 16n
919 redraw screen with current line at top of window
920 .RE
921
922 .sp
923 .ne 2
924 .na
925 \fBz\(mi\fICR\fR\fR
926 .ad
927 .RS 16n
928 redraw screen with current line at bottom of window
929 .RE
930
931 .sp
932 .ne 2
933 .na
934 \fBz.\fICR\fR\fR
935 .ad
936 .RS 16n
937 redraw screen with current line at center of window
938 .RE
939
940 .sp
941 .ne 2
942 .na
943 \fB/\fIpat\fR/z\(mi\fICR\fR\fR
944 .ad
945 .RS 16n
946 move \fIpat\fR line to bottom of window
947 .RE
948
949 .sp
950 .ne 2
951 .na
952 \fBz\fIn\fR.\fICR\fR\fR
953 .ad
954 .RS 16n
955 use \fIn\fR\(miline window
956 .RE
957
958 .sp
959 .ne 2
960 .na
961 \fB^E\fR
962 .ad
963 .RS 16n
964 scroll window down one line
965 .RE
966
967 .sp
968 .ne 2
969 .na
970 \fB^Y\fR
971 .ad
972 .RS 16n
973 scroll window up one line
974 .RE
975
976 .SS "Marking and Returning"
977 .sp
978 .ne 2
979 .na
980 \fB\(ga\(ga\fR
981 .ad
982 .RS 12n
983 move cursor to previous context
984 .RE
985
986 .sp
987 .ne 2
988 .na
989 \fBa\'a\'\fR
990 .ad
991 .RS 12n
992 move cursor to first non-white space in line
993 .RE
994
995 .sp
996 .ne 2
997 .na
998 \fBm\fIx\fR\fR
999 .ad
1000 .RS 12n
1001 mark current position with the \fBASCII\fR lower-case letter \fIx\fR
1002 .RE
1003
1004 .sp
1005 .ne 2
1006 .na
1007 \fB\(ga\fIx\fR\fR
1008 .ad
1009 .RS 12n
1010 move cursor to mark \fIx\fR
1011 .RE
1012
1013 .sp
1014 .ne 2
1015 .na
1016 \fBa\'\fIx\fR\fR
1017 .ad
1018 .RS 12n
1019 move cursor to first non-white space in line marked by \fIx\fR
1020 .RE
1021
1022 .SS "Line Positioning"
1023 .sp
1024 .ne 2
1025 .na
1026 \fBH\fR
1027 .ad
1028 .RS 14n
1029 top line on screen
1030 .RE
1031
1032 .sp
1033 .ne 2
1034 .na
1035 \fBL\fR
1036 .ad
1037 .RS 14n
1038 last line on screen
1039 .RE
1040
1041 .sp
1042 .ne 2
1043 .na
1044 \fBM\fR
1045 .ad
1046 .RS 14n
1047 middle line on screen
1048 .RE
1049
1050 .sp
1051 .ne 2
1052 .na
1053 \fB+\fR
1054 .ad
1055 .RS 14n
1056 next line, at first non-white space character
1057 .RE
1058
1059 .sp
1060 .ne 2
1061 .na
1062 \fB\(mi\fR
1063 .ad
1064 .RS 14n
1065 previous line, at first non-white space character
1066 .RE
1067
1068 .sp
1069 .ne 2
1070 .na
1071 \fB\fICR\fR\fR
1072 .ad
1073 .RS 14n
1074 return, same as \fB+\fR
1075 .RE
1076
1077 .sp
1078 .ne 2
1079 .na
1080 \fB\fBdown-arrow\fR\fR
1081 .ad
1082 .br
1083 .na
1084 \fBor \fBj\fR\fR
1085 .ad
1086 .RS 14n
1087 next line, same column
1088 .RE
1089
1090 .sp
1091 .ne 2
1092 .na
1093 \fB\fBup-arrow\fR\fR
1094 .ad
1095 .br
1096 .na
1097 \fBor \fBk\fR\fR
1098 .ad
1099 .RS 14n
1100 previous line, same column
1101 .RE
1102
1103 .SS "Character Positioning"
1104 .sp
1105 .ne 2
1106 .na
1107 \fB^\fR
1108 .ad
1109 .RS 13n
1110 first non-white space character
1111 .RE
1112
1113 .sp
1114 .ne 2
1115 .na
1116 \fB0\fR
1117 .ad
1118 .RS 13n
1119 beginning of line
1120 .RE
1121
1122 .sp
1123 .ne 2
1124 .na
1125 \fB$\fR
1126 .ad
1127 .RS 13n
1128 end of line
1129 .RE
1130
1131 .sp
1132 .ne 2
1133 .na
1134 \fB\fBl\fR or \fB\(->\fR\fR
1135 .ad
1136 .RS 13n
1137 forward
1138 .RE
1139
1140 .sp
1141 .ne 2
1142 .na
1143 \fB\fBh\fR or \fB\(<-\fR\fR
1144 .ad
1145 .RS 13n
1146 backward
1147 .RE
1148
1149 .sp
1150 .ne 2
1151 .na
1152 \fB^H\fR
1153 .ad
1154 .RS 13n
1155 same as \fB\(<-\fR (backspace)
1156 .RE
1157
1158 .sp
1159 .ne 2
1160 .na
1161 \fBspace\fR
1162 .ad
1163 .RS 13n
1164 same as \fB\(->\fR (space bar)
1165 .RE
1166
1167 .sp
1168 .ne 2
1169 .na
1170 \fBf\fIx\fR\fR
1171 .ad
1172 .RS 13n
1173 find next \fIx\fR
1174 .RE
1175
1176 .sp
1177 .ne 2
1178 .na
1179 \fBF\fIx\fR\fR
1180 .ad
1181 .RS 13n
1182 find previous \fIx\fR
1183 .RE
1184
1185 .sp
1186 .ne 2
1187 .na
1188 \fBt\fIx\fR\fR
1189 .ad
1190 .RS 13n
1191 move to character following the next \fIx\fR
1192 .RE
1193
1194 .sp
1195 .ne 2
1196 .na
1197 \fBT\fIx\fR\fR
1198 .ad
1199 .RS 13n
1200 move to character following the previous \fIx\fR
1201 .RE
1202
1203 .sp
1204 .ne 2
1205 .na
1206 \fB;\fR
1207 .ad
1208 .RS 13n
1209 repeat last \fBf\fR, \fBF\fR, \fBt\fR, or \fBT\fR
1210 .RE
1211
1212 .sp
1213 .ne 2
1214 .na
1215 \fB,\fR
1216 .ad
1217 .RS 13n
1218 repeat inverse of last \fBf\fR, \fBF\fR, \fBt\fR, or \fBT\fR
1219 .RE
1220
1221 .sp
1222 .ne 2
1223 .na
1224 \fB\fIn\fR|\fR
1225 .ad
1226 .RS 13n
1227 move to column \fIn\fR
1228 .RE
1229
1230 .sp
1231 .ne 2
1232 .na
1233 \fB%\fR
1234 .ad
1235 .RS 13n
1236 find matching \fB( )\fR or \fB{ }\fR
1237 .RE
1238
1239 .SS "Words, Sentences, Paragraphs"
1240 .sp
1241 .ne 2
1242 .na
1243 \fBw\fR
1244 .ad
1245 .RS 5n
1246 forward a word
1247 .RE
1248
1249 .sp
1250 .ne 2
1251 .na
1252 \fBb\fR
1253 .ad
1254 .RS 5n
1255 back a word
1256 .RE
1257
1258 .sp
1259 .ne 2
1260 .na
1261 \fBe\fR
1262 .ad
1263 .RS 5n
1264 end of word
1265 .RE
1266
1267 .sp
1268 .ne 2
1269 .na
1270 \fB)\fR
1271 .ad
1272 .RS 5n
1273 to next sentence
1274 .RE
1275
1276 .sp
1277 .ne 2
1278 .na
1279 \fB}\fR
1280 .ad
1281 .RS 5n
1282 to next paragraph
1283 .RE
1284
1285 .sp
1286 .ne 2
1287 .na
1288 \fB(\fR
1289 .ad
1290 .RS 5n
1291 back a sentence
1292 .RE
1293
1294 .sp
1295 .ne 2
1296 .na
1297 \fB{\fR
1298 .ad
1299 .RS 5n
1300 back a paragraph
1301 .RE
1302
1303 .sp
1304 .ne 2
1305 .na
1306 \fBW\fR
1307 .ad
1308 .RS 5n
1309 forward a blank-delimited word
1310 .RE
1311
1312 .sp
1313 .ne 2
1314 .na
1315 \fBB\fR
1316 .ad
1317 .RS 5n
1318 back a blank-delimited word
1319 .RE
1320
1321 .sp
1322 .ne 2
1323 .na
1324 \fBE\fR
1325 .ad
1326 .RS 5n
1327 end of a blank-delimited word
1328 .RE
1329
1330 .SS "Corrections During Insert"
1331 .sp
1332 .ne 2
1333 .na
1334 \fB^H\fR
1335 .ad
1336 .RS 16n
1337 erase last character (backspace)
1338 .RE
1339
1340 .sp
1341 .ne 2
1342 .na
1343 \fB^W\fR
1344 .ad
1345 .RS 16n
1346 erase last word
1347 .RE
1348
1349 .sp
1350 .ne 2
1351 .na
1352 \fBerase\fR
1353 .ad
1354 .RS 16n
1355 your erase character, same as \fB^H\fR (backspace)
1356 .RE
1357
1358 .sp
1359 .ne 2
1360 .na
1361 \fBkill\fR
1362 .ad
1363 .RS 16n
1364 your kill character, erase this line of input
1365 .RE
1366
1367 .sp
1368 .ne 2
1369 .na
1370 \fB\e\fR
1371 .ad
1372 .RS 16n
1373 quotes your erase and kill characters
1374 .RE
1375
1376 .sp
1377 .ne 2
1378 .na
1379 \fB\fIESC\fR\fR
1380 .ad
1381 .RS 16n
1382 ends insertion, back to command mode
1383 .RE
1384
1385 .sp
1386 .ne 2
1387 .na
1388 \fBControl\(miC\fR
1389 .ad
1390 .RS 16n
1391 interrupt, suspends insert mode
1392 .RE
1393
1394 .sp
1395 .ne 2
1396 .na
1397 \fB^D\fR
1398 .ad
1399 .RS 16n
1400 backtab one character; reset left margin of \fIautoindent\fR
1401 .RE
1402
1403 .sp
1404 .ne 2
1405 .na
1406 \fB^^D\fR
1407 .ad
1408 .RS 16n
1409 caret (\fB^\fR) followed by control-d (\fB^D\fR); backtab to beginning of line;
1410 do not reset left margin of \fIautoindent\fR
1411 .RE
1412
1413 .sp
1414 .ne 2
1415 .na
1416 \fB0^D\fR
1417 .ad
1418 .RS 16n
1419 backtab to beginning of line; reset left margin of \fIautoindent\fR
1420 .RE
1421
1422 .sp
1423 .ne 2
1424 .na
1425 \fB^V\fR
1426 .ad
1427 .RS 16n
1428 quote non-printable character
1429 .RE
1430
1431 .SS "Insert and Replace"
1432 .sp
1433 .ne 2
1434 .na
1435 \fBa\fR
1436 .ad
1437 .RS 12n
1438 append after cursor
1439 .RE
1440
1441 .sp
1442 .ne 2
1443 .na
1444 \fBA\fR
1445 .ad
1446 .RS 12n
1447 append at end of line
1448 .RE
1449
1450 .sp
1451 .ne 2
1452 .na
1453 \fBi\fR
1454 .ad
1455 .RS 12n
1456 insert before cursor
1457 .RE
1458
1459 .sp
1460 .ne 2
1461 .na
1462 \fBI\fR
1463 .ad
1464 .RS 12n
1465 insert before first non-blank
1466 .RE
1467
1468 .sp
1469 .ne 2
1470 .na
1471 \fBo\fR
1472 .ad
1473 .RS 12n
1474 open line below
1475 .RE
1476
1477 .sp
1478 .ne 2
1479 .na
1480 \fBO\fR
1481 .ad
1482 .RS 12n
1483 open line above
1484 .RE
1485
1486 .sp
1487 .ne 2
1488 .na
1489 \fBr\fIx\fR\fR
1490 .ad
1491 .RS 12n
1492 replace single character with \fIx\fR
1493 .RE
1494
1495 .sp
1496 .ne 2
1497 .na
1498 \fBR\fItext\fR\fIESC\fR\fR
1499 .ad
1500 .RS 12n
1501 replace characters
1502 .RE
1503
1504 .SS "Operators"
1505 .sp
1506 .LP
1507 Operators are followed by a cursor motion and affect all text that would have
1508 been moved over. For example, since \fBw\fR moves over a word, \fBdw\fR deletes
1509 the word that would be moved over. Double the operator, for example \fBdd\fR,
1510 to affect whole lines.
1511 .sp
1512 .ne 2
1513 .na
1514 \fBd\fR
1515 .ad
1516 .RS 5n
1517 delete
1518 .RE
1519
1520 .sp
1521 .ne 2
1522 .na
1523 \fBc\fR
1524 .ad
1525 .RS 5n
1526 change
1527 .RE
1528
1529 .sp
1530 .ne 2
1531 .na
1532 \fBy\fR
1533 .ad
1534 .RS 5n
1535 yank lines to buffer
1536 .RE
1537
1538 .sp
1539 .ne 2
1540 .na
1541 \fB<\fR
1542 .ad
1543 .RS 5n
1544 left shift
1545 .RE
1546
1547 .sp
1548 .ne 2
1549 .na
1550 \fB>\fR
1551 .ad
1552 .RS 5n
1553 right shift
1554 .RE
1555
1556 .sp
1557 .ne 2
1558 .na
1559 \fB!\fR
1560 .ad
1561 .RS 5n
1562 filter through command
1563 .RE
1564
1565 .SS "Miscellaneous Operations"
1566 .sp
1567 .ne 2
1568 .na
1569 \fBC\fR
1570 .ad
1571 .RS 5n
1572 change rest of line (\fBc$\fR)
1573 .RE
1574
1575 .sp
1576 .ne 2
1577 .na
1578 \fBD\fR
1579 .ad
1580 .RS 5n
1581 delete rest of line (\fBd$\fR)
1582 .RE
1583
1584 .sp
1585 .ne 2
1586 .na
1587 \fBs\fR
1588 .ad
1589 .RS 5n
1590 substitute characters (\fBcl\fR)
1591 .RE
1592
1593 .sp
1594 .ne 2
1595 .na
1596 \fBS\fR
1597 .ad
1598 .RS 5n
1599 substitute lines (\fBcc\fR)
1600 .RE
1601
1602 .sp
1603 .ne 2
1604 .na
1605 \fBJ\fR
1606 .ad
1607 .RS 5n
1608 join lines
1609 .RE
1610
1611 .sp
1612 .ne 2
1613 .na
1614 \fBx\fR
1615 .ad
1616 .RS 5n
1617 delete characters (\fBdl\fR)
1618 .RE
1619
1620 .sp
1621 .ne 2
1622 .na
1623 \fBX\fR
1624 .ad
1625 .RS 5n
1626 delete characters before cursor \fBdh\fR)
1627 .RE
1628
1629 .sp
1630 .ne 2
1631 .na
1632 \fBY\fR
1633 .ad
1634 .RS 5n
1635 yank lines (\fByy\fR)
1636 .RE
1637
1638 .SS "Yank and Put"
1639 .sp
1640 .LP
1641 Put inserts the text most recently deleted or yanked; however, if a buffer is
1642 named (using the \fBASCII\fR lower-case letters \fBa\fR - \fBz\fR), the text in
1643 that buffer is put instead.
1644 .sp
1645 .ne 2
1646 .na
1647 \fB3yy\fR
1648 .ad
1649 .RS 7n
1650 yank 3 lines
1651 .RE
1652
1653 .sp
1654 .ne 2
1655 .na
1656 \fB3yl\fR
1657 .ad
1658 .RS 7n
1659 yank 3 characters
1660 .RE
1661
1662 .sp
1663 .ne 2
1664 .na
1665 \fBp\fR
1666 .ad
1667 .RS 7n
1668 put back text after cursor
1669 .RE
1670
1671 .sp
1672 .ne 2
1673 .na
1674 \fBP\fR
1675 .ad
1676 .RS 7n
1677 put back text before cursor
1678 .RE
1679
1680 .sp
1681 .ne 2
1682 .na
1683 \fB\fI"x\fRp\fR
1684 .ad
1685 .RS 7n
1686 put from buffer \fIx\fR
1687 .RE
1688
1689 .sp
1690 .ne 2
1691 .na
1692 \fB"\fIx\fRy\fR
1693 .ad
1694 .RS 7n
1695 yank to buffer \fIx\fR
1696 .RE
1697
1698 .sp
1699 .ne 2
1700 .na
1701 \fB"\fIx\fRd\fR
1702 .ad
1703 .RS 7n
1704 delete into buffer \fIx\fR
1705 .RE
1706
1707 .SS "Undo, Redo, Retrieve"
1708 .sp
1709 .ne 2
1710 .na
1711 \fBu\fR
1712 .ad
1713 .RS 7n
1714 undo last change
1715 .RE
1716
1717 .sp
1718 .ne 2
1719 .na
1720 \fBU\fR
1721 .ad
1722 .RS 7n
1723 restore current line
1724 .RE
1725
1726 .sp
1727 .ne 2
1728 .na
1729 \fB\&.\fR
1730 .ad
1731 .RS 7n
1732 repeat last change
1733 .RE
1734
1735 .sp
1736 .ne 2
1737 .na
1738 \fB"\fId\fRp\fR
1739 .ad
1740 .RS 7n
1741 retrieve \fId\fR'th last delete
1742 .RE
1743
1744 .SH USAGE
1745 .sp
1746 .LP
1747 See \fBlargefile\fR(5) for the description of the behavior of \fBvi\fR and
1748 \fBview\fR when encountering files greater than or equal to 2 Gbyte ( 2^31
1749 bytes).
1750 .SH ENVIRONMENT VARIABLES
1751 .sp
1752 .LP
1753 See \fBenviron\fR(5) for descriptions of the following environment variables
1754 that affect the execution of \fBvi\fR: \fBLANG\fR, \fBLC_ALL\fR,
1755 \fBLC_COLLATE\fR, \fBLC_CTYPE\fR, \fBLC_TIME\fR, \fBLC_MESSAGES\fR,
1756 \fBNLSPATH\fR, \fBPATH\fR, \fBSHELL\fR, and \fBTERM\fR.
1757 .sp
1758 .ne 2
1759 .na
1760 \fB\fBCOLUMNS\fR\fR
1761 .ad
1762 .RS 11n
1763 Override the system-selected horizontal screen size.
1764 .RE
1765
1766 .sp
1767 .ne 2
1768 .na
1769 \fB\fBEXINIT\fR\fR
1770 .ad
1771 .RS 11n
1772 Determine a list of \fBex\fR commands that are executed on editor start-up,
1773 before reading the first file. The list can contain multiple commands by
1774 separating them using a vertical-line (\fB|\fR) character.
1775 .RE
1776
1777 .sp
1778 .ne 2
1779 .na
1780 \fB\fBLINES\fR\fR
1781 .ad
1782 .RS 11n
1783 Override the system-selected vertical screen size, used as the number of lines
1784 in a screenful and the vertical screen size in visual mode.
1785 .RE
1786
1787 .SH FILES
1788 .sp
1789 .ne 2
1790 .na
1791 \fB\fB/var/tmp\fR\fR
1792 .ad
1793 .sp .6
1794 .RS 4n
1795 default directory where temporary work files are placed; it can be changed
1796 using the \fBdirectory\fR option (see the \fBex\fR(1) command)
1797 .RE
1798
1799 .sp
1800 .ne 2
1801 .na
1802 \fB\fB/usr/share/lib/terminfo/?/*\fR\fR
1803 .ad
1804 .sp .6
1805 .RS 4n
1806 compiled terminal description database
1807 .RE
1808
1809 .sp
1810 .ne 2
1811 .na
1812 \fB\fB/usr/lib/.COREterm/?/*\fR\fR
1813 .ad
1814 .sp .6
1815 .RS 4n
1816 subset of compiled terminal description database
1817 .RE
1818
1819 .SH ATTRIBUTES
1820 .sp
1821 .LP
1822 See \fBattributes\fR(5) for descriptions of the following attributes:
1823 .SS "/usr/bin/vi, /usr/bin/view, /usr/bin/vedit"
1824 .sp
1825
1826 .sp
1827 .TS
1828 box;
1829 c | c
1830 l | l .
1831 ATTRIBUTE TYPE ATTRIBUTE VALUE
1832 _
1833 CSI Not enabled
1834 .TE
1835
1836 .SS "/usr/xpg4/bin/vi, /usr/xpg4/bin/view, /usr/xpg4/bin/vedit"
1837 .sp
1838
1839 .sp
1840 .TS
1841 box;
1842 c | c
1843 l | l .
1844 ATTRIBUTE TYPE ATTRIBUTE VALUE
1845 _
1846 CSI Enabled
1847 _
1848 Interface Stability Standard
1849 .TE
1850
1851 .SS "/usr/xpg6/bin/vi, /usr/xpg6/bin/view, /usr/xpg6/bin/vedit"
1852 .sp
1853
1854 .sp
1855 .TS
1856 box;
1857 c | c
1858 l | l .
1859 ATTRIBUTE TYPE ATTRIBUTE VALUE
1860 _
1861 CSI Enabled
1862 _
1863 Interface Stability Standard
1864 .TE
1865
1866 .SH SEE ALSO
1867 .sp
1868 .LP
1869 \fBIntro\fR(1), \fBctags\fR(1), \fBed\fR(1), \fBedit\fR(1), \fBex\fR(1),
1870 \fBattributes\fR(5), \fBenviron\fR(5), \fBlargefile\fR(5), \fBstandards\fR(5)
1871 .sp
1872 .LP
1873 \fISolaris Advanced User\&'s Guide\fR
1874 .SH AUTHOR
1875 .sp
1876 .LP
1877 \fBvi\fR and \fBex\fR were developed by The University of California, Berkeley
1878 California, Computer Science Division, Department of Electrical Engineering and
1879 Computer Science.
1880 .SH NOTES
1881 .sp
1882 .LP
1883 Two options, although they continue to be supported, have been replaced in the
1884 documentation by options that follow the Command Syntax Standard (see
1885 \fBIntro\fR(1)). An \fB-r\fR option that is not followed with an
1886 option-argument has been replaced by \fB-L\fR and \fB+\fR\fBcommand\fR has been
1887 replaced by \fB-c\fR \fBcommand\fR.
1888 .sp
1889 .LP
1890 The message \fBfile too large to recover with\fR \fB-r\fR \fBoption\fR, which
1891 is seen when a file is loaded, indicates that the file can be edited and saved
1892 successfully, but if the editing session is lost, recovery of the file with the
1893 \fB-r\fR option is not possible.
1894 .sp
1895 .LP
1896 The editing environment defaults to certain configuration options. When an
1897 editing session is initiated, \fBvi\fR attempts to read the \fBEXINIT\fR
1898 environment variable. If it exists, the editor uses the values defined in
1899 \fBEXINIT\fR; otherwise the values set in \fB$HOME/.exrc\fR are used. If
1900 \fB$HOME/.exrc\fR does not exist, the default values are used.
1901 .sp
1902 .LP
1903 To use a copy of \fB\&.exrc\fR located in the current directory other than
1904 \fB$HOME\fR, set the \fIexrc\fR option in \fBEXINIT\fR or \fB$HOME/.exrc\fR.
1905 Options set in \fBEXINIT\fR can be turned off in a local \fB\&.exrc\fR only if
1906 \fIexrc\fR is set in \fBEXINIT\fR or \fB$HOME/.exrc\fR. In order to be used,
1907 \fI\&.exrc\fR in \fB$HOME\fR or the current directory must fulfill these
1908 conditions:
1909 .RS +4
1910 .TP
1911 .ie t \(bu
1912 .el o
1913 It must exist.
1914 .RE
1915 .RS +4
1916 .TP
1917 .ie t \(bu
1918 .el o
1919 It must be owned by the same userid as the real userid of the process, or the
1920 process has appropriate privileges.
1921 .RE
1922 .RS +4
1923 .TP
1924 .ie t \(bu
1925 .el o
1926 It is not writable by anyone other than the owner.
1927 .RE
1928 .sp
1929 .LP
1930 Tampering with entries in \fB/usr/share/lib/terminfo/?/*\fR or
1931 \fB/usr/share/lib/terminfo/?/*\fR (for example, changing or removing an entry)
1932 can affect programs such as \fBvi\fR that expect the entry to be present and
1933 correct. In particular, removing the "dumb" terminal can cause unexpected
1934 problems.
1935 .sp
1936 .LP
1937 Software tabs using \fB^T\fR work only immediately after the \fIautoindent\fR.
1938 .sp
1939 .LP
1940 Left and right shifts on intelligent terminals do not make use of insert and
1941 delete character operations in the terminal.
1942 .sp
1943 .LP
1944 Loading an alternate \fBmalloc()\fR library using the environment variable
1945 \fBLD_PRELOAD\fR can cause problems for \fB/usr/bin/vi\fR.
1946 .sp
1947 .LP
1948 The \fBvi\fR utility currently has the following limitations:
1949 .RS +4
1950 .TP
1951 1.
1952 Lines, including the trailing NEWLINE character, can contain no more than
1953 4096 bytes.
1954 .sp
1955 If a longer line is found, \fBLine too long\fR is displayed in the status line.
1956 .RE
1957 .RS +4
1958 .TP
1959 2.
1960 The editor's temporary work file can be no larger than 128Mb.
1961 .sp
1962 If a larger temporary file is needed, \fBTmp file too large\fR is displayed in
1963 the status line.
1964 .RE