Artifact 8470ae0bbd7f0839db6cae6f5a08d2839d432a9d90b0db70411aab3b88eb66d1:
- File
psl-1983/3-1/doc/nmode/nm-killing.ibm
— part of check-in
[eb17ceb7f6]
at
2020-04-21 19:40:01
on branch master
— Add Reduce 3.0 to the historical section of the archive, and some more
files relating to version sof PSL from the early 1980s. Thanks are due to
Paul McJones and Nelson Beebe for these, as well as to all the original
authors.git-svn-id: https://svn.code.sf.net/p/reduce-algebra/code/historical@5328 2bfe0521-f11c-4a00-b80e-6202646ff360 (user: arthurcnorman@users.sourceforge.net, size: 18421) [annotate] [blame] [check-ins using] [more...]
,MOD - R 44X (11 April 1983) <PSL.NMODE-DOC>NM-KILLING.ibm PLA 97_LAS 80 0_FIR 2_INT 1 6.0_TYP 160 163 162 193_INP 12 101_MAR 2 ,END ,PRO 201 OUT 160_202 OUT 163_203 OUT 162_204 OUT 193 205 INP 12 101_206 INP 12 102 ,END ,DEFINE UNIT SPACE FUNCTION ,END 201/NMODE Manual (Killing and Moving Text) Page 11-1 202/11. Killing and Moving Text 201/The commonest way of moving or copying text with NMODE is to kill it, and get it back again in one or more places. This is very safe because the last several pieces of killed text are all remembered, and it is versatile, because the many commands for killing syntactic units can also be used for moving those units. There are also other ways of moving text for special purposes. 202/11.1 Deletion and Killing 201/Most commands which erase text from the buffer save it so that you can get it back if you change your mind, or move or copy it to other parts of the buffer. These commands are known as 202/kill 201/commands. The rest of the commands that erase text do not save it; they are known as 202/delete 201/commands. The delete commands include C-D and Backspace, which delete only one character at a time, and those commands that delete only spaces or line separators. Commands that can destroy significant amounts of nontrivial data generally kill. The commands' names and individual descriptions use the words "kill" and "delete" to say which they do. C-D Delete next character. Backspace Delete previous character. M-\ Delete spaces and tabs around point. C-X C-O Delete blank lines around the current line. M-^ Join two lines by deleting the line separator and any indentation. C-K Kill rest of line or one or more lines. C-W Kill region (from point to the mark). M-D Kill word. M-Backspace Kill word backwards. C-X Rubout Kill back to beginning of sentence. M-K Kill to end of sentence. C-M-K Kill Lisp form. C-M-Rubout Kill Lisp form backwards. 202/11.1.1 Deletion 201/The most basic delete commands are C-D and Backspace. C-D deletes the character after the cursor, the one the cursor is "on top of" or "underneath". The cursor doesn't move. Backspace deletes the character before the cursor, and moves the cursor back. Line separators act like single characters when deleted. Actually, C-D and Backspace aren't always delete commands; if you give an argument, they kill instead. This prevents you from losing a great deal of text by typing a large argument to a C-D or Backspace. The other delete commands are those which delete only formatting characters: spaces, tabs and line separators. M-\ (203/delete-horizontal-space-command201/) deletes all the spaces and tab characters before and after point. C-X C-O (203/delete-blank-lines-command201/) deletes all blank lines after the current line, and if the current line is blank deletes all blank lines preceding the current line as well (leaving one blank line, the 201/Page 11-2 NMODE Manual (Deletion) current line). M-^ (203/delete-indentation-command201/) joins the current line and the previous line, or the current line and the next line if given an argument. See Section 13.3 [Indentation], page 3. 202/11.1.2 Killing by Lines 201/The simplest kill command is the C-K command (203/kill-line201/). If given at the beginning of a line, it kills all the text on the line, leaving it blank. If given on a blank line, the blank line disappears. As a consequence, if you go to the front of a non-blank line and type two C-K's, the line disappears completely. More generally, C-K kills from point up to the end of the line, unless it is at the end of a line. In that case it kills the line separator following the line, thus merging the next line into the current one. Invisible spaces and tabs at the end of the line are ignored when deciding which case applies, so if point appears to be at the end of the line, you can be sure the line separator will be killed. If C-K is given a positive argument, it kills that many lines, and the separators that follow them (however, text on the current line before point is spared). With a negative argument, it kills back to a number of line beginnings. An argument of -2 means kill back to the second line beginning. If point is at the beginning of a line, that line beginning doesn't count, so C-U - 2 C-K with point at the front of a line kills the two previous lines. C-K with an argument of zero kills all the text before point on the current line. 202/11.1.3 Other Kill Commands 201/A kill command which is very general is C-W (203/kill-region201/), which kills everything between point and the mark. With this command, you can kill any contiguous characters, if you first set the mark at one end of them and go to the other end. Other syntactic units can be killed: words, with M-Backspace and M-D (See Section 13.1 [Words], page 1.); forms, with C-M-Rubout and C-M-K (See Section 20.5.1 [Forms], page 3.); sentences, with C-X Rubout and M-K (See Section 13.2 [Sentences], page 2.). 202/11.2 Un-Killing 201/Un-killing is getting back text which was killed. The usual way to move or copy text is to kill it and then un-kill it one or more times. C-Y Yank (re-insert) last killed text. M-Y Replace re-inserted killed text with the previously killed text. M-W Save region as last killed text without killing. C-M-W Append next kill to last batch of killed text. Killed text is pushed onto a 202/ring buffer 201/called the 202/kill ring 201/that remembers the last 16 blocks of text that were killed. (Why it is called a ring buffer 201/NMODE Manual (Un-Killing) Page 11-3 will be explained below). The command C-Y (203/insert-kill-buffer201/) reinserts the text of the most recent kill. It leaves the cursor at the end of the text, and puts the mark at the beginning. Thus, a single C-W undoes the C-Y. C-U C-Y leaves the cursor in front of the text, and the mark after. This is only if the argument is specified with just a C-U, precisely. Any other sort of argument, including C-U and digits, has an effect described below. If you wish to copy a block of text, you might want to use M-W (203/copy-region201/), which copies the region into the kill ring without removing it from the buffer. This is approximately equivalent to C-W followed by C-Y, except that M-W does not mark the buffer as "changed" and does not temporarily change the screen. There is only one kill ring, and switching buffers or files has no effect on it. After visiting a new file, whatever was last killed in the previous file is still on top of the kill ring. This is important for moving text between files. 202/11.2.1 Appending Kills 201/Normally, each kill command pushes a new block onto the kill ring. However, two or more kill commands in a row combine their text into a single entry on the ring, so that a single C-Y command gets it all back as it was before it was killed. This means that you don't have to kill all the text in one command; you can keep killing line after line, or word after word, until you have killed it all, and you can still get it all back at once. (Thus we join television in leading people to kill thoughtlessly). Commands that kill forward from point add onto the end of the previous killed text. Commands that kill backward from point add onto the beginning. This way, any sequence of mixed forward and backward kill commands puts all the killed text into one entry without rearrangement. If a kill command is separated from the last kill command by other commands, it starts a new entry on the kill ring, unless you tell it not to by saying C-M-W (203/append-next-kill-command201/) in front of it. The C-M-W tells the following command, if it is a kill command, to append the text it kills to the last killed text, instead of starting a new entry. With C-M-W, you can kill several separated pieces of text and accumulate them to be yanked back in one place. 202/11.2.2 Un-killing Earlier Kills 201/To recover killed text that is no longer the most recent kill, you need the Meta-Y (203/unkill-previous201/) command. The M-Y command should be used only after a C-Y command or another M-Y. It takes the un-killed text inserted by the C-Y and replaces it with the text from an earlier kill. So, to recover the text of the next-to-the-last kill, you first use C-Y to recover the last kill, and then use M-Y to move back to the previous kill. You can think of all the last few kills as living in a ring. After a C-Y command, the text at the front of the ring is also present in the buffer. M-Y "rotates" the ring, bringing the previous string of text to the front, and this text replaces the other text in the buffer as well. Enough M-Y 201/Page 11-4 NMODE Manual (Un-killing Earlier Kills) commands can rotate any part of the ring to the front, so you can get at any killed text as long as it is recent enough to be still in the ring. Eventually the ring rotates all the way around and the most recent killed text comes to the front (and into the buffer) again. M-Y with a negative argument rotates the ring backwards. If the region doesn't match the text at the front of the ring, M-Y is not allowed. In any case, when the text you are looking for is brought into the buffer, you can stop doing M-Y's and it will stay there. It's really just a copy of what's at the front of the ring, so editing it does not change what's in the ring. And the ring, once rotated, stays rotated, so that doing another C-Y gets another copy of what you rotated to the front with M-Y. If you change your mind about un-killing, a C-W gets rid of the un-killed text at any point, after any number of M-Y's. C-W pushes the text onto the ring again. If you know how many M-Y's it would take to find the text you want, then there is an alternative. C-Y with an argument greater than one restores the text the specified number of entries down on the ring. Thus, C-U 2 C-Y gets the next to the last block of killed text. It differs from C-Y M-Y in that C-U 2 C-Y does not permanently rotate the ring. 202/11.3 Other Ways of Copying Text 201/Usually we copy or move text by killing it and un-killing it, but there are other ways that are useful for copying one block of text in many places, or for copying many scattered blocks of text into one place. 202/11.3.1 Accumulating Text 201/You can accumulate blocks of text from scattered locations either into a buffer or into a file if you like. To append them into a buffer, use the command C-X A (203/append-to-buffer-command201/), which inserts a copy of the region into the specified buffer at the location of point in that buffer. This command will prompt for the name of a buffer, which should be terminated with Return. If there is no buffer with the name you specify, one is created. If you append text into a buffer which has been used for editing, the copied text goes into the middle of the text of the buffer, wherever point happens to be in it. Point in that buffer is left at the end of the copied text, so successive uses of C-X A accumulate the text in the specified buffer in the same order as they were copied. If C-X A is given an argument, point in the other buffer is left before the copied text, so successive uses of C-X A add text in reverse order. You can retrieve the accumulated text from that buffer with M-X Insert Buffer (203/insert-buffer-command201/). This inserts a copy of the text in that buffer into the selected buffer. It prompts for the buffer name needed. You can also select the other buffer for editing. See Section 16 [Buffers], page 201/NMODE Manual (Accumulating Text) Page 11-5 1, for background information on buffers. Strictly speaking, C-X A does not always append to the text already in the buffer. But if it is used on a buffer which starts out empty, it does keep appending to the end. Instead of accumulating text within NMODE, in a buffer, you can append text directly into a disk file with the command M-X Append to File (203/append-to-file-command201/). It adds the text of the region to the end of the specified file. M-X Prepend to File (203/prepend-to-file-command201/) adds the text to the beginning of the file instead. Both commands prompt for the file name. The file is changed immediately on disk. These commands are normally used with files that are 203/not 201/being visited in NMODE. They have the advantage of working even on files too large to fit into the NMODE address space. 202/11.3.2 Copying Text Many Times 201/When you want to insert a copy of the same piece of text frequently, the kill ring becomes impractical, since the text moves down on the ring as you edit, and will be in an unpredictable place on the ring when you need it again. For this case, you can use the commands C-X X (203/put-register-command201/) and C-X G (203/get-register-command201/) to move the text. C-X X stores a copy of the text of the region in a place called a register. With an argument, C-X X deletes the text as well. C-X G inserts the text from a register into the buffer. Both these commands prompt for the register name, which must be a single letter or digit. This gives 36 places in which you can store a piece of text. Normally C-X G leaves point before the text and places the mark after, but with a numeric argument it puts point after the text and the mark before.