|
|
1.1 ! root 1: .TH VI 1 ! 2: .CT 1 editor ! 3: .SH NAME ! 4: ex, edit, vi \- text editor ! 5: .SH SYNOPSIS ! 6: .B ex ! 7: [ ! 8: .I option ... ! 9: ] ! 10: .I file ... ! 11: .PP ! 12: .B edit ! 13: [ ! 14: .I option ... ! 15: ] ! 16: .I file ... ! 17: .PP ! 18: .B vi ! 19: [ ! 20: .I option ... ! 21: ] ! 22: .I file ... ! 23: .SH DESCRIPTION ! 24: .I Ex ! 25: is elaborated from ! 26: .IR ed (1). ! 27: .I Vi ! 28: is the display editing aspect of ! 29: .IR ex ; ! 30: .I edit ! 31: is a simplified subset of ! 32: .IR ex . ! 33: The editors work on several ! 34: .I files ! 35: simultaneously. ! 36: .I Vi ! 37: gets the terminal type from environment variable ! 38: .BR TERM . ! 39: .PP ! 40: The options are: ! 41: .TP ! 42: .BI -r " file ! 43: Recover the ! 44: .I file ! 45: after a crash in the editor. ! 46: If no file is specified, list all saved files. ! 47: .TP ! 48: .B -l ! 49: Lisp indent mode; give special meaning to editor commands ! 50: .BR ()[]{} . ! 51: .TP ! 52: .BI -w n ! 53: Default window size is ! 54: .I n ! 55: lines. ! 56: .TP ! 57: .B -x ! 58: Edit encrypted files; a key will be prompted for. ! 59: .TP ! 60: .B -R ! 61: Read only; no files will be changed. ! 62: .TP ! 63: .BI + cmd ! 64: Execute the specified ! 65: .I ex ! 66: command upon entering the editor. ! 67: .PP ! 68: The editors begin in `command mode'. ! 69: An ! 70: .SM ESC ! 71: character typed in command mode cancels the command. ! 72: The commands ! 73: .B ! 74: a A c C i I o O R s S ! 75: enter input mode, where arbitrary text may be entered. ! 76: .SM ESC ! 77: or interrupt returns to command mode. ! 78: The commands ! 79: .B ! 80: : / ? ! ! 81: take input from the last line of the screen, which is ! 82: ended by a newline, or canceled by an interrupt. ! 83: .PP ! 84: A number preceding commands ! 85: .B z G | ! 86: specifies a line. ! 87: A number before almost any other command causes it ! 88: to be repeated. ! 89: .PP ! 90: In the following summary of ! 91: .I vi ! 92: commands ! 93: .B ^ ! 94: means the `control' key. ! 95: Commands so marked work in input mode; ! 96: others work in command mode. ! 97: .PP ! 98: .de fq ! 99: \&\f5\\$1\fR \\$2 \\$3 \\$4 \\$5 \\$6 ! 100: .. ! 101: .de fz ! 102: \&\f5\\$1 \fI\\$2\fR \\$3 \\$4 \\$5 \\$6 ! 103: .. ! 104: .ta \w'\f5:e + file'u ! 105: File manipulation ! 106: .2C ! 107: .fq :w write back changes ! 108: .fz :w file write \fIfile\fR ! 109: .fz :w! file overwrite \fIfile\fR ! 110: .fq :q quit ! 111: .fq :q! quit, discarding changes ! 112: .fz :e file edit \fIfile\fR ! 113: .fq :e! reedit, discarding changes ! 114: .fq ":e\ +" file edit, starting at end ! 115: .fz ":e\ +" starting at line \fIn\fP ! 116: .fq :sh run shell, then return ! 117: .fz :! cmd run shell command ! 118: .fq :n edit next \fIfile\fR argument ! 119: .fz : ex-cmd do editor command ! 120: .1C ! 121: .PP ! 122: Positioning in file ! 123: .2C ! 124: .fq ^F forward screen ! 125: .fq ^B backward screen ! 126: .fq ^D down half screen ! 127: .fq ^U up half screen ! 128: .fq G "to specified line (end default) ! 129: .fz / pat next line matching \fIpat\fR ! 130: .fz ? pat previous line matching ! 131: .fq n repeat last "\f5\e or ?\fP ! 132: .fz /\fIpat\fP/\o'+_' n "\fIn\fRth line after or before \fIpat\fR ! 133: .fq ( beginning of sentence ! 134: .fq ) end of sentence ! 135: .fq { beginning of paragraph ! 136: .fq } end of paragraph ! 137: .fq % find matching \f5(){}\fP ! 138: .1C ! 139: .PP ! 140: Adjusting the screen ! 141: .2C ! 142: .fq ^L clear and redraw ! 143: .fq ^R "retype, eliminate \f5@\fR lines ! 144: .fq z redraw, current line at window top ! 145: .fq z- \&... at bottom ! 146: .fq z. \&... at center ! 147: .fq /\fIpat\fP/z- \fIpat\fR line at bottom ! 148: .fz z n use \fIn\fR-line window ! 149: .fq ^E scroll down one line ! 150: .fq ^Y scroll up one line ! 151: .1C ! 152: .PP ! 153: Marking and returning ! 154: .2C ! 155: .fq `` move cursor to previous context ! 156: .fq '' \&... at first nonwhite in line ! 157: .fz m x "mark position with letter \fIx\fR ! 158: .fz ` x move cursor to mark ! 159: .fz ' x \&... at first nonwhite ! 160: .1C ! 161: .PP ! 162: Line positioning ! 163: .2C ! 164: .fq H top line of screen ! 165: .fq L bottom line ! 166: .fq M middle line ! 167: .fq + next line, at first nonwhite ! 168: .fq - previous line, at first nonwhite ! 169: <newline> same as \f5+\fR ! 170: .fq j next line, same column ! 171: .fq k previous line, same column ! 172: .1C ! 173: .PP ! 174: Character positioning ! 175: .2C ! 176: .fq ^ first nonwhite (not CTRL) ! 177: .fq 0 beginning of line ! 178: .fq $ end of line ! 179: .fq l forward ! 180: .fq h backward ! 181: .fq ^L ^H same as \f5l h\fR ! 182: <space> same as \f5l\fR ! 183: .fz f x find \fIx\fR forward ! 184: .fz F x find backward ! 185: .fz t x upto \fIx\fR forward ! 186: .fz T x back upto \fIx\fR ! 187: .fq ; repeat last \f5f F t T\fR ! 188: .fq , opposite of \f5;\fR ! 189: .fq | to specified column ! 190: .fq % find matching \f5(){}\fR ! 191: .1C ! 192: .PP ! 193: Words, sentences, paragraphs ! 194: .2C ! 195: .fq w word forward ! 196: .fq b word backward ! 197: .fq e end of word ! 198: .fq ) next sentence ! 199: .fq ( previous sentence ! 200: .fq } next paragraph ! 201: .fq { previous paragraph ! 202: .fq W blank-delimited word ! 203: .fq B backward to ... ! 204: .fq E to end of ... ! 205: .1C ! 206: .PP ! 207: Corrections ! 208: .2C ! 209: .fq ^H erase last character ! 210: .fq ^W erase last word ! 211: erase your erase, same as \f5^H\fR ! 212: kill your kill, erase this line ! 213: .fq \e quotes your erase or kill ! 214: ESC return to command mode ! 215: .fq ^? interrupt, return to command mode ! 216: .fq ^D backtab over autoindent ! 217: .fq ^V quote nonprinting character ! 218: .1C ! 219: .PP ! 220: Insert and replace ! 221: .2C ! 222: .fq a append after cursor ! 223: .fq A append at end of line ! 224: .fq i insert before cursor ! 225: .fq I insert before first non-blank ! 226: .fq o open below line ! 227: .fq O open above ! 228: .fz r x replace one character ! 229: .fz R text replace characters ! 230: .1C ! 231: .PP ! 232: Operators ! 233: .PP ! 234: .br ! 235: Operators are followed by cursor motion and affect all ! 236: text that would have been moved over: ! 237: .B dw ! 238: deletes a word. ! 239: Double the operator, e.g.\& ! 240: .BR dd , ! 241: to affect whole lines. ! 242: .2C ! 243: .fq d delete ! 244: .fq c change ! 245: .fq y yank lines to buffer ! 246: .fq < left shift ! 247: .fq > right shift ! 248: .fq ! filter through command ! 249: .fq = Lisp indent ! 250: .1C ! 251: .PP ! 252: Miscellaneous operators ! 253: .2C ! 254: .fq C change rest of line (\f5c$\fR) ! 255: .fq D delete rest of line (\f5d$\fR) ! 256: .fq s substitute characters (\f5cd\fR) ! 257: .fq S substitute lines (\f5cc\fR) ! 258: .fq J join lines ! 259: .fq x delete characters (\f5dl\fR) ! 260: .fq X ... before cursor (\f5dh\fR) ! 261: .fq Y yank lines (\f5yy\fR) ! 262: .1C ! 263: .PP ! 264: Yank and put ! 265: .2C ! 266: .fq p put buffer after cursor ! 267: .fq P put buffer before cursor ! 268: \f5"\fI x \f5p\fR put from buffer \fIx\fR ! 269: .fz x y yank to buffer \fIx\fR ! 270: .fz x d delete to buffer \fIx\fR ! 271: .1C ! 272: .PP ! 273: Undo, redo, retrieve ! 274: .2C ! 275: .fq u undo last change ! 276: .fq U restore current line ! 277: .fq . repeat last change ! 278: \f5"\fI n \f5p\fR retrieve \fIn\fR-th last delete ! 279: .1C ! 280: .PP ! 281: Special ex commands ! 282: .PP ! 283: .br ! 284: .I Ex ! 285: understands most ! 286: .I ed ! 287: commands, plus the commands indicated with ! 288: .B : ! 289: in the ! 290: .I vi ! 291: summary, plus the following, shown with their ! 292: shortest possible spellings: ! 293: .PD0 ! 294: .2C ! 295: .BI ab brev ! 296: .BI ar gs ! 297: .BI co py ! 298: .BI map ! 299: .BI ma rk ! 300: .BI n ext ! 301: .BI nu mber ! 302: .BI pre serve ! 303: .BI pu t ! 304: .BI re ad ! 305: .BI rec over ! 306: .BI rew ind ! 307: .BI se t ! 308: .BI sh ell ! 309: .BI so urce ! 310: .BI st op ! 311: .BI una bbrev ! 312: .BI u ndo ! 313: .BI unm ap ! 314: .BI ve rsion ! 315: .BI vi sual ! 316: .BI x it ! 317: .BI ya nk ! 318: .BI z " window" ! 319: .BI < " lshift ! 320: .BI > " rshift ! 321: .BI ^D " scroll ! 322: .1C ! 323: The ! 324: .B set ! 325: command ! 326: controls various options; ! 327: .L set all ! 328: shows the list. ! 329: .SH EXAMPLES ! 330: .2C ! 331: .PD0 ! 332: .TF /\fItext\fR<newline> ! 333: .TP ! 334: .B \(<-\(da\(ua\(-> ! 335: arrow keys move the cursor ! 336: .TP ! 337: .B hjkl ! 338: same as arrow keys ! 339: .TP ! 340: .BI i text\fR<ESC> ! 341: .RI insert " text ! 342: .TP ! 343: .BI cw new\fR<ESC> ! 344: .RI "change word to " new ! 345: .TP ! 346: .B 3dw ! 347: delete 3 words ! 348: .TP ! 349: .B ZZ ! 350: exit, saving changes ! 351: .TP ! 352: .BI / text\fR<newline> ! 353: .RI "search for " text ! 354: .TP ! 355: .B ^U ^D ! 356: scroll up or down ! 357: .1C ! 358: .PD ! 359: .SH FILES ! 360: .TF /usr/lib/ex?.?preserve ! 361: .TP ! 362: .F /usr/lib/ex?.?recover ! 363: recover command ! 364: .TP ! 365: .F /usr/lib/ex?.?preserve ! 366: preserve command ! 367: .TP ! 368: .F /etc/termcap ! 369: describes capabilities of terminals ! 370: .TP ! 371: .F $HOME/.exrc ! 372: editor startup file ! 373: .TP ! 374: .F /tmp/Ex* ! 375: editor temporary ! 376: .TP ! 377: .F /tmp/Rx* ! 378: named buffer temporary ! 379: .TP ! 380: .F /usr/preserve ! 381: preservation directory ! 382: .SH SEE ALSO ! 383: .IR ed (1), ! 384: .IR sam (9.1), ! 385: .IR sed (1) ! 386: .br ! 387: W. Joy and M. Horton, ! 388: `An Introduction to Display Editing with Vi', ! 389: in ! 390: .I ! 391: Unix Programmer's Manual, Seventh Edition, Virtual VAX-11 Version, ! 392: 1980, Vol 2C ! 393: (Berkeley) ! 394: .ig ! 395: .SH BUGS ! 396: The ! 397: .I undo ! 398: command causes all marks to be lost on lines changed and then restored ! 399: if the marked lines were changed. ! 400: .br ! 401: .I Undo ! 402: never clears the buffer modified condition. ! 403: .br ! 404: The ! 405: .I z ! 406: command prints a number of logical rather than physical lines. ! 407: More than a screen full of output may result if long lines are present. ! 408: .br ! 409: File input/output errors don't print a name if the ! 410: .LR - ! 411: option is used. ! 412: .br ! 413: There is no easy way to do a single scan ignoring case. ! 414: .br ! 415: The editor does not warn if text is placed in named buffers and not used ! 416: before exiting the editor. ! 417: .br ! 418: Null characters are discarded in input files, and cannot appear in resultant ! 419: files. ! 420: .br ! 421: Software tabs using ! 422: .B ^T ! 423: work only immediately after the ! 424: .LR autoindent . ! 425: .br ! 426: The ! 427: .L wrapmargin ! 428: option can be fooled since it looks at output columns when blanks are typed. ! 429: If a long word passes through the margin and onto the next line without a ! 430: break, then the line won't be broken. ! 431: .br ! 432: The ! 433: .I source ! 434: command does not work when executed as ! 435: .BR :source ; ! 436: there is no way to use the ! 437: .BR :append , ! 438: .BR :change , ! 439: and ! 440: .BR :insert ! 441: commands in ! 442: .I vi, ! 443: since it is not possible to give ! 444: more than one line of input to a ! 445: .B : ! 446: escape. ! 447: To use these ! 448: on a ! 449: .B :global ! 450: you must ! 451: .B Q ! 452: to ! 453: .I ex ! 454: command mode, ! 455: execute them, and then reenter the screen editor with ! 456: .L vi ! 457: or ! 458: .LR open . ! 459: ..
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.