|
|
1.1 ! root 1: .\" Copyright (c) 1980 Regents of the University of California. ! 2: .\" All rights reserved. The Berkeley software License Agreement ! 3: .\" specifies the terms and conditions for redistribution. ! 4: .\" ! 5: .\" @(#)edittut.ms 6.1 (Berkeley) 5/27/86 ! 6: .\" ! 7: .EH 'USD:14-%''Edit: A Tutorial' ! 8: .OH 'Edit: A Tutorial''USD:14-%' ! 9: .LP ! 10: .ds u \s-2UNIX\s0 ! 11: .ll 5i ! 12: .nr LL 5i ! 13: .ND ! 14: .sp 4 ! 15: .ce ! 16: \f3\s+2Edit: A Tutorial\s0\f1 ! 17: .sp ! 18: .ce 3 ! 19: .I ! 20: Ricki Blau ! 21: .sp ! 22: James Joyce ! 23: .R ! 24: .sp ! 25: .ce 3 ! 26: Computing Services ! 27: University of California ! 28: Berkeley, California 94720 ! 29: .sp 3 ! 30: .ce ! 31: .I ! 32: ABSTRACT ! 33: .R ! 34: .sp ! 35: .LP ! 36: This narrative introduction to the use of the text editor ! 37: .I edit ! 38: assumes no prior familiarity with computers or with text editing. ! 39: Its aim is to lead the beginning \s-2UNIX\(dg\s+2 user through the ! 40: .FS ! 41: \(dgUNIX is a trademark of Bell Laboratories. ! 42: .FE ! 43: fundamental steps of writing and revising a file of text. ! 44: Edit, ! 45: a version of the text editor ! 46: .I ex, ! 47: was designed to provide an informative environment ! 48: for new and casual users. ! 49: .PP ! 50: We welcome comments and suggestions about this tutorial ! 51: and the \s-2UNIX\s+2 documentation in general. ! 52: .sp .5v ! 53: September 1981 ! 54: .bp ! 55: .ll 6.5i ! 56: .nr LL 6.5i ! 57: .nr LT 6.5i ! 58: .ds u \s-2UNIX\s0 ! 59: .ce ! 60: \s+2\f3Contents\f1\s0 ! 61: .LP ! 62: .nf ! 63: Introduction\ \ \ 3 ! 64: .sp ! 65: Session 1\ \ \4 ! 66: .in +.5i ! 67: Making contact with \s-2UNIX\s+2\ \ \ 4 ! 68: Logging in\ \ \4 ! 69: Asking for \fIedit\fR\ \ \ 4 ! 70: The ``Command not found'' message\ \ \ 5 ! 71: A summary\ \ \5 ! 72: Entering text\ \ \ 5 ! 73: Messages from \fIedit\fR\ \ \ 5 ! 74: Text input mode\ \ \ 6 ! 75: Making corrections\ \ \ 6 ! 76: Writing text to disk\ \ \ 7 ! 77: Signing off\ \ \7 ! 78: .in -.5i ! 79: .sp ! 80: Session 2\ \ \ 8 ! 81: .in +.5i ! 82: Adding more text to the file\ \ \ 8 ! 83: Interrupt\ \ \ 8 ! 84: Making corrections\ \ \ 8 ! 85: Listing what's in the buffer (p)\ \ \ 9 ! 86: Finding things in the buffer\ \ \ 9 ! 87: The current line\ \ \ 10 ! 88: Numbering lines (nu)\ \ \ 10 ! 89: Substitute command (s)\ \ \ 10 ! 90: Another way to list what's in the buffer (z)\ \ \ 11 ! 91: Saving the modified text\ \ \ 12 ! 92: .in -.5i ! 93: .sp ! 94: Session 3\ \ \ 13 ! 95: .in +.5i ! 96: Bringing text into the buffer (e)\ \ \ 13 ! 97: Moving text in the buffer (m)\ \ \ 13 ! 98: Copying lines (copy)\ \ \ 14 ! 99: Deleting lines (d)\ \ \ 14 ! 100: A word or two of caution\ \ \ 15 ! 101: Undo (u) to the rescue\ \ \ 15 ! 102: More about the dot (.) and buffer end ($)\ \ \ 16 ! 103: Moving around in the buffer (+ and \-)\ \ \ 16 ! 104: Changing lines (c)\ \ \ 17 ! 105: .in -.5i ! 106: .sp ! 107: Session 4\ \ \ 18 ! 108: .in +.5i ! 109: Making commands global (g)\ \ \ 18 ! 110: More about searching and substituting\ \ \ 19 ! 111: Special characters\ \ \ 19 ! 112: Issuing \s-2UNIX\s+2 commands from the editor\ \ \ 20 ! 113: Filenames and file manipulation\ \ \ 20 ! 114: The file (f) command\ \ \ 20 ! 115: Reading additional files (r)\ \ \ 21 ! 116: Writing parts of the buffer\ \ \ 21 ! 117: Recovering files\ \ \ 21 ! 118: Other recovery techniques\ \ \ 21 ! 119: Further reading and other information\ \ \ 22 ! 120: Using \fIex\fR\ \ \ 22 ! 121: .in -.5i ! 122: .sp ! 123: Index\ \ \ 23 ! 124: .bp ! 125: .SH ! 126: .ce ! 127: \s+2Introduction\s0 ! 128: .PP ! 129: Text editing using a terminal connected to a computer ! 130: allows you to create, modify, and print text ! 131: easily. ! 132: A ! 133: .I ! 134: text editor ! 135: .R ! 136: is a program ! 137: that assists you ! 138: as you create and modify text. ! 139: The text editor you will learn here is named ! 140: .I edit. ! 141: Creating text using edit is as easy as typing it ! 142: on an electric typewriter. ! 143: Modifying text involves telling the text editor ! 144: what you want to add, change, or delete. ! 145: You can review your text ! 146: by typing a command ! 147: to print the file contents ! 148: as they are currently. ! 149: Another program (which we do not discuss in this ! 150: document), a text formatter, ! 151: rearranges your text ! 152: for you into ``finished form.'' ! 153: .PP ! 154: These lessons assume no prior familiarity with computers ! 155: or with text editing. ! 156: They consist of a series of text editing sessions ! 157: which lead you through the fundamental steps ! 158: of creating and revising text. ! 159: After scanning each lesson and before beginning the next, ! 160: you should try the examples at a terminal to get a feeling ! 161: for the actual process of text editing. ! 162: If you set aside some time for experimentation, ! 163: you will soon become familiar with using the ! 164: computer to write and modify text. ! 165: In addition to the actual use of the text editor, ! 166: other features of \s-2UNIX\s0 will be very important to your work. ! 167: You can begin to ! 168: learn about these other features by ! 169: reading one of the other tutorials ! 170: that provide a general introduction to the system. ! 171: You will be ready to proceed with this lesson as soon as ! 172: you are familiar with (1) your terminal and its special keys, ! 173: (2) how to login, ! 174: (3) and the ways of correcting typing errors. ! 175: Let's first define some terms: ! 176: .sp .5 ! 177: .IP program 12 ! 178: A set of instructions, given to the computer, ! 179: describing the sequence of steps the computer performs ! 180: in order to accomplish a specific task. ! 181: The task must be specific, ! 182: such as balancing your checkbook ! 183: or editing your text. ! 184: A general task, ! 185: such as working for world peace, ! 186: is something we can all do, ! 187: but not something we can currently write programs to do. ! 188: .IP UNIX ! 189: \s-2UNIX\s0 is a special type of program, ! 190: called an operating system, that supervises the machinery ! 191: and all other programs comprising the total ! 192: computer system. ! 193: .IP edit ! 194: .I edit ! 195: is the name of the \s-2UNIX\s0 text editor you will be learning to use, ! 196: and is a program that aids you in writing or revising text. ! 197: Edit was designed for beginning users, ! 198: and is a simplified version of an editor named ! 199: .I ex. ! 200: .IP file ! 201: Each \s-2UNIX\s0 account is allotted ! 202: space for the permanent storage of information, ! 203: such as programs, data or text. ! 204: A file is a logical unit of data, ! 205: for example, an essay, a program, ! 206: or a chapter from a book, ! 207: which is stored on a computer system. ! 208: Once you create a file, ! 209: it is kept until you instruct the system to remove it. ! 210: You may create a file during one \s-2UNIX\s0 session, ! 211: end the session, ! 212: and return to use it at a later time. ! 213: Files contain anything you choose to write and store in them. ! 214: The sizes of files vary to suit your needs; ! 215: one file might hold only a single number, ! 216: yet another might contain ! 217: a very long document or program. ! 218: The only way to save ! 219: information from one session to the next is to store it in a file, ! 220: which you will learn in Session 1. ! 221: .IP filename ! 222: Filenames are used to distinguish one file from another, ! 223: serving the same purpose as the labels of manila ! 224: folders in a file cabinet. ! 225: In order to write or access information in a file, ! 226: you use the name of that file in a \s-2UNIX\s0 command, ! 227: and the system will automatically locate the file. ! 228: .IP disk ! 229: Files are stored on an input/output device called a disk, ! 230: which looks something like a stack of phonograph records. ! 231: Each surface is coated with a material similar to that ! 232: on magnetic recording tape, ! 233: and information is recorded on it. ! 234: .IP buffer ! 235: A temporary work space, made available to the user ! 236: for the duration of a session of text editing ! 237: and used for creating and modifying ! 238: the text file. ! 239: We can think of the buffer as a blackboard that is ! 240: erased after each class, where each session with the editor ! 241: is a class. ! 242: .bp ! 243: .SH ! 244: .ce 1 ! 245: \s+2Session 1\s0 ! 246: .sp 1 ! 247: .SH ! 248: Making contact with \s-1UNIX\s0 ! 249: .PP ! 250: To use the editor you must first make contact with the computer ! 251: by logging in to \s-2UNIX\s0. ! 252: We'll quickly review the standard \s-2UNIX\s0 login procedure ! 253: for the two ways you can make contact: ! 254: on a terminal that is directly linked to the computer, ! 255: or over a telephone line where the computer answers your call. ! 256: .SH ! 257: Directly-linked terminals ! 258: .PP ! 259: Turn on your terminal and press the \s-1RETURN\s0 key. ! 260: You are now ready to login. ! 261: .SH ! 262: Dial-up terminals ! 263: .PP ! 264: If your terminal connects with the computer over a telephone line, ! 265: turn on the terminal, dial the system access number, ! 266: and, when you hear a high-pitched tone, place the ! 267: telephone handset in the acoustic coupler, if you are using one. ! 268: You are now ready to login. ! 269: .SH ! 270: Logging in ! 271: .PP ! 272: The message inviting you to login is: ! 273: .DS I 1i ! 274: login: ! 275: .DE ! 276: .LP ! 277: Type your login name, which identifies you to \s-2UNIX\s0, ! 278: on the same line as the login message, ! 279: and press \s-2RETURN\s+2. ! 280: If the terminal you are using ! 281: has both upper and lower case, ! 282: .B ! 283: be sure you enter your login name in lower case; ! 284: .R ! 285: otherwise \s-2UNIX\s0 assumes your terminal ! 286: has only upper case and will not recognize lower case ! 287: letters you may type. ! 288: \s-2UNIX\s0 types ``login:'' and you reply ! 289: with your login name, for example ``susan'': ! 290: .DS I 1i ! 291: login: \fBsusan\fR \fI(and press the \s-2RETURN\s0 key)\fR ! 292: .DE ! 293: (In the examples, input you would type appears in ! 294: .B "bold face" ! 295: to distinguish it from the responses from \s-2UNIX\s0.) ! 296: .PP ! 297: \s-2UNIX\s0 will next respond with a request for a password ! 298: as an additional precaution to prevent ! 299: unauthorized people from using your account. ! 300: The password will not appear when you type it, ! 301: to prevent others from seeing it. ! 302: The message is: ! 303: .DS I 1i ! 304: Password: \fI(type your password and press \s-2RETURN\s+2)\fR ! 305: .DE ! 306: If any of the information you gave during the login ! 307: sequence was mistyped or incorrect, ! 308: \s-2UNIX\s0 will respond with ! 309: .DS I 1i ! 310: Login incorrect. ! 311: .if t .sp .2v ! 312: .if n .sp 1 ! 313: login: ! 314: .DE ! 315: in which case you should start the login process anew. ! 316: Assuming that you have successfully ! 317: logged in, \s-2UNIX\s0 ! 318: will print the message of the day and eventually will present ! 319: you with a % at the beginning of a fresh line. ! 320: The % is the \s-2UNIX\s0 prompt symbol ! 321: which tells you that \s-2UNIX\s0 is ready to accept a command. ! 322: .bd I 3 ! 323: .SH ! 324: Asking for \fIedit\fP ! 325: .fl ! 326: .bd I ! 327: .PP ! 328: You are ready to tell \s-2UNIX\s0 that you ! 329: want to work with edit, the text editor. ! 330: Now is a convenient time to choose ! 331: a name for the file of text you are about to create. ! 332: To begin your editing session, ! 333: type ! 334: .B edit ! 335: followed by a space and then the filename ! 336: you have selected; for example, ``text''. ! 337: After that, ! 338: press the \s-2RETURN\s0 key and wait for edit's response: ! 339: .DS I 1i ! 340: % \fBedit text\fP \fI(followed by a \s-2RETURN\s+2)\fR ! 341: "text" No such file or directory ! 342: : ! 343: .DE ! 344: If you typed the command correctly, ! 345: you will now be in communication with edit. ! 346: Edit has set aside a buffer for use as ! 347: a temporary working space during your current editing session. ! 348: Since ``text'' is a new file we are about to create ! 349: the editor was unable to find that file, which it ! 350: confirms by saying: ! 351: .DS I 1i ! 352: "text" No such file or directory ! 353: .DE ! 354: On the next line appears edit's prompt ``:'', ! 355: announcing that you are in \f2command mode\f1 and ! 356: edit expects a command from you. ! 357: You may now begin to create the new file. ! 358: .SH ! 359: The ``Command not found'' message ! 360: .PP ! 361: If you misspelled edit by typing, say, ``editor'', ! 362: this might appear: ! 363: .DS I 1i ! 364: % \fBeditor\fP ! 365: editor: Command not found ! 366: % ! 367: .DE ! 368: Your mistake in calling edit ``editor'' was ! 369: treated by \s-2UNIX\s0 as a request ! 370: for a program named ``editor''. ! 371: Since there is no program ! 372: named ``editor'', ! 373: \s-2UNIX\s0 reported that the program was ``not found''. ! 374: A new % indicates that \s-2UNIX\s0 is ready for another command, ! 375: and you may then enter the correct command. ! 376: .SH ! 377: A summary ! 378: .PP ! 379: Your exchange with \s-2UNIX\s0 as you logged in and made contact with edit ! 380: should look something like this: ! 381: .DS I 1i ! 382: login: \fBsusan\fP ! 383: Password: ! 384: \&... A Message of General Interest ... ! 385: % \fBedit text\fP ! 386: "text" No such file or directory ! 387: : ! 388: .DE ! 389: .SH ! 390: Entering text ! 391: .PP ! 392: You may now begin entering text into the buffer. ! 393: This is done by \fIappending\fP (or adding) text to whatever ! 394: is currently in the buffer. ! 395: Since there is nothing in the buffer at the moment, ! 396: you are appending text to nothing; ! 397: in effect, ! 398: since you are adding text to nothing ! 399: you are creating text. ! 400: Most edit commands have two equivalent forms: ! 401: a word that suggests what the command does, ! 402: and a shorter abbreviation of that word. ! 403: Many beginners find the full command names ! 404: easier to remember at first, ! 405: but once you are familiar with editing you may ! 406: prefer to type the shorter abbreviations. ! 407: The command to input text is ``append''. ! 408: (It may be abbreviated ``a''.) ! 409: Type ! 410: .B append ! 411: and press the \s-2RETURN\s0 key. ! 412: .DS I 1i ! 413: % \fBedit text ! 414: \fR:\|\fBappend ! 415: .R ! 416: .DE ! 417: .SH ! 418: .bd I 3 ! 419: Messages from ! 420: .I edit ! 421: .fl ! 422: .bd I ! 423: .PP ! 424: If you make a mistake in entering a command and ! 425: type something that edit does not recognize, ! 426: edit will respond with a message ! 427: intended to help you diagnose your error. ! 428: For example, if you misspell the command to input text by typing, ! 429: perhaps, ``add'' instead of ``append'' or ``a'', ! 430: you will receive this message: ! 431: .DS I 1i ! 432: :\|\fBadd\fR ! 433: add: Not an editor command ! 434: : ! 435: .DE ! 436: When you receive a diagnostic message, ! 437: check what you typed in order to determine what ! 438: part of your command confused edit. ! 439: The message above means that edit ! 440: was unable to recognize your mistyped command ! 441: and, therefore, did not execute it. ! 442: Instead, a new ``:'' ! 443: appeared to let you know that ! 444: edit is again ready to execute a command. ! 445: .SH ! 446: Text input mode ! 447: .PP ! 448: By giving the command ``append'' (or using the abbreviation ``a''), ! 449: you entered ! 450: .I ! 451: text input mode, ! 452: .R ! 453: also known as ! 454: .I ! 455: append mode. ! 456: .R ! 457: When you enter text input mode, ! 458: edit stops sending you a prompt. ! 459: You will not receive any prompts ! 460: or error messages ! 461: while in text input mode. ! 462: You can enter ! 463: pretty much anything you want on the lines. ! 464: The lines are transmitted one by one to the buffer ! 465: and held there during the editing session. ! 466: You may append as much text as you want, and ! 467: .I ! 468: when you wish to stop entering text lines you should ! 469: type a period as the only character on the line ! 470: and press the \s-2RETURN\s0 key. ! 471: .R ! 472: When you type the period and press \s-2RETURN\s0, ! 473: you signal that you want to stop appending text, ! 474: and edit responds by allowing ! 475: you to exit text input mode and reenter command mode. ! 476: Edit will again ! 477: prompt you for a command by printing ``:''. ! 478: .PP ! 479: Leaving append mode does not destroy the text in ! 480: the buffer. ! 481: You have to leave append ! 482: mode to do any of the other kinds of editing, ! 483: such as changing, adding, or printing text. ! 484: If you type a period as the first character and ! 485: type any other character on the same line, ! 486: edit will believe you want to remain in append mode ! 487: and will not let you out. ! 488: As this can be very frustrating, ! 489: be sure to type ! 490: .B only ! 491: the period and the \s-2RETURN\s0 key. ! 492: .PP ! 493: This is a good place to learn an important ! 494: lesson about computers and text: a blank space is ! 495: a character as far as a computer is concerned. ! 496: If you so much as type a period followed by a blank ! 497: (that is, type a period and then the space bar on the keyboard), ! 498: you will remain in append mode with the last line of text ! 499: being: ! 500: .DS I 1i ! 501: .B ! 502: .ps +2 ! 503: \&. ! 504: .ps -2 ! 505: .R ! 506: .DE ! 507: Let's say that you enter the lines ! 508: (try to type ! 509: .B exactly ! 510: what you see, including ``thiss''): ! 511: .DS I 1i ! 512: .B ! 513: This is some sample text. ! 514: And thiss is some more text. ! 515: Text editing is strange, but nice. ! 516: \&. ! 517: .R ! 518: .DE ! 519: The last line is the period followed by a \s-2RETURN\s0 ! 520: that gets you out of append mode. ! 521: .SH ! 522: Making corrections ! 523: .PP ! 524: If you have read a general introduction to \s-2UNIX\s0, ! 525: you will recall that it is possible to erase individual ! 526: letters that you have typed. ! 527: This is done by typing the designated erase character ! 528: as many times as there are characters ! 529: you want to erase. ! 530: .PP ! 531: The usual erase character varies from place to place and ! 532: user to user. Often it ! 533: is the backspace (control-H), ! 534: so you can correct typing errors ! 535: in the line you are typing ! 536: by holding down the \s-1CTRL\s+1 key ! 537: and typing the ``H'' key. (Sometimes it is the DEL key.) ! 538: If you type the erase character ! 539: you will notice ! 540: that the terminal backspaces in the line you are on. ! 541: You can backspace over your error, ! 542: and then type what you want to be the rest of the line. ! 543: .PP ! 544: If you make a bad start ! 545: in a line ! 546: and would like to begin again, ! 547: you can either backspace to the beginning of the line ! 548: or you can use the at-sign ``@'' to erase everything on the line: ! 549: .DS I 1i ! 550: .B ! 551: Text edtiing is strange, but@ ! 552: Text editing is strange, but nice. ! 553: .R ! 554: .fl ! 555: .bd S ! 556: .DE ! 557: When you type the at-sign (@), you erase ! 558: the entire line typed so far ! 559: and are given a fresh line to type on. ! 560: You may immediately begin to retype the line. ! 561: This, unfortunately, does not work after you type the ! 562: line and press \s-2RETURN\s+2. ! 563: To make corrections in lines that have been completed, ! 564: it is necessary to use the editing commands ! 565: covered in the next sessions. ! 566: .SH ! 567: Writing text to disk ! 568: .PP ! 569: You are now ready to edit the text. One common operation ! 570: is to write the text to disk as a file for safekeeping ! 571: after the session is over. ! 572: This is the only way to save information from one session to the next, ! 573: since the editor's buffer is temporary and will last only until the ! 574: end of the editing session. ! 575: Learning how to write a file to disk is second in ! 576: importance only to entering the text. ! 577: To write the contents of the buffer to a disk ! 578: file, use the command ``write'' ! 579: (or its abbreviation ``w''): ! 580: .DS I 1i ! 581: :\|\fBwrite ! 582: .R ! 583: .DE ! 584: Edit will copy the contents of the buffer to a disk file. ! 585: If the file does not yet exist, ! 586: a new file will be created automatically ! 587: and the presence of a ``[New file]'' will be noted. ! 588: The newly-created file will be given the name specified when ! 589: you entered the editor, in this case ``text''. ! 590: To confirm that the disk file has been successfully written, ! 591: edit will repeat the filename and give ! 592: the number of lines and the total ! 593: number of characters in the file. ! 594: The buffer remains unchanged by the ``write'' command. ! 595: All of the lines that were written to disk will still be ! 596: in the buffer, ! 597: should you want to modify or add to them. ! 598: .PP ! 599: Edit must have a name for the file to be written. ! 600: If you forgot to indicate the name of the file ! 601: when you began to edit, ! 602: edit will print in response to your write command: ! 603: .DS I 1i ! 604: No current filename ! 605: .DE ! 606: If this happens, you can specify the filename in a new write command: ! 607: .DS I 1i ! 608: :\|\fBwrite text ! 609: .R ! 610: .DE ! 611: After the ``write'' (or ``w''), type a space and then the name of the file. ! 612: .SH ! 613: Signing off ! 614: .PP ! 615: We have done enough for this first lesson on using the ! 616: \s-2UNIX\s0 text editor, and are ready to quit the session with edit. ! 617: To do this we type ``quit'' (or ``q'') and press \s-2RETURN\s+2: ! 618: .DS I 1i ! 619: :\|\fBwrite ! 620: .R ! 621: "text" [New file] 3 lines, 90 characters ! 622: :\|\fBquit\fR ! 623: % ! 624: .DE ! 625: The % is from \s-2UNIX\s0 to tell you that your session with edit is ! 626: over and you may command \s-2UNIX\s0 further. ! 627: Since we want ! 628: to end the entire session at the terminal, we also need to ! 629: exit from \s-2UNIX\s0. ! 630: In response to the \s-2UNIX\s0 prompt of ``\|%\|'' ! 631: type the command ! 632: .DS I 1i ! 633: %\|\fBlogout\fR ! 634: .DE ! 635: This will end your session with \s-2UNIX\s0, and will ready the ! 636: terminal for the next user. ! 637: It is always important to type \fBlogout\fR at the end of a session ! 638: to make absolutely sure no one ! 639: could accidentally stumble into your abandoned ! 640: session and thus gain access to your files, ! 641: tempting even the most honest of souls. ! 642: .sp 1 ! 643: .PP ! 644: This is the end of the first session on \s-2UNIX\s0 text editing. ! 645: .bp ! 646: .TL ! 647: Session 2 ! 648: .sp ! 649: .PP ! 650: Login with \s-2UNIX\s0 as in the first session: ! 651: .DS I 1i ! 652: login: \fBsusan\fP \fI(carriage return)\fR ! 653: Password: \fI(give password and carriage return)\fR ! 654: .if t .sp .2v ! 655: .if n .sp 1 ! 656: \&... A Message of General Interest ... ! 657: % ! 658: .DE ! 659: When you indicate you want to edit, ! 660: you can specify the name of the file you worked on last time. ! 661: This will ! 662: start edit working, and it will fetch the contents of the ! 663: file into the buffer, so that you can resume editing the same file. ! 664: When edit has copied the file into the buffer, it ! 665: will repeat its name and tell ! 666: you the number of lines and characters it contains. ! 667: Thus, ! 668: .DS I 1i ! 669: .B ! 670: % edit text ! 671: .R ! 672: "text" 3 lines, 90 characters ! 673: : ! 674: .DE ! 675: means you asked edit to fetch ! 676: the file named ``text'' for editing, ! 677: causing it to copy the ! 678: 90 characters of text into the buffer. ! 679: Edit awaits ! 680: your further instructions, ! 681: and indicates this by its prompt character, the colon (:). ! 682: In this session, we will append more text to our file, ! 683: print the contents of the buffer, and learn to change the text of a line. ! 684: .SH ! 685: Adding more text to the file ! 686: .PP ! 687: If you want to add more to the end of your ! 688: text you may do so by using the append command to enter text input mode. ! 689: When ``append'' is the first command ! 690: of your editing session, ! 691: the lines you enter ! 692: are placed at the end of the buffer. ! 693: Here we'll use the abbreviation for the append command, ``a'': ! 694: .DS I 1i ! 695: :\|\fBa ! 696: This is text added in Session 2. ! 697: It doesn't mean much here, but ! 698: it does illustrate the editor. ! 699: \|\fB\s+2\&.\s-2 ! 700: .R ! 701: .DE ! 702: You may recall that once you enter append mode ! 703: using the ``a'' (or ``append'') command, ! 704: you need to type a line containing only a period (.) ! 705: to exit append mode. ! 706: .SH ! 707: Interrupt ! 708: .PP ! 709: Should you press the \s-2RUB\s+2 key (sometimes labelled \s-2DELETE\s+2) ! 710: while working with edit, ! 711: it will send this message to you: ! 712: .DS I 1i ! 713: Interrupt ! 714: : ! 715: .DE ! 716: Any command that edit might be executing ! 717: is terminated by rub or delete, ! 718: causing edit to prompt you for a new command. ! 719: If you are appending text at the time, ! 720: you will exit from append mode ! 721: and be expected to give another command. ! 722: The line of text you were typing ! 723: when the append command was interrupted ! 724: will not be entered into the buffer. ! 725: .SH ! 726: Making corrections ! 727: .PP ! 728: If while typing the line you hit an incorrect key, ! 729: recall that ! 730: you may delete the incorrect character ! 731: or cancel the entire line of input by erasing in the usual way. ! 732: Refer either ! 733: to the last few pages of Session 1 ! 734: if you need to review ! 735: the procedures for making a correction. ! 736: The most important idea to remember is that ! 737: erasing a character or cancelling a line must be done ! 738: before you press the \s-2RETURN\s+2 key. ! 739: .SH ! 740: Listing what's in the buffer (p) ! 741: .PP ! 742: Having appended text to what you wrote in Session 1, ! 743: you might want to see all the lines in the buffer. ! 744: To print the contents of the buffer, type the command: ! 745: .DS I 1i ! 746: :\|\fB1,$p ! 747: .R ! 748: .DE ! 749: The ``1''\(dg ! 750: .FS ! 751: \(dgThe numeral ``one'' is the top left-most key, ! 752: and should not be confused with the letter ``el''. ! 753: .FE ! 754: stands for line 1 of the buffer, ! 755: the ``$'' is a special symbol designating the last line ! 756: of the buffer, ! 757: and ``p'' (or \fBprint\fR) is the command to print from line 1 ! 758: to the end of the buffer. ! 759: The command ``1,$p'' gives you: ! 760: .DS I 1i ! 761: This is some sample text. ! 762: And thiss is some more text. ! 763: Text editing is strange, but nice. ! 764: This is text added in Session 2. ! 765: It doesn't mean much here, but ! 766: it does illustrate the editor. ! 767: .DE ! 768: Occasionally, you may accidentally ! 769: type a character that can't be printed, ! 770: which can be done by striking a key ! 771: while the \s-2CTRL\s0 key is pressed. ! 772: In printing lines, edit uses a special notation to ! 773: show the existence of non-printing characters. ! 774: Suppose you had introduced the non-printing character ``control-A'' ! 775: into the word ``illustrate'' ! 776: by accidently pressing the \s-2CTRL\s0 key while ! 777: typing ``a''. ! 778: This can happen on many terminals ! 779: because the \s-2CTRL\s+2 key and the ``A'' key ! 780: are beside each other. ! 781: If your finger presses between the two keys, ! 782: control-A results. ! 783: When asked to print the contents of the buffer, ! 784: edit would display ! 785: .DS I 1i ! 786: it does illustr^Ate the editor. ! 787: .DE ! 788: To represent the control-A, edit shows ``^A''. ! 789: The sequence ``^'' followed by a capital ! 790: letter stands for the one character ! 791: entered by holding down the \s-2CTRL\s0 key and typing the letter ! 792: which appears after the ``^''. ! 793: We'll soon discuss the commands that can be used ! 794: to correct this typing error. ! 795: .PP ! 796: In looking over the text we see that ! 797: ``this'' is typed as ``thiss'' in the second line, ! 798: a deliberate error so we can learn to make corrections. ! 799: Let's correct the spelling. ! 800: .SH ! 801: Finding things in the buffer ! 802: .PP ! 803: In order to change something in the buffer we first need to ! 804: find it. ! 805: We can find ``thiss'' in the text we have ! 806: entered by looking at a listing ! 807: of the lines. ! 808: Physically speaking, we search the lines ! 809: of text looking for ``thiss'' and stop searching when ! 810: we have found it. ! 811: The way to tell edit to search for something ! 812: is to type it inside slash marks: ! 813: .DS I 1i ! 814: :\|\fB/thiss/ ! 815: .R ! 816: .DE ! 817: By typing ! 818: .B /thiss/ ! 819: and pressing \s-1RETURN\s0, ! 820: you instruct edit to search for ``thiss''. ! 821: If you ask edit to look for a pattern of characters ! 822: which it cannot find in the buffer, ! 823: it will respond ``Pattern not found''. ! 824: When edit finds ! 825: the characters ``thiss'', it will print the line of text ! 826: for your inspection: ! 827: .DS I 1i ! 828: And thiss is some more text. ! 829: .DE ! 830: Edit is now positioned in the buffer at the ! 831: line it just printed, ! 832: ready to make a change in the line. ! 833: .bp ! 834: .SH ! 835: The current line ! 836: .PP ! 837: Edit keeps track of the line in the buffer where it is located ! 838: at all times during an editing session. ! 839: In general, the line that has been most recently ! 840: printed, entered, or changed ! 841: is the current location in the buffer. ! 842: The editor is prepared to make changes ! 843: at the current location in the buffer, ! 844: unless you direct it to another location. ! 845: .PP ! 846: In particular, ! 847: when you bring a file into the buffer, ! 848: you will be located at the last line in the file, ! 849: where the editor left off copying the lines ! 850: from the file to the buffer. ! 851: If your first editing command is ``append'', ! 852: the lines you enter are added ! 853: to the end of the file, ! 854: after the current line \(em ! 855: the last line in the file. ! 856: .PP ! 857: You can refer to your current location in the buffer by the ! 858: symbol ! 859: period (.) usually known by the name ``dot''. ! 860: If you type ``.'' and carriage ! 861: return you will be instructing edit to print the current line: ! 862: .DS I 1i ! 863: :\|\fB\s+2\&.\s-2 ! 864: .R ! 865: And thiss is some more text. ! 866: .DE ! 867: .PP ! 868: If you want to know the number of the current line, ! 869: you can type ! 870: .B \&.= ! 871: and press \s-2RETURN\s+2, ! 872: and edit will respond with the line number: ! 873: .DS I 1i ! 874: :\|\fB\s+2.\s-2= ! 875: .R ! 876: 2 ! 877: .DE ! 878: If you type the number of any line and press \s-2RETURN\s+2, ! 879: edit will position you at that line and ! 880: print its contents: ! 881: .DS I 1i ! 882: :\|\fB2 ! 883: .R ! 884: And thiss is some more text. ! 885: .DE ! 886: You should experiment with these commands ! 887: to gain experience in using them to make changes. ! 888: .SH ! 889: Numbering lines (nu) ! 890: .PP ! 891: The ! 892: .B ! 893: number (nu) ! 894: .R ! 895: command is similar to print, ! 896: giving both the number and the text of each printed line. ! 897: To see the number and the text of the current line type ! 898: .DS I 1i ! 899: :\|\fBnu ! 900: .R ! 901: \0\0\0\0\02\0\0And thiss is some more text. ! 902: .DE ! 903: Note that the shortest abbreviation for the number command is ! 904: ``nu'' (and not ``n'', which is used for a different command). ! 905: You may specify a range of lines ! 906: to be listed by the number command in the same way that lines ! 907: are specified for print. ! 908: For example, \f31,$nu\f1 lists all lines in the buffer with their ! 909: corresponding line numbers. ! 910: .SH ! 911: Substitute command (s) ! 912: .PP ! 913: Now that you have found the misspelled word, ! 914: you can change it from ``thiss'' to ``this''. ! 915: As far as edit is concerned, ! 916: changing things is a matter of ! 917: substituting one thing for another. ! 918: As ! 919: .I a ! 920: stood for ! 921: .I append, ! 922: so ! 923: .I s ! 924: stands for ! 925: .I substitute. ! 926: We will use the abbreviation ``s'' to reduce the chance ! 927: of mistyping the substitute command. ! 928: This command will instruct edit to make the change: ! 929: .DS I 1i ! 930: \f32s/thiss/this/\f1 ! 931: .DE ! 932: We first indicate the line to be changed, line 2, ! 933: and then ! 934: type an ``s'' to indicate we want ! 935: edit to make a substitution. ! 936: Inside the first set of slashes ! 937: are the characters that we want to change, ! 938: followed by the characters to replace them, ! 939: and then a closing slash mark. ! 940: To summarize: ! 941: .DS I 1i ! 942: 2s/ \fIwhat is to be changed\fR / \fIwhat to change it to \fR/ ! 943: .DE ! 944: If edit finds an exact match of the characters to be ! 945: changed it will make the change ! 946: .B only ! 947: in the first occurrence of the characters. ! 948: If it does not find the characters ! 949: to be changed, it will respond: ! 950: .DS I 1i ! 951: Substitute pattern match failed ! 952: .DE ! 953: indicating that your instructions could not be carried out. ! 954: When edit does find the characters that you want to change, ! 955: it will make the substitution and automatically print ! 956: the changed line, so that you can check that the correct substitution ! 957: was made. ! 958: In the example, ! 959: .DS I 1i ! 960: :\|\fB2s/thiss/this/ ! 961: .R ! 962: And this is some more text. ! 963: .DE ! 964: line 2 (and line 2 only) will be searched for the characters ! 965: ``thiss'', and when the first exact match is found, ``thiss'' ! 966: will be changed to ``this''. ! 967: Strictly speaking, it was not necessary above to ! 968: specify the number of the line to be changed. ! 969: In ! 970: .DS I 1i ! 971: :\|\fBs/thiss/this/ ! 972: .R ! 973: .DE ! 974: edit will assume that we mean to change ! 975: the line where we are currently located (``.''). ! 976: In this case, ! 977: the command without a line number would have produced the same result ! 978: because we were already located ! 979: at the line we wished to change. ! 980: .PP ! 981: For another illustration of the substitute command, ! 982: let us choose the line: ! 983: .DS I 1i ! 984: Text editing is strange, but nice. ! 985: .DE ! 986: You can make this line a bit more positive ! 987: by taking out the characters ``strange, but\ '' so the line ! 988: reads: ! 989: .DS I 1i ! 990: Text editing is nice. ! 991: .DE ! 992: A command that will first position edit at the desired line ! 993: and then make the substitution is: ! 994: .DS I 1i ! 995: :\|\fB/strange/s/strange, but // ! 996: .R ! 997: .DE ! 998: .LP ! 999: What we have done here is combine our search with ! 1000: our substitution. ! 1001: Such combinations are perfectly legal, ! 1002: and speed up editing quite a bit ! 1003: once you get used to them. ! 1004: That is, you do not necessarily have to use ! 1005: line numbers to identify a line to edit. ! 1006: Instead, you may identify the line you want to change ! 1007: by asking edit to search for a specified pattern of letters ! 1008: that occurs in that line. ! 1009: The parts of the above command are: ! 1010: .TS ! 1011: .in +1i ! 1012: .nr 35 \n(.u ! 1013: .nf ! 1014: .ds #d .d ! 1015: .if \(ts\n(.z\(ts\(ts .ds #d nl ! 1016: .nr 80 0 ! 1017: .nr 38 \w\f3/strange/\fP ! 1018: .if \n(80<\n(38 .nr 80 \n(38 ! 1019: .nr 38 \w\f3s\fP ! 1020: .if \n(80<\n(38 .nr 80 \n(38 ! 1021: .nr 38 \w\f3/strange, but //\fP ! 1022: .if \n(80<\n(38 .nr 80 \n(38 ! 1023: .nr 81 0 ! 1024: .nr 38 \wtells edit to find the characters ``strange'' in the text ! 1025: .if \n(81<\n(38 .nr 81 \n(38 ! 1026: .nr 38 \wtells edit to make a substitution ! 1027: .if \n(81<\n(38 .nr 81 \n(38 ! 1028: .nr 38 \wsubstitutes nothing at all for the characters ``strange, but '' ! 1029: .if \n(81<\n(38 .nr 81 \n(38 ! 1030: .nr 38 1n ! 1031: .nr 79 0 ! 1032: .nr 40 \n(79+(0*\n(38) ! 1033: .nr 80 +\n(40 ! 1034: .nr 41 \n(80+(3*\n(38) ! 1035: .nr 81 +\n(41 ! 1036: .nr TW \n(81 ! 1037: .if t .if (\n(TW+\n(.o)>7.75i .tm Table at line 307 file ed2.tbl is too wide - \n(TW units ! 1038: .fc ! 1039: .nr #T 0 ! 1040: .eo ! 1041: .de T# ! 1042: .ds #d .d ! 1043: .if \(ts\n(.z\(ts\(ts .ds #d nl ! 1044: .mk ## ! 1045: .nr ## -1v ! 1046: .. ! 1047: .ec ! 1048: .ta \n(80u \n(81u ! 1049: \&\h'|\n(40u'\f3/strange/\fP\h'|\n(41u'tells edit to find the characters ``strange'' in the text ! 1050: .ta \n(80u \n(81u ! 1051: \&\h'|\n(40u'\f3s\fP\h'|\n(41u'tells edit to make a substitution ! 1052: .ta \n(80u \n(81u ! 1053: \&\h'|\n(40u'\f3/strange, but //\fP\h'|\n(41u'substitutes nothing at all for the characters ``strange, but '' ! 1054: .fc ! 1055: .nr T. 1 ! 1056: .T# 1 ! 1057: .if \n(35>0 .fi ! 1058: .in -1i ! 1059: .TE ! 1060: .PP ! 1061: You should note the space after ``but'' in ``/strange, but /''. ! 1062: If you do not indicate that the space is to be taken out, ! 1063: your line will read: ! 1064: .DS I 1i ! 1065: .if t Text editing is nice. ! 1066: .if n Text editing is nice. ! 1067: .DE ! 1068: which looks a little funny ! 1069: because of the extra space between ``is'' and ``nice''. ! 1070: Again, we realize from this that a blank space ! 1071: is a real character to a computer, and in editing text ! 1072: we need to be aware of spaces ! 1073: within a line just as we would be aware of an ``a'' or ! 1074: a ``4''. ! 1075: .SH ! 1076: Another way to list what's in the buffer (z) ! 1077: .PP ! 1078: Although the print command is useful for looking at specific lines ! 1079: in the buffer, ! 1080: other commands may be more convenient for ! 1081: viewing large sections of text. ! 1082: You can ask to see a screen full of text at a time ! 1083: by using the command ! 1084: .B z. ! 1085: If you type ! 1086: .DS I 1i ! 1087: :\|\fB1z ! 1088: .R ! 1089: .DE ! 1090: edit will start with line 1 and continue printing lines, ! 1091: stopping either when the screen of ! 1092: your terminal is full ! 1093: or when the last line in the buffer has been printed. ! 1094: If you want to read the next segment of text, type the command ! 1095: .DS I 1i ! 1096: :\|\fBz ! 1097: .DE ! 1098: If no starting line number is given for the z command, ! 1099: printing will start at the ``current'' line, in this case the ! 1100: last line printed. ! 1101: Viewing lines in the buffer one screen full at a time ! 1102: is known as \fIpaging\fR. ! 1103: Paging can also be used to print ! 1104: a section of text on a hard-copy terminal. ! 1105: .SH ! 1106: Saving the modified text ! 1107: .PP ! 1108: This seems to be a good place to pause in our work, ! 1109: and so we should end the second session. ! 1110: If you (in haste) type ``q'' to quit the session ! 1111: your dialogue with edit will be: ! 1112: .DS I 1i ! 1113: :\|\fBq ! 1114: .R ! 1115: No write since last change (:quit! overrides) ! 1116: : ! 1117: .DE ! 1118: This is edit's warning that you have not written ! 1119: the modified contents of the buffer to disk. ! 1120: You run the risk of losing the work you did ! 1121: during the editing session since you typed the latest write ! 1122: command. ! 1123: Because in this lesson we have not written ! 1124: to disk at all, everything we have done ! 1125: would have been lost ! 1126: if edit had obeyed the \fBq\fR command. ! 1127: If you did not want to save the work done during ! 1128: this editing session, you would have to type ``q!'' ! 1129: or (``quit!'') ! 1130: to confirm that you indeed wanted to end the session ! 1131: immediately, ! 1132: leaving the file as it was ! 1133: after the most recent ``write'' command. ! 1134: However, ! 1135: since you want to save what ! 1136: you have edited, you need to type: ! 1137: .DS I 1i ! 1138: :\|\fBw ! 1139: .R ! 1140: "text" 6 lines, 171 characters ! 1141: .DE ! 1142: and then follow with the commands to quit and logout: ! 1143: .DS I 1i ! 1144: :\|\fBq ! 1145: % \fBlogout\fR ! 1146: .DE ! 1147: and hang up the phone or turn off the terminal when ! 1148: \s-2UNIX\s0 asks for a name. ! 1149: Terminals connected to the port selector ! 1150: will stop after the logout command, ! 1151: and pressing keys on the keyboard will do nothing. ! 1152: .sp 1 ! 1153: .PP ! 1154: This is the end of the second session on \s-2UNIX\s0 text editing. ! 1155: .bp ! 1156: .TL ! 1157: Session 3 ! 1158: .SH ! 1159: Bringing text into the buffer (e) ! 1160: .PP ! 1161: Login to \s-2UNIX\s0 and make contact with edit. ! 1162: You should try to login without ! 1163: looking at the notes, but if you must ! 1164: then by all means do. ! 1165: .PP ! 1166: Did you remember to give the name of the file ! 1167: you wanted to edit? ! 1168: That is, did you type ! 1169: .DS I 1i ! 1170: % \fBedit text\fR ! 1171: .DE ! 1172: or simply ! 1173: .DS I 1i ! 1174: % \fBedit\fR ! 1175: .DE ! 1176: Both ways get you in contact with edit, but the first way ! 1177: will bring a copy of the file named ``text'' into ! 1178: the buffer. ! 1179: If you did forget to tell edit the name of your file, ! 1180: you can get it into the buffer by ! 1181: typing: ! 1182: .DS I 1i ! 1183: :\|\fBe text ! 1184: .R ! 1185: "text" 6 lines, 171 characters ! 1186: .DE ! 1187: The command ! 1188: .B edit, ! 1189: which may be abbreviated \fBe\fR, ! 1190: tells edit that you want ! 1191: to erase anything that might already be in ! 1192: the buffer and bring a copy of the file ``text'' into the buffer ! 1193: for editing. ! 1194: You may also use the edit (e) command to change files in ! 1195: the middle of an editing session, ! 1196: or to give edit the name of a new file that you want to create. ! 1197: Because the edit command clears the buffer, ! 1198: you will receive a warning if you try to edit a new file without ! 1199: having saved a copy of the old file. ! 1200: This gives you a chance to write the contents of the buffer to disk ! 1201: before editing the next file. ! 1202: .SH ! 1203: Moving text in the buffer (m) ! 1204: .PP ! 1205: Edit allows you to move lines of text ! 1206: from one location in the buffer to another ! 1207: by means of the ! 1208: .B move ! 1209: (\fBm\fR) command. ! 1210: The first two examples are for illustration only, ! 1211: though after you have read this Session ! 1212: you are welcome to return to them for practice. ! 1213: The command ! 1214: .DS I 1i ! 1215: :\|\fB2,4m$ ! 1216: .R ! 1217: .DE ! 1218: directs edit to move lines 2, 3, and 4 ! 1219: to the end of the buffer ($). ! 1220: The format for the move command is that you specify ! 1221: the first line to be moved, the last line to be moved, ! 1222: the move command ``m'', and the line after which ! 1223: the moved text is to be placed. ! 1224: So, ! 1225: .DS I 1i ! 1226: :\|\fB1,3m6 ! 1227: .R ! 1228: .DE ! 1229: would instruct edit to move lines 1 through 3 (inclusive) ! 1230: to a location after line 6 in the buffer. ! 1231: To move only one line, say, line 4, ! 1232: to a location in the buffer after line 5, ! 1233: the command would be ``4m5''. ! 1234: .PP ! 1235: Let's move some text using the command: ! 1236: .DS I 1i ! 1237: :\|\fB5,$m1 ! 1238: .R ! 1239: 2 lines moved ! 1240: it does illustrate the editor. ! 1241: .DE ! 1242: After executing a command that moves more than one line of the buffer, ! 1243: edit tells how many lines were affected by the move ! 1244: and prints the last moved line for your inspection. ! 1245: If you want to see more than just the last line, ! 1246: you can then ! 1247: use the print (p), z, or number (nu) command to view more text. ! 1248: The buffer should now contain: ! 1249: .DS I 1i ! 1250: This is some sample text. ! 1251: It doesn't mean much here, but ! 1252: it does illustrate the editor. ! 1253: And this is some more text. ! 1254: Text editing is nice. ! 1255: This is text added in Session 2. ! 1256: .DE ! 1257: You can restore the original order by typing: ! 1258: .DS I 1i ! 1259: :\|\fB4,$m1 ! 1260: .R ! 1261: .DE ! 1262: or, combining context searching and the move command: ! 1263: .DS I 1i ! 1264: :\|\fB/And this is some/,/This is text/m/This is some sample/ ! 1265: .R ! 1266: .DE ! 1267: (Do not type both examples here!) ! 1268: The problem with combining context searching ! 1269: with the move command ! 1270: is that your chance of making a typing error ! 1271: in such a long command is greater than ! 1272: if you type line numbers. ! 1273: .SH ! 1274: Copying lines (copy) ! 1275: .PP ! 1276: The ! 1277: .B copy ! 1278: command ! 1279: is used to make a second copy of specified lines, ! 1280: leaving the original lines where they were. ! 1281: Copy ! 1282: has the same format as the move command, for example: ! 1283: .DS I 1i ! 1284: :\|\fB2,5copy $ ! 1285: .R ! 1286: .DE ! 1287: makes a copy of lines 2 through 5, ! 1288: placing the added lines after the buffer's end ($). ! 1289: Experiment with the copy command ! 1290: so that you can become familiar with how it works. ! 1291: Note that the shortest abbreviation for copy is ! 1292: \f3co\f1 (and ! 1293: not the letter ``c'', which has another meaning). ! 1294: .SH ! 1295: Deleting lines (d) ! 1296: .PP ! 1297: Suppose you want to delete ! 1298: the line ! 1299: .DS I 1i ! 1300: This is text added in Session 2. ! 1301: .DE ! 1302: from the buffer. ! 1303: If you know the number of the line to be deleted, ! 1304: you can type ! 1305: that number followed by ! 1306: \fBdelete\fR or \fBd\fR. ! 1307: This example deletes line 4, ! 1308: which is ``This is text added in Session 2.'' ! 1309: if you typed the commands ! 1310: suggested so far. ! 1311: .DS I 1i ! 1312: :\|\fB4d ! 1313: .R ! 1314: It doesn't mean much here, but ! 1315: .DE ! 1316: Here ``4'' is the number of the line to be deleted, ! 1317: and ``delete'' or ``d'' is the command to delete the line. ! 1318: After executing the delete command, ! 1319: edit prints the line that has become the current line (``.''). ! 1320: .PP ! 1321: If you do not happen to know the line number ! 1322: you can search for the line and then delete it using this ! 1323: sequence of commands: ! 1324: .DS I 1i ! 1325: :\|\fB/added in Session 2./ ! 1326: .R ! 1327: This is text added in Session 2. ! 1328: :\|\fBd ! 1329: .R ! 1330: It doesn't mean much here, but ! 1331: .DE ! 1332: The ``/added in Session 2./'' ! 1333: asks edit to locate and print ! 1334: the line containing the indicated text, ! 1335: starting its search at the current line ! 1336: and moving line by line ! 1337: until it finds the text. ! 1338: Once you are sure that you have correctly specified the line ! 1339: you want to delete, ! 1340: you can enter the delete (d) command. ! 1341: In this case it is not necessary to ! 1342: specify a line number before the ``d''. ! 1343: If no line number is given, ! 1344: edit deletes the current line (``.''), ! 1345: that is, the line found by our search. ! 1346: After the deletion, your buffer should contain: ! 1347: .DS I 1i ! 1348: This is some sample text. ! 1349: And this is some more text. ! 1350: Text editing is nice. ! 1351: It doesn't mean much here, but ! 1352: it does illustrate the editor. ! 1353: And this is some more text. ! 1354: Text editing is nice. ! 1355: This is text added in Session 2. ! 1356: It doesn't mean much here, but ! 1357: .DE ! 1358: To delete both lines 2 and 3: ! 1359: .DS I 1i ! 1360: And this is some more text. ! 1361: Text editing is nice. ! 1362: .DE ! 1363: you type ! 1364: .DS I 1i ! 1365: :\|\f32,3d\f1 ! 1366: 2 lines deleted ! 1367: .DE ! 1368: which specifies the range of lines from 2 to 3, ! 1369: and the operation on those lines \(em ``d'' for delete. ! 1370: If you delete more than one line ! 1371: you will receive a message ! 1372: telling you the number of lines deleted, ! 1373: as indicated in the example above. ! 1374: .PP ! 1375: The previous example assumes that you know the line numbers for ! 1376: the lines to be deleted. ! 1377: If you do not you might combine the search command ! 1378: with the delete command: ! 1379: .DS I 1i ! 1380: :\|\fB/And this is some/,/Text editing is nice./d ! 1381: .R ! 1382: .DE ! 1383: .SH ! 1384: A word or two of caution ! 1385: .PP ! 1386: In using the search function to locate lines to ! 1387: be deleted you should be ! 1388: .B ! 1389: absolutely sure ! 1390: .R ! 1391: the characters you give as the basis for the search ! 1392: will take edit to the line you want deleted. ! 1393: Edit will search for the first ! 1394: occurrence of the characters starting from where ! 1395: you last edited \- ! 1396: that is, from the line you see printed if you type dot (.). ! 1397: .PP ! 1398: A search based on too few ! 1399: characters may result in the wrong lines being deleted, ! 1400: which edit will do as easily as if you had meant it. ! 1401: For this reason, it is usually safer ! 1402: to specify the search and then delete in two separate steps, ! 1403: at least until you become familiar enough with using the editor ! 1404: that you understand how best to specify searches. ! 1405: For a beginner it is not a bad idea to double-check ! 1406: each command before pressing \s-2RETURN\s+2 to send the command on its way. ! 1407: .SH ! 1408: Undo (u) to the rescue ! 1409: .PP ! 1410: The ! 1411: .B ! 1412: undo (u) ! 1413: .R ! 1414: command has the ability to ! 1415: reverse the effects of the last command that changed the buffer. ! 1416: To undo the previous command, type ! 1417: ``u'' or ``undo''. ! 1418: Undo can rescue ! 1419: the contents of the buffer from many an unfortunate mistake. ! 1420: However, its powers are not unlimited, ! 1421: so it is still wise to be reasonably ! 1422: careful about the commands you give. ! 1423: .PP ! 1424: It is possible to undo only commands which ! 1425: have the power to change the buffer \(em for example, ! 1426: delete, append, move, copy, substitute, and even undo itself. ! 1427: The commands write (w) and edit (e), which interact with disk files, ! 1428: cannot be undone, nor can commands that do not change ! 1429: the buffer, such as print. ! 1430: Most importantly, ! 1431: the ! 1432: .B only ! 1433: command that can be reversed by undo ! 1434: is the ! 1435: last ``undo-able'' command you typed. ! 1436: You can use control-H and @ to change ! 1437: commands while you are typing them, ! 1438: and undo to reverse the effect of the commands ! 1439: after you have typed them and pressed \s-2RETURN\s+2. ! 1440: .PP ! 1441: To illustrate, ! 1442: let's issue an undo command. ! 1443: Recall that the last buffer-changing command we gave deleted ! 1444: the lines formerly numbered 2 and 3. ! 1445: Typing undo at this moment will reverse the effects ! 1446: of the deletion, causing those two lines to be ! 1447: replaced in the buffer. ! 1448: .DS I 1i ! 1449: :\|\fBu ! 1450: .R ! 1451: 2 more lines in file after undo ! 1452: And this is some more text. ! 1453: .DE ! 1454: Here again, edit informs you if the command affects more ! 1455: than one line, ! 1456: and prints ! 1457: the text of the line which is now ``dot'' (the current line). ! 1458: .SH ! 1459: More about the dot (.) and buffer end ($) ! 1460: .PP ! 1461: The function assumed by the symbol dot depends on its context. ! 1462: It can be used: ! 1463: .IP ! 1464: 1. to exit from append mode; we type dot (and only a dot) on ! 1465: a line and press \s-2RETURN\s+2; ! 1466: .IP ! 1467: 2. to refer to the line we are at in the buffer. ! 1468: .LP ! 1469: Dot can also be combined with the equal sign to get ! 1470: the number of the line currently being edited: ! 1471: .DS I 1i ! 1472: :\|\fB\&.= ! 1473: .R ! 1474: .DE ! 1475: If we type ``\fB.\fR='' we are asking for the number of the line, ! 1476: and if we type ``\fB.\fR'' we are asking for the text of the line. ! 1477: .PP ! 1478: In this editing session and the last, we used the dollar ! 1479: sign to indicate the end of the buffer ! 1480: in commands such as print, copy, and move. ! 1481: The dollar sign as a command asks edit to print the last ! 1482: line in the buffer. ! 1483: If the dollar sign is combined with the equal sign (\f3$=\f1) ! 1484: edit will print the line number corresponding to the ! 1485: last line in the buffer. ! 1486: .PP ! 1487: ``\fB.\fR'' and ``$'', then, represent line numbers. ! 1488: Whenever appropriate, these symbols can be used in ! 1489: place of line numbers in commands. ! 1490: For example ! 1491: .DS I 1i ! 1492: :\|\fB\s+2.\s-2,$d ! 1493: .R ! 1494: .DE ! 1495: instructs edit to delete all lines from the current line (\fB.\fR) ! 1496: to the end of the buffer. ! 1497: .SH ! 1498: Moving around in the buffer (+ and \-) ! 1499: .PP ! 1500: When you are editing ! 1501: you often want ! 1502: to go back and re-read a previous line. ! 1503: You could specify a context search for a line you want to ! 1504: read if you remember some of its text, ! 1505: but if you simply want to see what was written a few, say 3, lines ! 1506: ago, you can type ! 1507: .DS I 1i ! 1508: \-3p ! 1509: .DE ! 1510: This tells edit to move back to a position 3 lines ! 1511: before the current line (.) ! 1512: and print that line. ! 1513: You can move forward in the buffer similarly: ! 1514: .DS I 1i ! 1515: +2p ! 1516: .DE ! 1517: instructs edit to print the line that is 2 ! 1518: ahead of your current position. ! 1519: .PP ! 1520: You may use ``+'' and ``\-'' in any command where edit ! 1521: accepts line numbers. ! 1522: Line numbers specified with ``+'' or ``\-'' ! 1523: can be combined to print a range of lines. ! 1524: The command ! 1525: .DS I 1i ! 1526: :\|\fB\-1,+2copy$ ! 1527: .R ! 1528: .DE ! 1529: makes a copy of 4 lines: the current line, the line before it, ! 1530: and the two after it. ! 1531: The copied lines will be placed after the last line ! 1532: in the buffer ($), ! 1533: and the original lines referred to by ``\-1'' and ``+2'' ! 1534: remain where they are. ! 1535: .PP ! 1536: Try typing only ``\-''; you will move back one line just as ! 1537: if you had typed ``\-1p''. ! 1538: Typing the command ``+'' works similarly. ! 1539: You might also try typing a few plus or minus signs in a row ! 1540: (such as ``+++'') to see edit's response. ! 1541: Typing \s-2RETURN\s+2 alone on a line is the equivalent ! 1542: of typing ``+1p''; it will move you one line ahead in the buffer ! 1543: and print that line. ! 1544: .PP ! 1545: If you are at the last line of the buffer and try ! 1546: to move further ahead, perhaps by typing a ``+'' or ! 1547: a carriage return alone on the line, ! 1548: edit will remind you that you are at the end of the buffer: ! 1549: .sp ! 1550: .nf ! 1551: .ti 1i ! 1552: At end-of-file ! 1553: .br ! 1554: or ! 1555: .ti 1i ! 1556: Not that many lines in buffer ! 1557: .fi ! 1558: .LP ! 1559: Similarly, if you try to move to a position before the first line, ! 1560: edit will print one of these messages: ! 1561: .sp ! 1562: .nf ! 1563: .ti 1i ! 1564: Nonzero address required on this command ! 1565: .br ! 1566: or ! 1567: .ti 1i ! 1568: Negative address \- first buffer line is 1 ! 1569: .fi ! 1570: .LP ! 1571: The number associated with a buffer line is the line's ``address'', ! 1572: in that it can be used to locate the line. ! 1573: .SH ! 1574: Changing lines (c) ! 1575: .PP ! 1576: You can also delete certain lines and ! 1577: insert new text in their place. ! 1578: This can be accomplished easily with the ! 1579: .B "change (c)" ! 1580: command. ! 1581: The change command instructs edit to delete specified lines ! 1582: and then switch to text input mode to ! 1583: accept the text that will replace them. ! 1584: Let's say you want to change the first two lines in the buffer: ! 1585: .DS I 1i ! 1586: This is some sample text. ! 1587: And this is some more text. ! 1588: .DE ! 1589: to read ! 1590: .DS I 1i ! 1591: This text was created with the \s-2UNIX\s0 text editor. ! 1592: .DE ! 1593: To do so, you type: ! 1594: .DS I 1i ! 1595: :\|\fB1,2c ! 1596: .R ! 1597: 2 lines changed ! 1598: .B ! 1599: This text was created with the \s-2UNIX\s0 text editor. ! 1600: \s+2\&.\s-2 ! 1601: .R ! 1602: : ! 1603: .DE ! 1604: In the command ! 1605: .B 1,2c ! 1606: we specify that we want to change ! 1607: the range of lines beginning with 1 and ending with 2 ! 1608: by giving line numbers as with the print command. ! 1609: These lines will be deleted. ! 1610: After you type \s-2RETURN\s+2 to end the change command, ! 1611: edit notifies you if more than one line will be changed ! 1612: and places you in text input mode. ! 1613: Any text typed on the following lines will be inserted into ! 1614: the position where lines were deleted by the change command. ! 1615: .B ! 1616: You will remain in text input mode until you exit in the usual way, ! 1617: by typing a period alone on a line. ! 1618: .R ! 1619: Note that the number of lines added to the buffer need not be ! 1620: the same as the number of lines deleted. ! 1621: .sp 1 ! 1622: .PP ! 1623: This is the end of the third session on text editing with \s-2UNIX\s0. ! 1624: .bp ! 1625: .SH ! 1626: .ce 1 ! 1627: \s+2Session 4\s0 ! 1628: .sp ! 1629: .PP ! 1630: This lesson covers several topics, starting with ! 1631: commands that apply throughout the buffer, ! 1632: characters with special meanings, ! 1633: and how to issue \s-2UNIX\s0 commands while in the editor. ! 1634: The next topics deal with files: ! 1635: more on reading and writing, ! 1636: and methods of recovering files lost in a crash. ! 1637: The final section suggests sources of further information. ! 1638: .SH ! 1639: Making commands global (g) ! 1640: .PP ! 1641: One disadvantage to the commands we have used for ! 1642: searching or substituting is that if you ! 1643: have a number of instances of a word to change ! 1644: it appears that you have to type the command ! 1645: repeatedly, once for ! 1646: each time the change needs to be made. ! 1647: Edit, however, provides a way to make commands ! 1648: apply to the entire contents of the buffer \- ! 1649: the ! 1650: .B ! 1651: global (g) ! 1652: .R ! 1653: command. ! 1654: .PP ! 1655: To print all lines ! 1656: containing a certain sequence of characters ! 1657: (say, ``text'') ! 1658: the command is: ! 1659: .DS I 1i ! 1660: :\|\fBg/text/p ! 1661: .R ! 1662: .DE ! 1663: The ``g'' instructs edit to ! 1664: make a global search for all lines ! 1665: in the buffer containing the characters ``text''. ! 1666: The ``p'' prints the lines found. ! 1667: .PP ! 1668: To issue a global command, start by typing a ``g'' and then a search ! 1669: pattern identifying ! 1670: the lines to be affected. ! 1671: Then, on the same line, type the command to be ! 1672: executed for the identified lines. ! 1673: Global substitutions are frequently useful. ! 1674: For example, ! 1675: to change all instances of the word ``text'' to the word ``material'' ! 1676: the command would be a combination of the global search and the ! 1677: substitute command: ! 1678: .DS I 1i ! 1679: :\|\fBg/text/s/text/material/g ! 1680: .R ! 1681: .DE ! 1682: Note the ``g'' at the end of the global command, ! 1683: which instructs edit to change ! 1684: each and every instance of ``text'' to ``material''. ! 1685: If you do not type the ``g'' at the end of the command ! 1686: only the ! 1687: .I first ! 1688: instance of ``text'' \fIin each line\fR will be changed ! 1689: (the normal result of the substitute command). ! 1690: The ``g'' at the end of the command is independent of the ``g'' ! 1691: at the beginning. ! 1692: You may give a command such as: ! 1693: .DS I 1i ! 1694: :\|\fB5s/text/material/g ! 1695: .R ! 1696: .DE ! 1697: to change every instance of ``text'' in line 5 alone. ! 1698: Further, neither command will change ``text'' to ``material'' ! 1699: if ``Text'' begins with a capital rather than a lower-case ! 1700: .I t. ! 1701: .PP ! 1702: Edit does not automatically print the lines modified by a ! 1703: global command. ! 1704: If you want the lines to be printed, type a ``p'' ! 1705: at the end of the global command: ! 1706: .DS I 1i ! 1707: :\|\fBg/text/s/text/material/gp ! 1708: .R ! 1709: .DE ! 1710: You should be careful ! 1711: about using the global command in combination with any other \- ! 1712: in essence, be sure of what you are telling edit to do ! 1713: to the entire buffer. ! 1714: For example, ! 1715: .DS I 1i ! 1716: :\|\fBg/ /d ! 1717: .R ! 1718: 72 less lines in file after global ! 1719: .DE ! 1720: will delete every line containing a blank anywhere in it. ! 1721: This could adversely affect ! 1722: your document, since most lines have spaces between words ! 1723: and thus would be deleted. ! 1724: After executing the global command, ! 1725: edit will print a warning if the command added or deleted more than one line. ! 1726: Fortunately, the undo command can reverse ! 1727: the effects of a global command. ! 1728: You should experiment with the global command ! 1729: on a small file of text to see what it can do for you. ! 1730: .SH ! 1731: More about searching and substituting ! 1732: .PP ! 1733: In using slashes to identify a character string ! 1734: that we want to search for or change, ! 1735: we have always specified the exact characters. ! 1736: There is a less tedious way to ! 1737: repeat the same string of characters. ! 1738: To change ``text'' to ``texts'' we may type either ! 1739: .DS I 1i ! 1740: :\|\fB/text/s/text/texts/ ! 1741: .R ! 1742: .DE ! 1743: as we have done in the past, ! 1744: or a somewhat abbreviated command: ! 1745: .DS I 1i ! 1746: :\|\fB/text/s//texts/ ! 1747: .R ! 1748: .DE ! 1749: In this example, the characters to be changed ! 1750: are not specified \- ! 1751: there are no characters, not even a space, ! 1752: between the two slash marks ! 1753: that indicate what is to be changed. ! 1754: This lack of characters between the slashes ! 1755: is taken by the editor to mean ! 1756: ``use the characters we last searched for as the characters to be changed.'' ! 1757: .PP ! 1758: Similarly, the last context search may be repeated ! 1759: by typing a pair of slashes with nothing between them: ! 1760: .DS I 1i ! 1761: :\|\fB/does/ ! 1762: .R ! 1763: It doesn't mean much here, but ! 1764: :\|\fB// ! 1765: .R ! 1766: it does illustrate the editor. ! 1767: .DE ! 1768: (You should note that the search command found the characters ``does'' ! 1769: in the word ``doesn't'' in the first search request.) ! 1770: Because no characters are specified for the second search, ! 1771: the editor scans the buffer for the next occurrence of the ! 1772: characters ``does''. ! 1773: .PP ! 1774: Edit normally searches forward through the buffer, ! 1775: wrapping around from the end of the buffer to the beginning, ! 1776: until the specified character string is found. ! 1777: If you want to search in the reverse direction, ! 1778: use question marks (?) instead of slashes ! 1779: to surround the characters you are searching for. ! 1780: .PP ! 1781: It is also possible ! 1782: to repeat the last substitution ! 1783: without having to retype the entire command. ! 1784: An ampersand (&) used as a command ! 1785: repeats the most recent substitute command, ! 1786: using the same search and replacement patterns. ! 1787: After altering the current line by typing ! 1788: .DS I 1i ! 1789: :\|\fBs/text/texts/ ! 1790: .R ! 1791: .DE ! 1792: you type ! 1793: .DS I 1i ! 1794: :\|\fB/text/& ! 1795: .R ! 1796: .DE ! 1797: or simply ! 1798: .DS I 1i ! 1799: :\|\fB//& ! 1800: .R ! 1801: .DE ! 1802: to make the same change on the next line in the buffer ! 1803: containing the characters ``text''. ! 1804: .SH ! 1805: Special characters ! 1806: .PP ! 1807: Two characters have special meanings when ! 1808: used in specifying searches: ``$'' and ``^''. ! 1809: ``$'' is taken by the editor to mean ``end of the line'' ! 1810: and is used to identify strings ! 1811: that occur at the end of a line. ! 1812: .DS I 1i ! 1813: :\|\fBg/text.$/s//material./p ! 1814: .R ! 1815: .DE ! 1816: tells the editor to search for all lines ending in ``text.'' ! 1817: (and nothing else, not even a blank space), ! 1818: to change each final ``text.'' to ``material.'', ! 1819: and print the changed lines. ! 1820: .PP ! 1821: The symbol ``^'' indicates the beginning of a line. ! 1822: Thus, ! 1823: .DS I 1i ! 1824: :\|\fBs/^/1. / ! 1825: .R ! 1826: .DE ! 1827: instructs the editor to insert ``1.'' and a space at the beginning ! 1828: of the current line. ! 1829: .PP ! 1830: The characters ``$'' and ``^'' have special meanings only in the context ! 1831: of searching. ! 1832: At other times, they are ordinary characters. ! 1833: If you ever need to search for a character that has a special meaning, ! 1834: you must indicate that the ! 1835: character is to lose temporarily ! 1836: its special significance by typing another special character, ! 1837: the backslash (\\), before it. ! 1838: .DS I 1i ! 1839: :\|\fBs/\\\\\&$/dollar/ ! 1840: .R ! 1841: .DE ! 1842: looks for the character ``$'' in the current ! 1843: line and replaces it by the word ``dollar''. ! 1844: Were it not for the backslash, the ``$'' would have represented ! 1845: ``the end of the line'' in your search ! 1846: rather than the character ``$''. ! 1847: The backslash retains its special significance ! 1848: unless it is preceded by another backslash. ! 1849: .SH ! 1850: Issuing \s-2UNIX\s0 commands from the editor ! 1851: .PP ! 1852: After creating several files with the editor, ! 1853: you may want to delete files ! 1854: no longer useful to you or ask for a list of your files. ! 1855: Removing and listing files are not functions of the editor, ! 1856: and so they require the use of \s-2UNIX\s0 system commands ! 1857: (also referred to as ``shell'' commands, as ! 1858: ``shell'' is the name of the program that processes \s-2UNIX\s0 commands). ! 1859: You do not need to quit the editor to execute a \s-2UNIX\s0 command ! 1860: as long as you indicate that it ! 1861: is to be sent to the shell for execution. ! 1862: To use the \s-2UNIX\s0 command ! 1863: .B rm ! 1864: to remove the file named ``junk'' type: ! 1865: .DS I 1i ! 1866: :\|\fB!rm junk ! 1867: .R ! 1868: ! ! 1869: : ! 1870: .DE ! 1871: The exclamation mark (!) ! 1872: indicates that the rest of the line is to be processed as a shell command. ! 1873: If the buffer contents have not been written since the last change, ! 1874: a warning will be printed before the command is executed: ! 1875: .DS I 1i ! 1876: [No write since last change] ! 1877: .DE ! 1878: The editor prints a ``!'' when the command is completed. ! 1879: Other tutorials describe useful features of the system, ! 1880: of which an editor is only one part. ! 1881: .SH ! 1882: Filenames and file manipulation ! 1883: .PP ! 1884: Throughout each editing session, ! 1885: edit keeps track of the name of the file being edited as the ! 1886: .I "current filename." ! 1887: Edit remembers as the current filename the name given ! 1888: when you entered the editor. ! 1889: The current filename changes whenever the edit (e) command ! 1890: is used to specify a new file. ! 1891: Once edit has recorded a current filename, ! 1892: it inserts that name into any command where a filename has been omitted. ! 1893: If a write command does not specify a file, ! 1894: edit, as we have seen, supplies the current filename. ! 1895: If you are editing a file named ``draft3'' having 283 lines in it, ! 1896: you can have the editor write onto a different file ! 1897: by including its name in the write command: ! 1898: .DS I 1i ! 1899: :\fB\|w chapter3 ! 1900: .R ! 1901: "chapter3" [new file] 283 lines, 8698 characters ! 1902: .DE ! 1903: The current filename remembered by the editor ! 1904: .I ! 1905: will not be changed as a result of the write command. ! 1906: .R ! 1907: Thus, if the next write command ! 1908: does not specify a name, ! 1909: edit will write onto the current file (``draft3'') ! 1910: and not onto the file ``chapter3''. ! 1911: .SH ! 1912: The file (f) command ! 1913: .PP ! 1914: To ask for the current filename, type ! 1915: .B file ! 1916: (or ! 1917: .B f ). ! 1918: In response, the editor provides current information about the buffer, ! 1919: including the filename, your current position, the number of ! 1920: lines in the buffer, ! 1921: and the percent of the distance through the file ! 1922: your current location is. ! 1923: .DS I 1i ! 1924: :\|\fBf ! 1925: .R ! 1926: "text" [Modified] line 3 of 4 --75%-- ! 1927: .DE ! 1928: .\"The expression ``[Edited]'' indicates that the buffer contains ! 1929: .\"either the editor's copy of the existing file ``text'' ! 1930: .\"or a file which you are just now creating. ! 1931: If the contents of the buffer have changed ! 1932: since the last time the file was written, ! 1933: the editor will tell you that the file has been ``[Modified]''. ! 1934: After you save the changes by writing onto a disk file, ! 1935: the buffer will no longer be considered modified: ! 1936: .DS I 1i ! 1937: :\|\fBw ! 1938: .R ! 1939: "text" 4 lines, 88 characters ! 1940: :\|\fBf ! 1941: .R ! 1942: "text" line 3 of 4 --75%-- ! 1943: .DE ! 1944: .SH ! 1945: Reading additional files (r) ! 1946: .PP ! 1947: The ! 1948: \f3read (r)\f1 command allows you to add the contents of a file ! 1949: to the buffer ! 1950: at a specified location, ! 1951: essentially copying new lines ! 1952: between two existing lines. ! 1953: To use it, specify the line after which the new text will be placed, ! 1954: the \f3read (r)\f1 command, ! 1955: and then the name of the file. ! 1956: If you have a file named ``example'', the command ! 1957: .DS I 1i ! 1958: :\|\fB$r example ! 1959: .R ! 1960: "example" 18 lines, 473 characters ! 1961: .DE ! 1962: reads the file ``example'' ! 1963: and adds it to the buffer after the last line. ! 1964: The current filename is not changed by the read command. ! 1965: .SH ! 1966: Writing parts of the buffer ! 1967: .PP ! 1968: The ! 1969: .B ! 1970: write (w) ! 1971: .R ! 1972: command can write all or part of the buffer ! 1973: to a file you specify. ! 1974: We are already familiar with ! 1975: writing the entire contents of the ! 1976: buffer to a disk file. ! 1977: To write only part of the buffer onto a file, ! 1978: indicate the beginning and ending lines before the write command, ! 1979: for example ! 1980: .DS I 1i ! 1981: :\|\fB45,$w ending ! 1982: .R ! 1983: .DE ! 1984: Here all lines from 45 through the end of the buffer ! 1985: are written onto the file named ! 1986: .I ending. ! 1987: The lines remain in the buffer ! 1988: as part of the document you are editing, ! 1989: and you may continue to edit the entire buffer. ! 1990: Your original file is unaffected ! 1991: by your command to write part of the buffer ! 1992: to another file. ! 1993: Edit still remembers whether you have saved changes to the buffer ! 1994: in your original file or not. ! 1995: .SH ! 1996: Recovering files ! 1997: .PP ! 1998: Although it does not happen very often, ! 1999: there are times \s-2UNIX\s+2 stops working ! 2000: because of some malfunction. ! 2001: This situation is known as a \fIcrash\fR. ! 2002: Under most circumstances, ! 2003: edit's crash recovery feature ! 2004: is able to save work to within a few lines of changes ! 2005: before a crash (or an accidental phone hang up). ! 2006: If you lose the contents of an editing buffer in a system crash, ! 2007: you will normally receive mail when you login that gives ! 2008: the name of the recovered file. ! 2009: To recover the file, ! 2010: enter the editor and type the command ! 2011: .B recover ! 2012: (\fBrec\fR), ! 2013: followed by the name of the lost file. ! 2014: For example, ! 2015: to recover the buffer for an edit session ! 2016: involving the file ``chap6'', the command is: ! 2017: .DS I 1i ! 2018: .R ! 2019: :\|\fBrecover chap6 ! 2020: .R ! 2021: .DE ! 2022: Recover is sometimes unable to save the entire buffer successfully, ! 2023: so always check the contents of the saved buffer carefully ! 2024: before writing it back onto the original file. ! 2025: For best results, ! 2026: write the buffer to a new file temporarily ! 2027: so you can examine it without risk to the original file. ! 2028: Unfortunately, ! 2029: you cannot use the recover command ! 2030: to retrieve a file you removed ! 2031: using the shell command \f3rm\f1. ! 2032: .SH ! 2033: Other recovery techniques ! 2034: .PP ! 2035: If something goes wrong when you are using the editor, ! 2036: it may be possible to save your work by using the command ! 2037: .B preserve ! 2038: (\fBpre\fR), ! 2039: which saves the buffer as if the system had crashed. ! 2040: If you are writing a file and you get the message ! 2041: ``Quota exceeded'', you have tried to use more disk storage ! 2042: than is allotted to your account. ! 2043: .I ! 2044: Proceed with caution ! 2045: .R ! 2046: because it is likely that only a part ! 2047: of the editor's buffer is now present in the file you tried to write. ! 2048: In this case you should use the shell escape from the editor (!) ! 2049: to remove some files you don't need and try to write ! 2050: the file again. ! 2051: If this is not possible and you cannot find someone to help you, ! 2052: enter the command ! 2053: .DS I 1i ! 2054: :\|\fBpreserve ! 2055: .R ! 2056: .DE ! 2057: and wait for the reply, ! 2058: .DS I 1i ! 2059: File preserved. ! 2060: .DE ! 2061: If you do not receive this reply, ! 2062: seek help immediately. ! 2063: Do not simply leave the editor. ! 2064: If you do, the buffer will be lost, ! 2065: and you may not be able to save your file. ! 2066: If the reply is ``File preserved.'' ! 2067: you can leave the editor ! 2068: (or logout) ! 2069: to remedy the situation. ! 2070: After a preserve, you can use the recover command ! 2071: once the problem has been corrected, ! 2072: or the \fB\-r\fR option of the edit command ! 2073: if you leave the editor and want to return. ! 2074: .PP ! 2075: If you make an undesirable change to the buffer ! 2076: and type a write command before discovering your mistake, ! 2077: the modified version will replace any previous version of the file. ! 2078: Should you ever lose a good version of a document in this way, ! 2079: do not panic and leave the editor. ! 2080: As long as you stay in the editor, ! 2081: the contents of the buffer remain accessible. ! 2082: Depending on the nature of the problem, ! 2083: it may be possible ! 2084: to restore the buffer to a more complete ! 2085: state with the undo command. ! 2086: After fixing the damaged buffer, you can again write the file ! 2087: to disk. ! 2088: .SH ! 2089: Further reading and other information ! 2090: .PP ! 2091: Edit is an editor designed for beginning and casual users. ! 2092: It is actually a version of a more powerful editor called ! 2093: .I ex. ! 2094: These lessons are intended to introduce you to the editor ! 2095: and its more commonly-used commands. ! 2096: We have not covered all of the editor's commands, ! 2097: but a selection of commands ! 2098: that should be sufficient to accomplish most of your editing tasks. ! 2099: You can find out more about the editor in the ! 2100: .I ! 2101: Ex Reference Manual, ! 2102: .R ! 2103: which is applicable to both ! 2104: .I ex ! 2105: and ! 2106: .I edit. ! 2107: One way to become familiar with the manual is to begin by reading ! 2108: the description of commands that you already know. ! 2109: .bd I 3 ! 2110: .SH ! 2111: Using ! 2112: .I ex ! 2113: .fl ! 2114: .bd I ! 2115: .PP ! 2116: As you become more experienced with using the editor, ! 2117: you may still find that edit continues to meet your needs. ! 2118: However, should you become interested in using ! 2119: .I ex, ! 2120: it is easy to switch. ! 2121: To begin an editing session with ! 2122: .I ex, ! 2123: use the name ! 2124: .B ex ! 2125: in your command instead of ! 2126: .B edit. ! 2127: .PP ! 2128: Edit commands also work in ! 2129: .I ex, ! 2130: but the editing environment is somewhat different. ! 2131: You should be aware of a few differences ! 2132: between ! 2133: .I ex ! 2134: and ! 2135: .I edit. ! 2136: In edit, only the characters ``^'', ``$'', and ``\\'' have ! 2137: special meanings in searching the buffer ! 2138: or indicating characters to be changed by a substitute command. ! 2139: Several additional characters have special ! 2140: meanings in ex, as described in the ! 2141: .I ! 2142: Ex Reference Manual. ! 2143: .R ! 2144: Another feature of the edit environment prevents users from ! 2145: accidently entering two alternative modes of editing, ! 2146: .I open ! 2147: and ! 2148: .I visual, ! 2149: in which ! 2150: the editor behaves quite differently from normal command mode. ! 2151: If you are using ex and you encounter strange behavior, ! 2152: you may have accidently entered open mode by typing ``o''. ! 2153: Type the \s-2ESC\s0 key and then a ``Q'' ! 2154: to get out of open or visual mode and back into ! 2155: the regular editor command mode. ! 2156: The document ! 2157: .I ! 2158: An Introduction to Display Editing with Vi\|\| ! 2159: .R ! 2160: provide full details of visual mode. ! 2161: .bp ! 2162: .SH ! 2163: .ce 1 ! 2164: \s+2Index\s0 ! 2165: .LP ! 2166: .sp 2 ! 2167: .2C ! 2168: .nf ! 2169: addressing, \fIsee\fR line numbers ! 2170: ampersand, 20 ! 2171: append mode, 6-7 ! 2172: append (a) command, 6, 7, 9 ! 2173: ``At end of file'' (message), 18 ! 2174: backslash (\\), 21 ! 2175: buffer, 3 ! 2176: caret (^), 10, 20 ! 2177: change (c) command, 18 ! 2178: command mode, 5-6 ! 2179: ``Command not found'' (message), 6 ! 2180: context search, 10-12, 19-21 ! 2181: control characters (``^'' notation), 10 ! 2182: control-H, 7 ! 2183: copy (co) command, 15 ! 2184: corrections, 7, 16 ! 2185: current filename, 21 ! 2186: current line (\|.\|), 11, 17 ! 2187: delete (d) command, 15-16 ! 2188: dial-up, 5 ! 2189: disk, 3 ! 2190: documentation, 3, 23 ! 2191: dollar ($), 10, 11, 17, 20-21 ! 2192: dot (\f3\|.\|\f1) 11, 17 ! 2193: edit (text editor), 3, 5, 23 ! 2194: edit (e) command, 5, 9, 14 ! 2195: editing commands: ! 2196: .in +.25i ! 2197: append (a), 6, 7, 9 ! 2198: change (c), 18 ! 2199: copy (co), 15 ! 2200: delete (d), 15-16 ! 2201: edit (text editor), 3, 5, 23 ! 2202: edit (e), 5, 9, 14 ! 2203: file (f), 21-22 ! 2204: global (g), 19 ! 2205: move (m), 14-15 ! 2206: number (nu), 11 ! 2207: preserve (pre), 22-23 ! 2208: print (p), 10 ! 2209: quit (q), 8, 13 ! 2210: read (r), 22 ! 2211: recover (rec), 22, 23 ! 2212: substitute (s), 11-12, 19, 20 ! 2213: undo (u), 16-17, 23 ! 2214: write (w), 8, 13, 21, 22 ! 2215: z, 12-13 ! 2216: ! (shell escape), 21 ! 2217: $=, 17 ! 2218: +, 17 ! 2219: \-, 17 ! 2220: //, 12, 20 ! 2221: ??, 20 ! 2222: \&., 11, 17 ! 2223: \&.=, 11, 17 ! 2224: .in -.25i ! 2225: entering text, 3, 6-7 ! 2226: erasing ! 2227: .in +.25i ! 2228: characters (^H), 7 ! 2229: lines (@), 7 ! 2230: .in -.25i ! 2231: error corrections, 7, 16 ! 2232: ex (text editor), 23 ! 2233: \fIEx Reference Manual\fR, 23 ! 2234: exclamation (!), 21 ! 2235: file, 3 ! 2236: file (f) command, 21-22 ! 2237: file recovery, 22-23 ! 2238: filename, 3, 21 ! 2239: global (g) command, 19 ! 2240: input mode, 6-7 ! 2241: Interrupt (message), 9 ! 2242: line numbers, \fIsee also\fR current line ! 2243: .in +.25i ! 2244: dollar sign ($), 10, 11, 17 ! 2245: dot (\|.\|), 11, 17 ! 2246: relative (+ and \-), 17 ! 2247: .in -.25i ! 2248: list, 10 ! 2249: logging in, 4-6 ! 2250: logging out, 8 ! 2251: ``Login incorrect'' (message), 5 ! 2252: minus (\-), 17 ! 2253: move (m) command, 14-15 ! 2254: ``Negative address\(emfirst buffer line is 1'' (message), 18 ! 2255: ``No current filename'' (message), 8 ! 2256: ``No such file or directory'' (message), 5, 6 ! 2257: ``No write since last change'' (message), 21 ! 2258: non-printing characters, 10 ! 2259: ``Nonzero address required'' (message), 18 ! 2260: ``Not an editor command'' (message), 6 ! 2261: ``Not that many lines in buffer'' (message), 18 ! 2262: number (nu) command, 11 ! 2263: password, 5 ! 2264: period (\|.\|), 11, 17 ! 2265: plus (+), 17 ! 2266: preserve (pre) command, 22-23 ! 2267: print (p) command, 10 ! 2268: program, 3 ! 2269: prompts ! 2270: .in .25i ! 2271: % (\s-2UNIX\s0), 5 ! 2272: : (edit), 5, 6, 7 ! 2273: \0 (append), 7 ! 2274: .in -.25i ! 2275: question (?), 20 ! 2276: quit (q) command, 8, 13 ! 2277: read (r) command, 22 ! 2278: recover (rec) command, 22, 23 ! 2279: recovery, \fIsee\fR\| file recovery ! 2280: references, 3, 23 ! 2281: remove (rm) command, 21, 22 ! 2282: reverse command effects (undo), 16-17, 23 ! 2283: searching, 10-12, 19-21 ! 2284: shell, 21 ! 2285: shell escape (!), 21 ! 2286: slash (/), 11-12, 20 ! 2287: special characters (^, $, \\), 10, 11, 17, 20-21 ! 2288: substitute (s) command, 11-12, 19, 20 ! 2289: terminals, 4-5 ! 2290: text input mode, 7 ! 2291: undo (u) command, 16-17, 23 ! 2292: \s-1UNIX\s0, 3 ! 2293: write (w) command, 8, 13, 21, 22 ! 2294: z command, 12-13 ! 2295:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.