Hệ Điều Hành Linux (P8) ppt

30 119 0
Hệ Điều Hành Linux (P8) ppt

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

< Day Day Up > Page 211 ABC Amber CHM Converter Trial version, http://www.processtext.com/abcchm.html Basic Editing Commands This section takes a more detailed look at the fundamental emacs editing commands. It covers straightforward editing of a single file in a single window. Keys: Notation and Use Mainstream emacs uses the 128-character ASCII character set. ASCII keyboards have a typewriter-style SHIFT key and a CONTROL key. Some keyboards also have a META (diamond or ALT) key that controls the eighth bit. It takes seven bits to describe an ASCII character; the eighth bit of an eight-bit byte can be used to communicate other information. Because so much of the emacs command set is in the nonprinting CONTROL or META case, Stallman was one of the first to confront the problem of developing a notation for writing about keystrokes. His solution, although not popular outside the emacs community, is clear and unambiguous (Table 7-1). It uses the capital letters C and M to denote holding down the CONTROL and META (or ALT) keys, respectively, and a few simple acronyms for the most common special characters, such as RET (this book uses RETURN), LFD (LINEFEED), DEL (DELETE), ESC (ESCAPE), SPC (SPACE), and TAB. Most emacs documentation, including the online help, uses this notation. Table 7-1. emacs key notation Character Classic emacs notation (lowercase) a a (uppercase) SHIFT -a A CONTROL-a C-a CONTROL-A C-a (do not use SHIFT), equivalent to CONTROL-a META-a M-a META-A M-A (do use SHIFT), different from M-a CONTROL-META-a C-M-a META-CONTROL-a M-C-a (not used frequently) This use of keys had some problems. Many keyboards had no META key, and some operating systems discarded the META bit. In addition, the emacs character set clashes with XON-XOFF flow control, which also uses CONTROL-S and CONTROL-Q. Although the flow-control problem still exists, the META key issue was resolved by making it an optional two-key sequence starting with ESCAPE. For instance, you can type ESCAPE-a instead of META-a or type ESCAPE CONTROL-A to get CONTROL-META-a . If the keyboard you are using does not have a META or ALT key, you can use the two-key ESCAPE sequence by pressing the ESCAPE key, releasing it, and then pressing the key following the META key in this book. For example, when this book says to press META-r, you can either press the META or ALT key while you press r or press and release ESCAPE and then press r. tip: The notation used in this book This book uses an uppercase letter following the CONTROL key and a lowercase letter following the META key. In either case you do not have to hold down the SHIFT key while entering a CONTROL or META character. Although the META uppercase character (that is, META-A) is a different character, it is usually set up to cause no action or the same effect as its lowercase counterpart. Key Sequences and Commands In emacs the relationship between key sequences (one or more keys that are pressed together or in sequence to issue an emacs command) and commands is very flexible, and there is considerable opportunity for exercising your personal preference. You can translate and remap key sequences to other commands and replace or reprogram commands. Although most emacs documentation glosses over the details and talks about keystrokes as though they were the commands, it is important to recognize that the underlying machinery remains separate from the key sequences and to understand that you can change the behavior of the key sequences and the commands. For more information refer to "Customizing emacs" on page 235. META-x: Running a Command Without a Key Binding The emacs keymaps (the tables, or vectors, that emacs uses to translate key sequences to commands [page 237]) are very crowded, and often it is not possible to bind every command to a key sequence. You can execute any command by name by preceding it with META-x. When you press META-x, the emacs editor prompts you for a command in the Echo Area. After you enter the command name and press RETURN, it executes the command. Smart completion When a command has no common key sequence, it is sometimes described as META-x command-name. The emacs editor has a smart completion for most prompted answers, using SPACE or TAB to complete, if possible, to the end of the current word or the whole command, respectively. Forcing a completion past the last unambiguous point or typing ? displays a list of alternatives. You can find more details on smart completion in the online emacs manual. Numeric Arguments Some of the emacs editing commands accept a numeric argument as a repetition count. You place this argument immediately before the key sequence for the command. Absence of an argument almost always means a count of 1. Even an ordinary alphabetic character can have a numeric argument, which means "insert this many times." To give a command a numeric argument, you can do either of the following:   Press META with each digit (0–9) or the minus sign (–). For example, to insert 10 z characters, type META-1 META-0 z.   Use CONTROL-U to begin a string of digits, including the minus sign. For example, to move the cursor forward 20 words, type CONTROL-U 20 META-f. CONTROL-U For convenience, CONTROL-U defaults to multiply by 4 when you do not follow it with a string of one or more digits. For example, entering CONTROL-U r means insert rrrr (4 * 1), whereas CONTROL-U CONTROL-U r means insert rrrrrrrrrrrrrrrr (4 * 4 * 1). For quick partial scrolling of a tall window, you may find it convenient to use repeated sequences of CONTROL-U CONTROL-V to scroll down four lines, CONTROL-U META-v to scroll up four lines, CONTROL-U CONTROL-U CONTROL-V to scroll down 16 lines, or CONTROL-U CONTROL-U META-v to scroll up 16 lines. Point and the Cursor Point is the place in a buffer where editing takes place and is where the cursor is positioned. Strictly speaking, Point is the left edge of the cursor—it is thought of as lying between two characters. Each window has its own Point, but there is only one cursor. When the cursor is in a window, moving the cursor also moves Point. Switching the cursor out of a window does not change that window's Point; it is in the same place when you switch the cursor back to that window. All of the cursor-movement commands described previously also move Point. Scrolling Through a Buffer CONTROL-V META-v CONTROL-L A buffer is likely to be much larger than the window through which it is viewed, so you need a way of moving the display of the buffer contents up or down to position the interesting part in the window. Scrolling forward refers to moving the text upward, with new lines entering at the bottom of the window. Use CONTROL-V or the PAGEDOWN key to scroll forward one window (minus two lines for context). Scrolling backward refers to moving the text downward, with new lines entering at the top of the window. Use META-v or the PAGEUP key to scroll backward one window (again leaving two lines for context). Pressing CONTROL-L clears the screen and repaints it, moving the current line to the center of the window. This command is useful if the screen becomes garbled. A numeric argument to CONTROL-V or META-v means "scroll that many lines"; thus CONTROL-U 10 CONTROL-V means scroll forward ten lines. A numeric argument to CONTROL-L means "scroll the text so the cursor is on that line of the window," where 0 means the top line and –1 means the bottom, just above the Mode Line. Scrolling occurs automatically if you exceed the window limits with CONTROL-P or CONTROL-N. META-<META-> You can move the cursor to the beginning of the buffer with META-< or to the end of the buffer with META->. Erasing Text Delete versus kill When you erase text you can discard it or move it into a holding area and optionally bring it back later. The term delete means permanently discard, and the term kill means move to a holding area. The holding area, called the Kill Ring, can hold several pieces of killed text. You can use the text in the Kill Ring in many ways (refer to "Cut and Paste: Yanking Killed Text" on page 215). The META-d command kills from the cursor forward to the end of the current word. CONTROL-K kills forward to the end of the current line. It does not delete the line-ending LINEFEED character unless Point and the cursor are just to the left of the LINEFEED. This setup allows you to reach the left end of a line with CONTROL-A, kill the whole line with CONTROL-K, and then immediately type a replacement line without having to reopen a hole for the new line. Another consequence is that, from the beginning of the line, it takes CONTROL-K CONTROL-K (or CONTROL-U 2 CONTROL-K) to kill the text and close the hole. Searching The emacs editor has several types of search commands. You can search in the following ways:   Incrementally for a character string   Incrementally for a regular expression (possible but uncommon)   For a complete character string   For a complete regular expression (Appendix A) You can run each of the four types of searches either forward or backward in the buffer. The complete searches behave in the same manner as a search on other editors. Searching begins only when the search string is complete. In contrast, an incremental search begins when you type the first character of the search string and keeps going as you enter additional characters. Initially this approach may sound confusing, but it is surprisingly useful. Incremental Searches CONTROL-S CONTROL-R A single command selects the direction of and starts an incremental search. CONTROL-S starts a forward incremental search, and CONTROL-R starts a reverse incremental search. When you start an incremental search, emacs prompts you with I-search: in the Echo Area. When you enter a character, it immediately searches for that character in the buffer. If it finds that character, emacs moves Point and cursor to that position so you can see the search progress. If the search fails, emacs tells you so. After you enter each character of the search string, you can take one of several actions depending on the result of the search to that point.   The search finds the string you are looking for in the buffer, leaving the cursor positioned just to its right. Stop the search and leave the cursor in its new position by pressing RETURN. (Any emacs command not related to searching will also stop the search but remembering exactly which ones apply can be difficult. For a new user, RETURN is safer.)   The search finds a string but it is not the one you are looking for. You can refine the search string by adding another letter, press CONTROL-R or CONTROL-S again to look for the next occurrence of this search string, or press RETURN to stop the search and leave the cursor where it is.   The search hits the beginning or end of the buffer and reports Failing I-Search. You can proceed in several ways at this point. o o If you mistyped the search string, press BACKSPACE as needed to remove characters from the search string. The text and cursor in the window jump backward in step with your removal of characters. o o If you want to wrap past the beginning or end of the buffer and continue searching, you can force a wrap by pressing CONTROL-R or CONTROL-S again. o o If the search has not found the string you are looking for but you want to leave the cursor at its current position, press RETURN to stop the search. o o If the search has gone wrong and you just want to get back to where you started, press CONTROL-G (the quit character). From an unsuccessful search a single CONTROL-G backs out all the characters in the search string that could not be found. If this action returns you to a place you wish to continue searching from, you can add characters to the search string again. If you do not want to continue the search from that position, a second CONTROL-G stops the search and leaves the cursor where it was initially. Nonincremental Searches CONTROL-S RETURN CONTROL-R RETURN If you prefer that your searches succeed or fail without showing all the intermediate results, you can give the nonincremental command CONTROL-S RETURN to search forward or CONTROL-R RETURN to search backward. Searching does not begin until you enter a search string in response to the emacs prompt and press RETURN again. Neither of these commands wraps past the end of the buffer. Regular Expression Searches You can perform both incremental and nonincremental regular expression searching in emacs. Use the commands listed in Table 7-2 to begin a regular expression search. Table 7-2. Searching for regular expressions Command Result META-CONTROL-s Incrementally searches forward for a regular expression; prompts for a regular expression one character at a time META-x isearch-backward-regexp Incrementally searches backward for a regular expression; prompts for a regular expression one character at a time META-x isearch-complete RETURN Prompts for and then searches forward for a complete regular expression META-x isearch-backward-regexp RETURN Prompts for and then searches backward for a complete regular expression Page 212 ABC Amber CHM Converter Trial version, http://www.processtext.com/abcchm.html < Day Day Up > Page 213 ABC Amber CHM Converter Trial version, http://www.processtext.com/abcchm.html < Day Day Up > Page 214 ABC Amber CHM Converter Trial version, http://www.processtext.com/abcchm.html Online Help The emacs help system is always available. With the default key bindings, you can start it with CONTROL-H. The help system then prompts you for a one-letter help command. If you do not know which help command you want, type ? or CONTROL-H to switch the current window to a list of help commands, each with a one-line description; emacs again requests a one-letter help command. If you decide you do not want help after all, type CONTROL-G to cancel your help request and return to the former buffer. If the help output is only a single line, it appears in the Echo Area. If it consists of more text, the output appears in its own window. Use CONTROL-V and META-v to scroll forward and backward through the buffer (page 206). You can move the cursor between windows with CONTROL-X o (lowercase "o"). See page 222 for a discussion on working with multiple windows. On many terminals the BACKSPACE or LEFT ARROW key generates CONTROL-H. If you forget that you are using emacs and try to back over a few characters, you may unintentionally enter the help system. This action does not pose a danger to the buffer you are editing, but it can be unsettling to lose the window contents and not have a clear picture of how to restore it. While you are being prompted for the type of help you want you can type CONTROL-G to remove the prompt and return to editing the buffer. Some users elect to put help on a different key (page 237). Table 7-3 lists some of the help commands. Table 7-3. Help commands Command Type of help offered CONTROL-H a Prompts for a string and displays a list of commands whose names contain that string. CONTROL-H b Displays a long table of the key bindings in effect. CONTROL- H c key-sequence Displays the name of the command bound to key-sequence. Multiple key sequences are allowed. For a long key sequence where only the first part is recognized, the command describes the first part and quietly inserts the unrecognized part into the buffer. This can happen with three-character function keys (F1, F2, and so on, on the keyboard) that generate character sequences such as ESCAPE [ SHIFT. CONTROL-H f Prompts for the name of a Lisp function and displays the documentation for it. Because commands are Lisp functions, you can use a command name with this command. CONTROL-H i Displays the top info (page 32) menu where you can browse emacs or other documentation. CONTROL-H k key-sequence Displays the name and documentation of the command bound to key-sequence. (See the notes on CONTROL-H c.) CONTROL-H l (lowercase "l") Displays the last 100 characters typed. The record is kept after the first-stage keyboard translation. If you have customized the keyboard translation table, you must make a mental reverse translation. CONTROL-H m Displays the documentation and special key bindings for the current Major mode (Text, C, Fundamental, and so on, [page 226]). CONTROL-H n Displays the emacs news file which lists recent changes to emacs, ordered with the most recent changes first. See the tip "Closing the help window" on page 210. CONTROL-H t Runs an emacs tutorial session. See the tip "Closing the help window" on page 210. CONTROL-H v Prompts for a Lisp variable name and displays the documentation for that variable. CONTROL-H w Prompts for a command name and identifies any key sequence bound to that command. Multiple key sequences are allowed. (See the notes on CONTROL-H c.) tip: Closing the help window To delete the help window while the cursor is in the window that holds the text you are editing, type CONTROL-X 1 (one). Alternatively, you can move the cursor to the help window (CONTROL-X o [lowercase "o"]) and type CONTROL-X 0 (zero) to delete the current window. If help displays a window that occupies the entire screen, as is the case with CONTROL-H n (emacs news) and CONTROL-H t (emacs tutorial), you can kill the help buffer with CONTROL-X k or use CONTROL-X b to switch buffers (both on page 220). As this abridged presentation makes clear, you can use the help system to browse through the emacs internal Lisp system. For the curious, following is Stallman's list of strings that match many names in the Lisp system. To get a view of the internal functionality of emacs, you can use any of these strings with CONTROL-H a (help system list of commands) or META-x apropos (prompts for a string and lists variables whose names contain that string). backward dir insert previous view beginning down kill region what buffer end line register window case file list screen word change fill mark search yank char find mode sentence defun forward next set delete goto page sexp describe indent paragraph up Page 215 ABC Amber CHM Converter Trial version, http://www.processtext.com/abcchm.html < Day Day Up > Page 216 ABC Amber CHM Converter Trial version, http://www.processtext.com/abcchm.html < Day Day Up > Page 217 ABC Amber CHM Converter Trial version, http://www.processtext.com/abcchm.html Advanced Editing The basic emacs commands suffice for many editing tasks but the serious user will quickly discover the need for more power. This section presents some of the more advanced emacs capabilities. Undoing Changes An editing session begins when you read a file into an emacs buffer. At that point the buffer content matches the file exactly. As you insert text and give editing commands, the buffer content becomes increasingly more different from the file. If you are satisfied with the changes, you can write the altered buffer back out to the file and end the session. Near the left end of the Mode Line (Figure 7-1, page 198) is an indicator that shows the modification state of the buffer that is displayed in the window. The three possible states are – – (not modified), ** (modified), and %% (readonly). The emacs editor keeps a record of all the keys you have pressed (text and commands) since the beginning of the editing session, up to a limit currently set at 20,000 characters. If you are within this limit, it is possible to undo the entire session for this buffer, one change at a time. If you have multiple buffers (page 220), each buffer has its own undo record. Undoing is considered so important that it has a backup key sequence, just in case some keyboards cannot easily handle the primary sequence. The two sequences are CONTROL-_ (underscore, which on old ASR-33 TTY keyboards was LEFT ARROW) and CONTROL-X u. When you type CONTROL-_, emacs undoes the last command and moves the cursor to that position in the buffer so you can see what happened. If you type CONTROL-_ a second time, the next-to-last command is undone, and so on. If you keep typing CONTROL-_, eventually you will get the buffer back to its original unmodified state and the ** Mode Line indicator will change to – –. When you break the string of Undo commands with anything (text or any command except Undo), all reverse changes you made during the string of undos become a part of the change record and can themselves be undone. This strategy offers a way to redo some or all the undo operations. If you decide you backed up too far, type a command (something innocuous, such as CONTROL-F , that does not change the buffer), and begin undoing in reverse. Table 7-4 lists some examples of Undo commands. Table 7-4. Undo commands Commands Result CONTROL-_ Undoes the last change CONTROL-_ CONTROL-F CONTROL-_ Undoes the last change and changes it back again CONTROL-_ CONTROL-_ Undoes the last two changes CONTROL-_ CONTROL-_ CONTROL-F CONTROL-_ CONTROL-_ Undoes two changes and changes them both back again CONTROL-_ CONTROL-_ CONTROL-F CONTROL-_ Undoes two changes and changes one of them back again If you do not remember the last change you made, you can type CONTROL-_ and undo it. If you wanted to make this change, type CONTROL-F CONTROL-_ and make it again. If you modified a buffer by accident, you can keep typing CONTROL-_ until the Mode Line indicator shows – – once more. If the buffer is completely ruined and you want to start over, issue the command META-x revert-buffer to discard the current buffer contents and reread the associated file. The emacs editor asks you to confirm this command. Mark and Region Point is the current editing position in a buffer which you can move anywhere within the buffer by moving the cursor. It is also possible to set a marker called Mark in the buffer. The contiguous characters between Point and Mark (either one may come first) are called the Region. Many commands operate on a buffer's Region, not just on the characters near Point. Moving Mark and Establishing a Region CONTROL-@ CONTROL-SPACE CONTROL-X CONTROL-X Mark is not as easy to move as Point. Once set, Mark can be moved only by setting it somewhere else. Each buffer has only one Mark. The CONTROL-@ (or CONTROL-SPACE) command explicitly sets Mark at the current cursor (and Point) position. Some keyboards generate CONTROL-@ when you type CONTROL-Q. Although this is not really a backup key binding, it is occasionally a convenient alternative. You can use CONTROL-X CONTROL-X to exchange Point and Mark (and move the cursor to the new Point). To establish a Region, you usually position the cursor (and Point) at one end of the desired Region, set Mark with CONTROL-@, and then move the cursor (and Point) to the other end of the Region. If you forget where you left Mark, you can move the cursor back to it again with CONTROL-X CONTROL-X or hop back and forth with repeated CONTROL-X CONTROL-X to show the Region more clearly. If a Region boundary is not to your liking, you can swap Point and Mark using CONTROL-X CONTROL-X to move the cursor from one end of the Region to the other and then move Point. Continue until you are satisfied with the Region. Operating on a Region Table 7-5 lists selected commands that operate on a Region. Give the command CONTROL-H a region to see a complete list of these commands. Table 7-5. Operating on a region Command Result META-w Copies the Region nondestructively (without killing it) to the Kill Ring CONTROL-W Kills the Region META-x print-region Sends the Region to the printer META-x append-to-buffer Prompts for a buffer and appends the Region to that buffer META-x append-to-file Prompts for a filename and appends the Region to that file META-x capitalize-region Converts the Region to uppercase The Mark Ring Each time you set Mark in a buffer, you are also pushing Mark's former location onto the buffer's Mark Ring. The Mark Ring is organized as a FIFO (first-in-first-out) list and holds the 16 most recent locations where Mark was set. Each buffer has its own Mark Ring. This record of recent Mark history is useful because it often holds locations that you want to jump back to quickly. Jumping to a location pointed to by the Mark Ring can be faster and easier than scrolling or searching your way through the buffer to find the site of a previous change. CONTROL-U CONTROL-@ To work your way backward along the trail of former Mark locations, give the command CONTROL-U CONTROL-@ one or more times. Each time you give the command, emacs   Moves Point (and the cursor) to the current Mark location   Saves the current Mark location at the oldest end of the Mark Ring   Pops off the youngest (most recent) Mark Ring entry and sets Mark Each additional CONTROL-U CONTROL-@ command causes emacs to move Point and the cursor to the previous entry on the Mark Ring. Although this process may seem complex, it really just makes a safe jump to a previous Mark location. It is safe because each jump's starting point is recirculated through the Mark Ring, where it is easy to find again. You can jump to all previous locations on the Mark Ring (it may be fewer than 16) by giving the command CONTROL-U CONTROL-@ again and again. You can go around the ring as many times as you like and stop whenever you want. Setting Mark Automatically Some commands set Mark automatically: The idea is to leave a bookmark before moving Point a long distance. For example, META-> sets Mark before jumping to the end of the buffer. You can then return to your starting position with CONTROL-U CONTROL-@. Searches behave similarly. To avoid surprises the message Mark Set appears in the Echo Area whenever Mark is set, either explicitly or implicitly. Cut and Paste: Yanking Killed Text Recall that killed text is not discarded but rather is kept in the Kill Ring. The Kill Ring holds the last 30 pieces of killed text and is visible from all buffers. Retrieving text from the Kill Ring is called yanking. This terminology is the opposite of that used in vim: In vim yanking pulls text from the buffer, and putting puts text into the buffer. Killing and yanking—which are roughly analogous to cutting and pasting—are emacs's primary mechanisms for moving and copying text. Table 7-6 lists the most common kill and yank commands. Table 7-6. Common kill and yank commands Command Result META-d Kills to end of current word META- D Kills from beginning of previous word CONTROL-K Kills to end of line, not including LINEFEED CONTROL-U 1 CONTROL-K Kills to end of line, including LINEFEED CONTROL-U 0 CONTROL-K Kills from beginning of line META-w Copies the Region (between Point and Mark) to the Kill Ring but does not erase the Region from the buffer CONTROL-W Kills the Region (between Point and Mark) META-z char Kills up to next occurrence of char CONTROL-Y Yanks the most recently killed text into the current buffer at Point, sets Mark at the beginning of this text, and positions Point and the cursor at the end META-y Erases the just-yanked text, rotates the Kill Ring, and yanks the next item (only after CONTROL-Y or META-y) To move two lines of text, move Point to the beginning of the first line and then enter CONTROL-U 2 CONTROL-K to kill two lines. Next move Point to the destination position, and enter CONTROL-Y. To copy two lines of text, move Point to the beginning of the first line and give the commands CONTROL-U 2 CONTROL-K CONTROL-Y to kill and then yank back immediately. Then move Point to the destination position and type CONTROL-Y. To copy a larger piece of the buffer, set the Region to cover this piece and then type CONTROL-W CONTROL-Y to kill and yank back at once. Next move Point to the destination, and type CONTROL-Y. You can also set the Region and use META-w to copy the Region to the Kill Ring. The Kill Ring is organized as a fixed-length FIFO list, with each new entry causing the eldest to be discarded (once you build up to 30 entries). Simple cut-and-paste operations generally use only the newest entry. The older entries are retained to give you time to change your mind about a deletion. If you do change your mind you can "mine" the Kill Ring like an archaeological dig, working backward through time and down through the strata of killed material to copy a specific item back into the buffer. To view every entry in the Kill Ring, begin a yanking session by pressing CONTROL-Y. This action copies the youngest entry to your buffer at the current cursor position. If this entry is not the item you want, continue the yanking session by pressing META-y. This action erases the previous yank and copies the next youngest entry to the buffer at the current cursor position. If this still is not the item you wanted, press META-y again to erase it and retrieve a copy of the next entry, and so on. You can continue giving META-y commands all the way back to the oldest entry. If you continue to press META-y, you wrap back to the youngest entry again. In this manner you can examine each entry as many times as you wish. The sequence used in a yanking session consists of CONTROL-Y followed by any mixture of CONTROL-Y and META-y. If you type any other command after META-y, the sequence is broken and you must give the CONTROL-Y command again to start another yanking session. As you work backward in the Kill Ring, it is useful to think of this process as advancing a Last Yank pointer back through history to increasingly older entries. This pointer is not reset to the youngest entry until you give a new kill command. Using this technique, you can work backward partway through the Kill Ring with CONTROL-Y and a few META-y commands, give some commands that do not kill, and then pick up where you left off with another CONTROL-Y and a succession of META-y commands. It is also possible to position the Last Yank pointer with positive or negative numeric arguments to META-y . Refer to the online documentation for more information. Inserting Special Characters As stated earlier, emacs inserts everything that is not a command into the buffer at the position of the cursor. To insert characters that would ordinarily be emacs commands, you can use the emacs escape character: CONTROL-Q. There are two ways of using this escape character:   CONTROL-Q followed by any other character inserts that character in the buffer, no matter what command interpretation it was supposed to have.   CONTROL-Q followed by three octal digits inserts a byte with that value in the buffer. tip: CONTROL-Q Depending on the way your terminal is set up, CONTROL-Q may clash with software flow control. If CONTROL-Q seems to have no effect, it is most likely being used for flow control. In that case you must bind another key to the command quoted-insert (page 237). Global Buffer Commands The vim editor and its predecessors have global commands for bufferwide search and replace operations. Their default operating Region is the entire buffer. The emacs editor has a similar family of commands. Their operating Region begins at Point and extends to the end of the buffer. If you wish to operate on the entire buffer, use META-< to set Point at the beginning of the buffer before issuing the command. Line-Oriented Operations The commands listed in Table 7-7 take a regular expression and apply it to the lines between Point and the end of the buffer. Table 7-7. Line-oriented operations Command Result META-x occur Prompts for a regular expression and copies each line with a match for the expression in a buffer named *Occur* META-x delete-matching-lines Prompts for a regular expression and deletes each line with a match for the expression META-x delete-non-matching-lines Prompts for a regular expression and deletes each line that does not have a match for that expression The META-x occur command puts its output in a special buffer named *Occur*, which you can peruse and discard or use as a jump menu to reach each line quickly. To use the *Occur* buffer as a jump menu, switch to it (CONTROL-X o [lowercase "o"]), move the cursor to the copy of the desired destination line, and type CONTROL-C CONTROL-C. This command moves the cursor to the buffer that was searched and positions it on the line that the regular expression matched. As with any buffer change, you can undo the deletion commands. Unconditional and Interactive Replacement The commands listed in Table 7-8 operate on the characters between Point and the end of the buffer, changing every string match or regular expression match. An unconditional replacement makes all replacements automatically. An interactive replacement gives you the opportunity to see and approve each replacement before it is made. Table 7-8. Replacement commands Command Result META-x replace-string Prompts for string and newstring and replaces every instance of string with newstring. Point is left at the site of the last replacement, but Mark is set when you give the command, so you can return to it with CONTROL-U CONTROL-@. META-x replace-regexp Prompts for regexp and newstring and replaces every match for regexp with newstring. Point is left at the site of the last replacement, but Mark is set when you give the command, so you can return to it with CONTROL-U CONTROL-@. META-% string or META-x query-replace The first form uses string, the second form prompts for string. Both forms prompt for newstring, query each instance of string, and, depending on your response, replace it with newstring. Point is left at the site of the last replacement, but Mark is set when you give the command, so you can return to it with CONTROL-U CONTROL-@. META-x query-replace-regexp Prompts for regexp and newstring, queries each match for regexp, and, depending on your response, replaces it with newstring. Point is left at the site of the last replacement, but Mark is set when you give the command, so you can return to it with CONTROL-U CONTROL-@. If you perform an interactive replacement, emacs displays each instance of string or match for regexp and prompts you for an action to take. Table 7-9 lists some of the possible responses. Table 7-9. Responses to interactive replacement prompts Response Meaning RETURN Do not do any more replacements; quit now. SPACE Make this replacement and go on. DELETE Do not make this replacement. Skip it and go on. , (comma) Make this replacement, display the result, and ask for another command. Any command is legal except DELETE is treated like SPACE and does not undo the change. . (period) Make this replacement and quit searching. ! (exclamation point) Replace this and all remaining instances without asking any more questions. Files When you visit (emacs terminology for "call up") a file, emacs reads it into a buffer (page 220), allows you to edit the buffer, and eventually saves the buffer back to the file. The commands discussed here relate to visiting and saving files. META-x pwd META-x cd Each emacs buffer keeps a record of its default directory (the directory the file was read from or the working directory, if it is a new file) that is prepended to any relative pathname you specify. This convenience is meant to save some typing. Enter META-x pwd to print the default directory for the current buffer or META-x cd to prompt for a new default directory and assign it to this buffer. Visiting Files The emacs editor deals well with visiting a file that has already been called up and whose image is now in a buffer. After a check of the modification time to ensure that the file has not been changed since it was last called up, emacs simply switches to that buffer. Table 7-10 lists commands used to visit files. Table 7-10. Visiting files Command Result CONTROL-X CONTROL-F Prompts for a filename and reads its contents into a freshly created buffer. Assigns the file's simple filename as the buffer name. Other buffers are unaffected. It is common and often useful to have several files open simultaneously for editing. CONTROL-X CONTROL-V Prompts for a filename and replaces the current buffer with a buffer containing the contents of the requested file. The current buffer is destroyed. CONTROL-X 4 CONTROL-F Prompts for a filename and reads its contents into a new buffer. Assigns the file's simple filename as the buffer name. Creates a new window for this buffer and selects that window. The window selected before the command still displays the buffer it was showing before this operation, although the new window may cover up part of the old window. To create a new file, simply call it up. An empty buffer is created and properly named so you can eventually save it. The message (New File) appears in the Echo Area, reflecting emacs's understanding of the situation. Of course, if this "new file" grew out of a typographical error, you will probably want to issue CONTROL-X CONTROL-V with the correct name. Saving Files You save a buffer by copying its contents back to the original file you called up. The relevant commands are listed in Table 7-11. Table 7-11. Saving files Command Result CONTROL-X CONTROL-S This workhorse file-saving command saves the current buffer into its original file. If the current buffer is not modified, you get the following message: (No changes need to be saved). CONTROL-X s For each modified buffer, you are asked whether you wish to save it. Answer y or n. This command is given automatically as you exit from emacs and allows you to save any buffers that have been modified but not yet written out. If you want to save intermediate copies of your work, you can give this command at any time. META-x set-visited-file-name Prompts for a filename and sets this name as the current buffer's "original" name. CONTROL-X CONTROL-W Prompts for a filename, sets this name as the "original" name for the current buffer, and saves the current buffer into that file. It is equivalent to META-x set-visited-file-name followed by CONTROL-X CONTROL-S. META-~ (tilde) Clears modified flag from the current buffer. If you mistakenly typed META-~ against a buffer with changes you want to keep, you need to make sure that the modified condition and its ** indicator are turned back on before leaving emacs, or all the changes will be lost. One easy way to do this is to insert a SPACE into the buffer and then remove it again with DELETE. Buffers An emacs buffer is a storage object that you can edit. It often holds the contents of a file but can also exist without being associated with a file. You can select only one buffer at a time, designated as the current buffer. Most commands operate only on the current buffer, even when multiple windows show two or more buffers on the screen. For the most part each buffer is its own world: It has its own name, its own modes, its own file associations, its own modified state, and perhaps its own special key bindings. You can use the commands shown in Table 7-12 to create, select, list, and manipulate buffers. Table 7-12. Work with buffers Command Result CONTROL-X b Prompts for a buffer name and selects it. If the buffer you name does not exist, this command creates it. CONTROL-X 4 b Prompts for a buffer name and selects it in another window. The existing window is not disturbed, although the new window may overlap it. CONTROL-X CONTROL-B Creates a buffer named * Buffer list * and displays it in another window. The existing window is not disturbed, although the new window may overlap it. The new buffer is not selected. In the * Buffer list * buffer, each buffer's data is shown along with the name, size, mode(s), and original filename. A % appears for a readonly buffer, a * indicates a modified buffer, and . appears for the selected buffer. META-x rename-buffer Prompts for a new buffer name and gives this new name to the current buffer. CONTROL-X CONTROL-Q Toggles the current buffer's readonly status and the associated %% Mode Line indicator. This can be useful to prevent accidental buffer modification or to allow modification of a buffer when visiting a readonly file. META-x append-to-buffer Prompts for a buffer name and appends the Region (between Point and Mark) to the end of that buffer. META-x prepend-to-buffer Prompts for a buffer name and prepends the Region (between Point and Mark) to the beginning of that buffer. META-x copy-to-buffer Prompts for a buffer name and deletes the contents of the buffer before copying the Region (between Point and Mark) to that buffer. META-x insert-buffer Prompts for a buffer name and inserts the entire contents of that buffer into the current buffer at Point. CONTROL-X k Prompts for a buffer name and deletes that buffer. If the buffer is modified but unsaved, you are asked to confirm the operation. META-x kill-some-buffers Goes through the entire buffer list and offers the chance to delete each buffer. As with CONTROL-X k, you are asked to confirm the kill command if a modified buffer is not yet saved. caution: Did you modify a buffer by mistake? When you give a CONTROL-X s command, you may discover files whose buffers were modified by mistake as emacs tries to save the wrong changes back to the file. When emacs prompts you to confirm the save, do not answer y if you are not sure. First exit from the CONTROL-X s dialog by typing n to any saves you are not sure about. You then have several options:   Save the suspicious buffer into a temporary file with CONTROL-X CONTROL-W and analyze it later.   Undo the changes with a string of CONTROL-_ commands until the ** indicator disappears from the buffer's Mode Line.   If you are sure that all the changes are wrong, use META-x revert-buffer to get a fresh copy of the file.   Kill the buffer outright. Because it is modified, emacs asks whether you are sure before carrying out this command.   Give the META-~ (tilde) command to clear the modified condition and ** indicator. A subsequent CONTROL-X s then believes that the buffer does not need to be written. caution: You can exit without first getting a warning Clearing the modified flag (META-~) allows you to exit without saving a modified buffer with no warning. Make sure you know what you are doing when you use META-~. Windows An emacs window is a viewport that looks into a buffer. The emacs screen begins by displaying a single window, but this screen space can later be divided among two or more windows. On the screen the current window holds the cursor and views the current buffer. For a tip on terminology, see "The screen and emacs windows" on page 197. A window views one buffer at a time. You can switch the buffer that a window views by giving the command CONTROL-X b buffer-name in the current window. Multiple windows can view one buffer; each window may view different parts of the same buffer; and each window has its own Point value. Any change to a buffer is reflected in all the windows viewing that buffer. Also, a buffer can exist without a window open on it. Splitting a Window One way to divide the screen is to split the starting window explicitly into two or more pieces. The command CONTROL-X 2 splits the current window in two, with one new window appearing above the other. A numeric argument is taken as the size of the upper window in lines. The command CONTROL-X 3 splits the current window in two, with the new windows being arranged side by side ( Figure 7-7). A numeric argument is taken as the number of columns to give the left window. For example, CONTROL-U CONTROL-X 2 splits the current window in two; because of the special "times 4" interpretation of CONTROL-U standing alone, the upper window is given four lines (barely enough to be useful). Figure 7-7. Splitting a window vertically [View full size image] Although these commands split the current window, both windows continue to view the same buffer. You can select a new buffer in either or both new windows, or you can scroll each window to show different portions of the same buffer. Manipulating Windows CONTROL-X o META-CONTROL-V You can use CONTROL-X o (lowercase "o") to select the other window. If more than two windows appear on the screen, a sequence of CONTROL-X o commands cycles through them in top-to-bottom, left-to-right order. The META-CONTROL-V command scrolls the other window. If more than two windows are visible, the command scrolls the window that CONTROL-X o would select next. You can use a positive or negative scrolling argument, just as with CONTROL-V scrolling in the current window. Other-Window Display CONTROL-X 4b CONTROL-X 4f In normal emacs operation, explicit window splitting is not nearly as common as the implicit splitting done by the family of CONTROL-X 4 commands. The CONTROL-X 4b command, for example, prompts for a buffer name and selects it in the other window. If there is no other window, this command begins with a half-and-half split that arranges the windows one above the other. The CONTROL-X 4f command prompts for a filename, calls it up in the other window, and selects the other window. If there is no other window, this command begins with a half-and-half split that arranges the windows one above the other. Adjusting and Deleting Windows CONTROL-X 0 CONTROL-X 1 Windows may be destroyed when they get in the way. No data is lost in the window's associated buffer with this operation, and you can make another window whenever you like. The CONTROL-X 0 (zero) command deletes the current window and gives its space to its neighbors; CONTROL-X 1 deletes all windows except the current window. META-x shrink-window CONTROL-X ^ CONTROL-X } CONTROL-X { You can also adjust the dimensions of the current window, once again at the expense of its neighbors. To make a window shorter, use META-x shrink-window . Use CONTROL-X ^ to increase the height of a window, CONTROL-X } to make the window wider, and CONTROL-X { to make the window narrower. Each of these commands adds or subtracts one line or column to or from the window, unless you precede the command with a numeric argument. The emacs editor has its own guidelines for a window's minimum useful size and may destroy a window before you force one of its dimensions to zero. Although the window may disappear, the buffer remains intact. Foreground Shell Commands The emacs editor can run a subshell (a shell that is a child of the shell that is running emacs—refer to " Executing a Command" on page 294) to execute a single command line, optionally with standard input coming from the Region of the current buffer and optionally with standard output replacing the Region ( Table 7-13). This process is analogous to executing a shell command from the vim editor and having the input come from the file you are editing and the output go back to the same file (page 183). As with vim, how well this process works depends in part on the capabilities of the shell. Table 7-13. Foreground shell commands Command Result META-! (exclamation point) Prompts for a shell command, executes it, and displays the output CONTROL-U META-! (exclamation point) Prompts for a shell command, executes it, and inserts the output at Point META- | (vertical bar) Prompts for a shell command, gives the Region as input, filters it through the command, and displays the output CONTROL-U META- | (vertical bar) Prompts for a shell command, gives the Region as input, filters it through the command, deletes the old Region, and inserts the output in that position The emacs editor can also start an interactive subshell that runs continuously in its own buffer. See "Shell Mode" on page 234 for more information. Background Shell Commands The emacs editor can run processes in the background, with their output being fed into a growing emacs buffer that does not have to remain in view. You can continue editing while the background process runs and look at its output later. Any shell command can be run in this way. The growing output buffer is always named *compilation*. You can read it, copy from it, or edit it in any way, without waiting for the background process to finish. Most commonly this buffer is used to review the output of program compilation and to correct any syntax errors found by the compiler. META-x compile To run a process in the background, give the command META-x compile to prompt for a shell command and begin executing it as a background process. The screen splits in half to show the *compilation* buffer. You can switch to the *compilation* buffer and watch the execution, if you wish. To make the display scroll as you watch, position the cursor at the very end of the text with a META-> command. If you are not interested in this display just remove the window with CONTROL-X 0 (zero) if you are in it or CONTROL-X 1 otherwise and keep working. You can switch back to the *compilation* buffer later with CONTROL-X b. You can kill the background process with META-x kill-compilation. The emacs editor asks for confirmation and then kills the background process. If standard format error messages appear in *compilation*, you can automatically visit the line in the file where each error occurred. Give the command CONTROL-X' (back tick) to split the screen into two windows and visit the file and line of the next error message. Scroll the *compilation* buffer until this error message appears at the top of its window. Use CONTROL-U CONTROL-X' to start over with the first error message and visit that file and line. Page 218 ABC Amber CHM Converter Trial version, http://www.processtext.com/abcchm.html < Day Day Up > Page 219 ABC Amber CHM Converter Trial version, http://www.processtext.com/abcchm.html < Day Day Up > Page 220 ABC Amber CHM Converter Trial version, http://www.processtext.com/abcchm.html [...]... UNIX systems Some of these scripts appear in Linux as Bourne Again Shell scripts Although the Bourne Again Shell includes many extensions and features not found in the original Bourne Shell, bash maintains compatibility with the original Bourne Shell so you can run Bourne Shell scripts under bash On UNIX systems the original Bourne Shell is named sh On Linux systems sh is a symbolic link to bash ensuring... good place to start: www.gnu.org/software/emacs The comp.emacs and gnu.emacs.help newsgroups offer support for and a general discussion about emacs Access to emacs The emacs editor is included with most Linux distributions You can download and install emacs with Apt (page 850) or yum (page 848) You can download the latest version of the source code from www.gnu.org The Free Software Foundation can be... login shell (such as you get by giving the command bash), or a noninteractive shell (one used to execute a shell script) You must have read access to a startup file to execute the commands in it Typically Linux distributions put appropriate commands in some of these files This section covers bash startup files See page 342 for information on tcsh startup files Login Shells The files covered in this section . two-key sequences starting with CONTROL-C. Each sequence is similar to the ordinary control characters found in Linux but uses a leading CONTROL-C. Table 7-20. Shell mode Command Result RETURN If Point is at. and a general discussion about emacs. Access to emacs The emacs editor is included with most Linux distributions. You can download and install emacs with Apt (page 850) or yum (page 848). You

Ngày đăng: 07/07/2014, 09:20

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan