1@c This is part of the Emacs manual. 2@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2021 Free Software 3@c Foundation, Inc. 4@c See file emacs.texi for copying conditions. 5 6@node Killing 7@chapter Killing and Moving Text 8 9 In Emacs, @dfn{killing} means erasing text and copying it into the 10@dfn{kill ring}. @dfn{Yanking} means bringing text from the kill ring 11back into the buffer. (Some applications use the terms ``cutting'' 12and ``pasting'' for similar operations.) The kill ring is so-named 13because it can be visualized as a set of blocks of text arranged in a 14ring, which you can access in cyclic order. @xref{Kill Ring}. 15 16 Killing and yanking are the most common way to move or copy text 17within Emacs. It is very versatile, because there are commands for 18killing many different types of syntactic units. 19 20@menu 21* Deletion and Killing:: Commands that remove text. 22* Yanking:: Commands that insert text. 23* Cut and Paste:: Clipboard and selections on graphical displays. 24* Accumulating Text:: Other methods to add text to the buffer. 25* Rectangles:: Operating on text in rectangular areas. 26* CUA Bindings:: Using @kbd{C-x}/@kbd{C-c}/@kbd{C-v} to kill and yank. 27@end menu 28 29@node Deletion and Killing 30@section Deletion and Killing 31 32@cindex killing text 33@cindex cutting text 34@cindex deletion 35 Most commands which erase text from the buffer save it in the kill 36ring (@pxref{Kill Ring}). These are known as @dfn{kill} commands, and 37their names normally contain the word @samp{kill} (e.g., 38@code{kill-line}). The kill ring stores several recent kills, not 39just the last one, so killing is a very safe operation: you don't have 40to worry much about losing text that you previously killed. The kill 41ring is shared by all buffers, so text that is killed in one buffer 42can be yanked into another buffer. 43 44 When you use @kbd{C-/} (@code{undo}) to undo a kill command 45(@pxref{Undo}), that brings the killed text back into the buffer, but 46does not remove it from the kill ring. 47 48 On graphical displays, killing text also copies it to the system 49clipboard. @xref{Cut and Paste}. 50 51 Commands that erase text but do not save it in the kill ring are 52known as @dfn{delete} commands; their names usually contain the word 53@samp{delete}. These include @kbd{C-d} (@code{delete-char}) and 54@key{DEL} (@code{delete-backward-char}), which delete only one 55character at a time, and those commands that delete only spaces or 56newlines. Commands that can erase significant amounts of nontrivial 57data generally do a kill operation instead. 58 59 You can also use the mouse to kill and yank. @xref{Cut and Paste}. 60 61@menu 62* Deletion:: Commands for deleting small amounts of text and 63 blank areas. 64* Killing by Lines:: How to kill entire lines of text at one time. 65* Other Kill Commands:: Commands to kill large regions of text and 66 syntactic units such as words and sentences. 67* Kill Options:: Options that affect killing. 68@end menu 69 70@node Deletion 71@subsection Deletion 72@findex delete-backward-char 73@findex delete-char 74 75 Deletion means erasing text and not saving it in the kill ring. For 76the most part, the Emacs commands that delete text are those that 77erase just one character or only whitespace. 78 79@table @kbd 80@item @key{DEL} 81@itemx @key{BACKSPACE} 82Delete the previous character, or the text in the region if it is 83active (@code{delete-backward-char}). 84 85@item @key{Delete} 86Delete the next character, or the text in the region if it is active 87(@code{delete-forward-char}). 88 89@item C-d 90Delete the next character (@code{delete-char}). 91 92@item M-\ 93Delete spaces and tabs around point (@code{delete-horizontal-space}). 94@item M-@key{SPC} 95Delete spaces and tabs around point, leaving one space 96(@code{just-one-space}). 97@item C-x C-o 98Delete blank lines around the current line (@code{delete-blank-lines}). 99@item M-^ 100Join two lines by deleting the intervening newline, along with any 101indentation following it (@code{delete-indentation}). 102@end table 103 104 We have already described the basic deletion commands @key{DEL} 105(@code{delete-backward-char}), @key{delete} 106(@code{delete-forward-char}), and @kbd{C-d} (@code{delete-char}). 107@xref{Erasing}. With a numeric argument, they delete the specified 108number of characters. If the numeric argument is omitted or one, 109@key{DEL} and @key{delete} delete all the text in the region if it is 110active (@pxref{Using Region}). 111 112@kindex M-\ 113@findex delete-horizontal-space 114@kindex M-SPC 115@findex just-one-space 116@findex cycle-spacing 117 The other delete commands are those that delete only whitespace 118characters: spaces, tabs and newlines. @kbd{M-\} 119(@code{delete-horizontal-space}) deletes all the spaces and tab 120characters before and after point. With a prefix argument, this only 121deletes spaces and tab characters before point. @kbd{M-@key{SPC}} 122(@code{just-one-space}) does likewise but leaves a single space before 123point, regardless of the number of spaces that existed previously 124(even if there were none before). With a numeric argument @var{n}, it 125leaves @var{n} spaces before point if @var{n} is positive; if @var{n} 126is negative, it deletes newlines in addition to spaces and tabs, 127leaving @minus{}@var{n} spaces before point. The command @code{cycle-spacing} 128acts like a more flexible version of @code{just-one-space}. It 129does different things if you call it repeatedly in succession. 130The first call acts like @code{just-one-space}, the next removes 131all whitespace, and a third call restores the original whitespace. 132 133 @kbd{C-x C-o} (@code{delete-blank-lines}) deletes all blank lines 134after the current line. If the current line is blank, it deletes all 135blank lines preceding the current line as well (leaving one blank line, 136the current line). On a solitary blank line, it deletes that line. 137 138 @kbd{M-^} (@code{delete-indentation}) joins the current line and the 139previous line, by deleting a newline and all surrounding spaces, usually 140leaving a single space. @xref{Indentation,M-^}. 141 142@c Not really sure where to put this... 143@findex delete-duplicate-lines 144 The command @code{delete-duplicate-lines} searches the region for 145identical lines, and removes all but one copy of each. Normally it 146keeps the first instance of each repeated line, but with a @kbd{C-u} 147prefix argument it keeps the last. With a @kbd{C-u C-u} prefix 148argument, it only searches for adjacent identical lines. This is a 149more efficient mode of operation, useful when the lines have already 150been sorted. With a @kbd{C-u C-u C-u} prefix argument, it retains 151repeated blank lines. 152 153@node Killing by Lines 154@subsection Killing by Lines 155 156@table @kbd 157@item C-k 158Kill rest of line or one or more lines (@code{kill-line}). 159@item C-S-backspace 160Kill an entire line at once (@code{kill-whole-line}) 161@end table 162 163@kindex C-k 164@findex kill-line 165 The simplest kill command is @kbd{C-k} (@code{kill-line}). If used 166at the end of a line, it kills the line-ending newline character, 167merging the next line into the current one (thus, a blank line is 168entirely removed). Otherwise, @kbd{C-k} kills all the text from point 169up to the end of the line; if point was originally at the beginning of 170the line, this leaves the line blank. 171 172 Spaces and tabs at the end of the line are ignored when deciding 173which case applies. As long as point is after the last non-whitespace 174character in the line, you can be sure that @kbd{C-k} will kill the 175newline. To kill an entire non-blank line, go to the beginning and 176type @kbd{C-k} twice. 177 178 In this context, ``line'' means a logical text line, not a screen 179line (@pxref{Continuation Lines}). 180 181 When @kbd{C-k} is given a positive argument @var{n}, it kills 182@var{n} lines and the newlines that follow them (text on the current 183line before point is not killed). With a negative argument 184@minus{}@var{n}, it kills @var{n} lines preceding the current line, 185together with the text on the current line before point. @kbd{C-k} 186with an argument of zero kills the text before point on the current 187line. 188 189@vindex kill-whole-line 190 If the variable @code{kill-whole-line} is non-@code{nil}, @kbd{C-k} at 191the very beginning of a line kills the entire line including the 192following newline. This variable is normally @code{nil}. 193 194@kindex C-S-backspace 195@findex kill-whole-line 196 @kbd{C-S-backspace} (@code{kill-whole-line}) kills a whole line 197including its newline, regardless of the position of point within the 198line. Note that many text terminals will prevent you from typing the 199key sequence @kbd{C-S-backspace}. 200 201@node Other Kill Commands 202@subsection Other Kill Commands 203 204@table @kbd 205@item C-w 206Kill the region (@code{kill-region}). 207@item M-w 208Copy the region into the kill ring (@code{kill-ring-save}). 209@item M-d 210Kill the next word (@code{kill-word}). @xref{Words}. 211@item M-@key{DEL} 212Kill one word backwards (@code{backward-kill-word}). 213@item C-x @key{DEL} 214Kill back to beginning of sentence (@code{backward-kill-sentence}). 215@xref{Sentences}. 216@item M-k 217Kill to the end of the sentence (@code{kill-sentence}). 218@item C-M-k 219Kill the following balanced expression (@code{kill-sexp}). @xref{Expressions}. 220@item M-z @var{char} 221Kill through the next occurrence of @var{char} (@code{zap-to-char}). 222@item M-x zap-up-to-char @var{char} 223Kill up to, but not including, the next occurrence of @var{char}. 224@end table 225 226@kindex C-w 227@findex kill-region 228@kindex M-w 229@findex kill-ring-save 230 One of the commonly-used kill commands is @kbd{C-w} 231(@code{kill-region}), which kills the text in the region 232(@pxref{Mark}). Similarly, @kbd{M-w} (@code{kill-ring-save}) copies 233the text in the region into the kill ring without removing it from the 234buffer. If the mark is inactive when you type @kbd{C-w} or @kbd{M-w}, 235the command acts on the text between point and where you last set the 236mark (@pxref{Using Region}). 237 238 Emacs also provides commands to kill specific syntactic units: 239words, with @kbd{M-@key{DEL}} and @kbd{M-d} (@pxref{Words}); balanced 240expressions, with @kbd{C-M-k} (@pxref{Expressions}); and sentences, 241with @kbd{C-x @key{DEL}} and @kbd{M-k} (@pxref{Sentences}). 242 243@kindex M-z 244@findex zap-to-char 245 The command @kbd{M-z} (@code{zap-to-char}) combines killing with 246searching: it reads a character and kills from point up to (and 247including) the next occurrence of that character in the buffer. A 248numeric argument acts as a repeat count; a negative argument means to 249search backward and kill text before point. A history of previously 250used characters is maintained and can be accessed via the 251@kbd{M-p}/@kbd{M-n} keystrokes. This is mainly useful if the 252character to be used has to be entered via a complicated input method. 253@findex zap-up-to-char 254A similar command @code{zap-up-to-char} kills from point up to, but 255not including the next occurrence of a character, with numeric 256argument acting as a repeat count. 257 258@node Kill Options 259@subsection Options for Killing 260 261@vindex kill-read-only-ok 262@cindex read-only text, killing 263 Some specialized buffers contain @dfn{read-only text}, which cannot 264be modified and therefore cannot be killed. The kill commands work 265specially in a read-only buffer: they move over text and copy it to 266the kill ring, without actually deleting it from the buffer. 267Normally, they also beep and display an error message when this 268happens. But if you set the variable @code{kill-read-only-ok} to a 269non-@code{nil} value, they just print a message in the echo area to 270explain why the text has not been erased. 271 272@vindex kill-transform-function 273 Before saving the kill to the kill ring, you can transform the 274string using @code{kill-transform-function}. It's called with the 275string to be killed, and it should return the string you want to be 276saved. It can also return @code{nil}, in which case the string won't 277be saved to the kill ring. For instance, if you never want to save 278a pure white space string to the kill ring, you can say: 279 280@lisp 281(setq kill-transform-function 282 (lambda (string) 283 (and (not (string-blank-p string)) 284 string))) 285@end lisp 286 287@vindex kill-do-not-save-duplicates 288 If you change the variable @code{kill-do-not-save-duplicates} to a 289non-@code{nil} value, identical subsequent kills yield a single 290kill-ring entry, without duplication. 291 292@node Yanking 293@section Yanking 294@cindex moving text 295@cindex copying text 296@cindex kill ring 297@cindex yanking 298@cindex pasting 299 300 @dfn{Yanking} means reinserting text previously killed. The usual 301way to move or copy text is to kill it and then yank it elsewhere. 302 303@table @kbd 304@item C-y 305Yank the last kill into the buffer, at point (@code{yank}). 306@item M-y 307Either replace the text just yanked with an earlier batch of killed 308text (@code{yank-pop}), or allow to select from the list of 309previously-killed batches of text. @xref{Earlier Kills}. 310@item C-M-w 311Cause the following command, if it is a kill command, to append to the 312previous kill (@code{append-next-kill}). @xref{Appending Kills}. 313@end table 314 315@kindex C-y 316@findex yank 317 The basic yanking command is @kbd{C-y} (@code{yank}). It inserts 318the most recent kill, leaving the cursor at the end of the inserted 319text. It also sets the mark at the beginning of the inserted text, 320without activating the mark; this lets you jump easily to that 321position, if you wish, with @kbd{C-u C-@key{SPC}} (@pxref{Mark Ring}). 322 323 With a plain prefix argument (@kbd{C-u C-y}), the command instead 324leaves the cursor in front of the inserted text, and sets the mark at 325the end. Using any other prefix argument specifies an earlier kill; 326e.g., @kbd{C-u 4 C-y} reinserts the fourth most recent kill. 327@xref{Earlier Kills}. 328 329 On graphical displays and on capable text-mode displays, @kbd{C-y} 330first checks if another application has placed any text in the system 331clipboard more recently than the last Emacs kill. If so, it inserts 332the clipboard's text instead. Thus, Emacs effectively treats ``cut'' 333or ``copy'' clipboard operations performed in other applications like 334Emacs kills, except that they are not recorded in the kill ring. 335@xref{Cut and Paste}, for details. 336 337@menu 338* Kill Ring:: Where killed text is stored. 339* Earlier Kills:: Yanking something killed some time ago. 340* Appending Kills:: Several kills in a row all yank together. 341@end menu 342 343@node Kill Ring 344@subsection The Kill Ring 345 346 The @dfn{kill ring} is a list of blocks of text that were previously 347killed. There is only one kill ring, shared by all buffers, so you 348can kill text in one buffer and yank it in another buffer. This is 349the usual way to move text from one buffer to another. (There are 350several other methods: for instance, you could store the text in a 351register; see @ref{Registers}. @xref{Accumulating Text}, for some 352other ways to move text around.) 353 354@vindex kill-ring-max 355 The maximum number of entries in the kill ring is controlled by the 356variable @code{kill-ring-max}. The default is 120. If you make a new 357kill when this limit has been reached, Emacs makes room by deleting 358the oldest entry in the kill ring. 359 360@vindex kill-ring 361 The actual contents of the kill ring are stored in a variable named 362@code{kill-ring}; you can view the entire contents of the kill ring 363with @kbd{C-h v kill-ring}. 364 365@node Earlier Kills 366@subsection Yanking Earlier Kills 367@cindex yanking previous kills 368 369 As explained in @ref{Yanking}, you can use a numeric argument to 370@kbd{C-y} to yank text that is no longer the most recent kill. This 371is useful if you remember which kill ring entry you want. If you 372don't, you can use the @kbd{M-y} (@code{yank-pop}) command to cycle 373through the possibilities or to select one of the earlier kills. 374 375@kindex M-y 376@findex yank-pop 377 If the previous command was a yank command, @kbd{M-y} takes the text 378that was yanked and replaces it with the text from an earlier kill. 379So, to recover the text of the next-to-the-last kill, first use 380@kbd{C-y} to yank the last kill, and then use @kbd{M-y} to replace it 381with the previous kill. This works only after a @kbd{C-y} 382or another @kbd{M-y}. (If @kbd{M-y} is invoked after some other 383command, it works differently, see below.) 384 385 You can understand this operation mode of @kbd{M-y} in terms of a 386last-yank pointer which points at an entry in the kill ring. Each 387time you kill, the last-yank pointer moves to the newly made entry at 388the front of the ring. @kbd{C-y} yanks the entry which the last-yank 389pointer points to. @kbd{M-y} after a @kbd{C-y} or another @kbd{M-y} 390moves the last-yank pointer to the previous entry, and the text in the 391buffer changes to match. Enough @kbd{M-y} commands one after another 392can move the pointer to any entry in the ring, so you can get any 393entry into the buffer. Eventually the pointer reaches the end of the 394ring; the next @kbd{M-y} loops back around to the first entry again. 395 396 @kbd{M-y} moves the last-yank pointer around the ring, but it does 397not change the order of the entries in the ring, which always runs from 398the most recent kill at the front to the oldest one still remembered. 399 400 When used after @kbd{C-y} or @kbd{M-y}, @kbd{M-y} can take a numeric 401argument, which tells it how many entries to advance the last-yank 402pointer by. A negative argument moves the pointer toward the front of 403the ring; from the front of the ring, it moves around to the last 404entry and continues forward from there. 405 406 Once the text you are looking for is brought into the buffer, you 407can stop doing @kbd{M-y} commands and the last yanked text will stay 408there. It's just a copy of the kill ring entry, so editing it in the 409buffer does not change what's in the ring. As long as no new killing 410is done, the last-yank pointer remains at the same place in the kill 411ring, so repeating @kbd{C-y} will yank another copy of the same 412previous kill. 413 414 When you call @kbd{C-y} with a numeric argument, that also sets the 415last-yank pointer to the entry that it yanks. 416 417 You can also invoke @kbd{M-y} after a command that is not a yank 418command. In that case, @kbd{M-y} prompts you in the minibuffer for 419one of the previous kills. You can use the minibuffer history 420commands (@pxref{Minibuffer History}) to navigate or search through 421the entries in the kill ring until you find the one you want to 422reinsert. Or you can use completion commands (@pxref{Completion 423Commands}) to complete on an entry from the list of entries in the 424kill ring or pop up the @file{*Completions*} buffer with the candidate 425entries from which you can choose. After selecting the kill-ring 426entry, you can optionally edit it in the minibuffer. Finally, type 427@kbd{RET} to exit the minibuffer and insert the text of the selected 428kill-ring entry. Like in case of @kbd{M-y} after another yank 429command, the last-yank pointer is left pointing at the text you just 430yanked, whether it is one of the previous kills or an entry from the 431kill-ring that you edited before inserting it. (In the latter case, 432the edited entry is added to the front of the kill-ring.) So here, 433too, typing @kbd{C-y} will yank another copy of the text just 434inserted. 435 436 When invoked with a plain prefix argument (@kbd{C-u M-y}) after a 437command that is not a yank command, @kbd{M-y} leaves the cursor in 438front of the inserted text, and sets the mark at the end, like 439@kbd{C-y} does. 440 441@node Appending Kills 442@subsection Appending Kills 443 444@cindex appending kills in the ring 445 Normally, each kill command pushes a new entry onto the kill ring. 446However, two or more kill commands in a row combine their text into a 447single entry, so that a single @kbd{C-y} yanks all the text as a unit, 448just as it was before it was killed. 449 450 Thus, if you want to yank text as a unit, you need not kill all of it 451with one command; you can keep killing line after line, or word after 452word, until you have killed it all, and you can still get it all back at 453once. 454 455 Commands that kill forward from point add onto the end of the previous 456killed text. Commands that kill backward from point add text onto the 457beginning. This way, any sequence of mixed forward and backward kill 458commands puts all the killed text into one entry without rearrangement. 459Numeric arguments do not break the sequence of appending kills. For 460example, suppose the buffer contains this text: 461 462@example 463This is a line @point{}of sample text. 464@end example 465 466@noindent 467with point shown by @point{}. If you type @kbd{M-d M-@key{DEL} M-d 468M-@key{DEL}}, killing alternately forward and backward, you end up with 469@samp{a line of sample} as one entry in the kill ring, and 470@w{@samp{This is@ @ text.}} in the buffer. (Note the double space 471between @samp{is} and @samp{text}, which you can clean up with 472@kbd{M-@key{SPC}} or @kbd{M-q}.) 473 474 Another way to kill the same text is to move back two words with 475@kbd{M-b M-b}, then kill all four words forward with @kbd{C-u M-d}. 476This produces exactly the same results in the buffer and in the kill 477ring. @kbd{M-f M-f C-u M-@key{DEL}} kills the same text, all going 478backward; once again, the result is the same. The text in the kill ring 479entry always has the same order that it had in the buffer before you 480killed it. 481 482@kindex C-M-w 483@findex append-next-kill 484 If a kill command is separated from the last kill command by other 485commands (not just numeric arguments), it starts a new entry on the 486kill ring. But you can force it to combine with the last killed text, 487by typing @kbd{C-M-w} (@code{append-next-kill}) right beforehand. The 488@kbd{C-M-w} tells its following command, if it is a kill command, to 489treat the kill as part of the sequence of previous kills. As usual, 490the kill is appended to the previous killed text if the command kills 491forward, and prepended if the command kills backward. In this way, 492you can kill several separated pieces of text and accumulate them to 493be yanked back in one place. 494 495 A kill command following @kbd{M-w} (@code{kill-ring-save}) does not 496append to the text that @kbd{M-w} copied into the kill ring. 497 498@node Cut and Paste 499@section ``Cut and Paste'' Operations on Graphical Displays 500@cindex cut 501@cindex copy 502@cindex paste 503 504 In most graphical desktop environments, you can transfer data 505(usually text) between different applications using a system facility 506called the @dfn{clipboard}. On X, two other similar facilities are 507available: the primary selection and the secondary selection. When 508Emacs is run on a graphical display, its kill and yank commands 509integrate with these facilities, so that you can easily transfer text 510between Emacs and other graphical applications. 511 512 By default, Emacs uses UTF-8 as the coding system for inter-program 513text transfers. If you find that the pasted text is not what you 514expected, you can specify another coding system by typing @kbd{C-x 515@key{RET} x} or @kbd{C-x @key{RET} X}. You can also request a 516different data type by customizing @code{x-select-request-type}. 517@xref{Communication Coding}. 518 519@menu 520* Clipboard:: How Emacs uses the system clipboard. 521* Primary Selection:: The temporarily selected text selection. 522* Secondary Selection:: Cutting without altering point and mark. 523@end menu 524 525@node Clipboard 526@subsection Using the Clipboard 527@cindex clipboard 528 529 The @dfn{clipboard} is the facility that most graphical applications 530use for ``cutting and pasting''. When the clipboard exists, the kill 531and yank commands in Emacs make use of it. 532 533 When you kill some text with a command such as @kbd{C-w} 534(@code{kill-region}), or copy it to the kill ring with a command such 535as @kbd{M-w} (@code{kill-ring-save}), that text is also put in the 536clipboard. 537 538@vindex save-interprogram-paste-before-kill 539 When an Emacs kill command puts text in the clipboard, the existing 540clipboard contents are normally lost. Optionally, Emacs can save the 541existing clipboard contents to the kill ring, preventing you from 542losing the old clipboard data. If 543@code{save-interprogram-paste-before-kill} changed to a number, then 544this data is copied over if it's smaller (in characters) than this 545number. If this variable is any other non-@code{nil} value, it's 546always copied over---at the risk of high memory consumption if that 547data turns out to be large. 548 549 Yank commands, such as @kbd{C-y} (@code{yank}), also use the 550clipboard. If another application ``owns'' the clipboard---i.e., if 551you cut or copied text there more recently than your last kill command 552in Emacs---then Emacs yanks from the clipboard instead of the kill 553ring. 554 555@vindex yank-pop-change-selection 556 Normally, rotating the kill ring with @kbd{M-y} (@code{yank-pop}) 557does not alter the clipboard. However, if you change 558@code{yank-pop-change-selection} to @code{t}, then @kbd{M-y} saves the 559new yank to the clipboard. 560 561@vindex select-enable-clipboard 562 To prevent kill and yank commands from accessing the clipboard, 563change the variable @code{select-enable-clipboard} to @code{nil}. 564 565@findex yank-media 566 Programs can put other things than plain text on the clipboard. For 567instance, a web browser will usually let you choose ``Copy Image'' on 568images, and this image will be put on the clipboard. On capable 569platforms, Emacs can yank these objects with the @code{yank-media} 570command---but only in modes that have support for it (@pxref{Yanking 571Media,,, elisp, The Emacs Lisp Reference Manual}). 572 573@cindex clipboard manager 574@vindex x-select-enable-clipboard-manager 575 Many X desktop environments support a feature called the 576@dfn{clipboard manager}. If you exit Emacs while it is the current 577``owner'' of the clipboard data, and there is a clipboard manager 578running, Emacs transfers the clipboard data to the clipboard manager 579so that it is not lost. In some circumstances, this may cause a delay 580when exiting Emacs; if you wish to prevent Emacs from transferring 581data to the clipboard manager, change the variable 582@code{x-select-enable-clipboard-manager} to @code{nil}. 583 584 Since strings containing NUL bytes are usually truncated when passed 585through the clipboard, Emacs replaces such characters with ``\0'' 586before transferring them to the system's clipboard. 587 588@vindex select-enable-primary 589@findex clipboard-kill-region 590@findex clipboard-kill-ring-save 591@findex clipboard-yank 592 Prior to Emacs 24, the kill and yank commands used the primary 593selection (@pxref{Primary Selection}), not the clipboard. If you 594prefer this behavior, change @code{select-enable-clipboard} to 595@code{nil}, @code{select-enable-primary} to @code{t}, and 596@code{mouse-drag-copy-region} to @code{t}. In this case, you can use 597the following commands to act explicitly on the clipboard: 598@code{clipboard-kill-region} kills the region and saves it to the 599clipboard; @code{clipboard-kill-ring-save} copies the region to the 600kill ring and saves it to the clipboard; and @code{clipboard-yank} 601yanks the contents of the clipboard at point. 602 603@node Primary Selection 604@subsection Cut and Paste with Other Window Applications 605@cindex X cutting and pasting 606@cindex X selection 607@cindex primary selection 608@cindex selection, primary 609 610 Under the X Window System, there exists a @dfn{primary selection} 611containing the last stretch of text selected in an X application 612(usually by dragging the mouse). Typically, this text can be inserted 613into other X applications by @kbd{mouse-2} clicks. The primary 614selection is separate from the clipboard. Its contents are more 615fragile; they are overwritten each time you select text with the 616mouse, whereas the clipboard is only overwritten by explicit cut 617or copy commands. 618 619 Under X, whenever the region is active (@pxref{Mark}), the text in 620the region is saved in the primary selection. This applies regardless 621of whether the region was made by dragging or clicking the mouse 622(@pxref{Mouse Commands}), or by keyboard commands (e.g., by typing 623@kbd{C-@key{SPC}} and moving point; @pxref{Setting Mark}). 624 625@vindex select-active-regions 626 If you change the variable @code{select-active-regions} to 627@code{only}, Emacs saves only temporarily active regions to the 628primary selection, i.e., those made with the mouse or with shift 629selection (@pxref{Shift Selection}). If you change 630@code{select-active-regions} to @code{nil}, Emacs avoids saving active 631regions to the primary selection entirely. 632 633 To insert the primary selection into an Emacs buffer, click 634@kbd{mouse-2} (@code{mouse-yank-primary}) where you want to insert it. 635@xref{Mouse Commands}. You can also use the normal Emacs yank command 636(@kbd{C-y}) to insert this text if @code{select-enable-primary} is set 637(@pxref{Clipboard}). 638 639@cindex MS-Windows, and primary selection 640 MS-Windows provides no primary selection, but Emacs emulates it 641within a single Emacs session by storing the selected text internally. 642Therefore, all the features and commands related to the primary 643selection work on Windows as they do on X, for cutting and pasting 644within the same session, but not across Emacs sessions or with other 645applications. 646 647@node Secondary Selection 648@subsection Secondary Selection 649@cindex secondary selection 650 651 In addition to the primary selection, the X Window System provides a 652second similar facility known as the @dfn{secondary selection}. 653Nowadays, few X applications make use of the secondary selection, but 654you can access it using the following Emacs commands: 655 656@table @kbd 657@findex mouse-set-secondary 658@kindex M-Drag-mouse-1 659@cindex @code{secondary-selection} face 660@item M-Drag-mouse-1 661Set the secondary selection, with one end at the place where you press 662down the button, and the other end at the place where you release it 663(@code{mouse-set-secondary}). The selected text is highlighted, using 664the @code{secondary-selection} face, as you drag. The window scrolls 665automatically if you drag the mouse off the top or bottom of the 666window, just like @code{mouse-set-region} (@pxref{Mouse Commands}). 667 668This command does not alter the kill ring. 669 670@findex mouse-start-secondary 671@kindex M-mouse-1 672@item M-mouse-1 673Set one endpoint for the @dfn{secondary selection} 674(@code{mouse-start-secondary}); use @kbd{M-mouse-3} to set the other 675end and complete the selection. This command cancels any existing 676secondary selection, when it starts a new one. 677 678@findex mouse-secondary-save-then-kill 679@kindex M-mouse-3 680@item M-mouse-3 681Set the secondary selection (@code{mouse-secondary-save-then-kill}), 682with one end at the position you click @kbd{M-mouse-3}, and the other 683at the position specified previously with @kbd{M-mouse-1}. This also 684puts the selected text in the kill ring. A second @kbd{M-mouse-3} at 685the same place kills the text selected by the secondary selection just 686made. 687 688@findex mouse-yank-secondary 689@kindex M-mouse-2 690@item M-mouse-2 691Insert the secondary selection where you click, placing point at the 692end of the yanked text (@code{mouse-yank-secondary}). 693@end table 694 695Double or triple clicking of @kbd{M-mouse-1} operates on words and 696lines, much like @kbd{mouse-1}. 697 698If @code{mouse-yank-at-point} is non-@code{nil}, @kbd{M-mouse-2} yanks 699at point. Then it does not matter precisely where you click, or even 700which of the frame's windows you click on. @xref{Mouse Commands}. 701 702@node Accumulating Text 703@section Accumulating Text 704@findex append-to-buffer 705@findex prepend-to-buffer 706@findex copy-to-buffer 707@findex append-to-file 708 709@cindex accumulating scattered text 710 Usually we copy or move text by killing it and yanking it, but there 711are other convenient methods for copying one block of text in many 712places, or for copying many scattered blocks of text into one place. 713Here we describe the commands to accumulate scattered pieces of text 714into a buffer or into a file. 715 716@table @kbd 717@item M-x append-to-buffer 718Append region to the contents of a specified buffer. 719@item M-x prepend-to-buffer 720Prepend region to the contents of a specified buffer. 721@item M-x copy-to-buffer 722Copy region into a specified buffer, deleting that buffer's old contents. 723@item M-x insert-buffer 724Insert the contents of a specified buffer into current buffer at point. 725@item M-x append-to-file 726Append region to the contents of a specified file, at the end. 727@end table 728 729 To accumulate text into a buffer, use @kbd{M-x append-to-buffer}. 730This reads a buffer name, then inserts a copy of the region into the 731buffer specified. If you specify a nonexistent buffer, 732@code{append-to-buffer} creates the buffer. The text is inserted 733wherever point is in that buffer. If you have been using the buffer for 734editing, the copied text goes into the middle of the text of the buffer, 735starting from wherever point happens to be at that moment. 736 737 Point in that buffer is left at the end of the copied text, so 738successive uses of @code{append-to-buffer} accumulate the text in the 739specified buffer in the same order as they were copied. Strictly 740speaking, @code{append-to-buffer} does not always append to the text 741already in the buffer---it appends only if point in that buffer is at 742the end. However, if @code{append-to-buffer} is the only command you 743use to alter a buffer, then point is always at the end. 744 745 @kbd{M-x prepend-to-buffer} is just like @code{append-to-buffer} 746except that point in the other buffer is left before the copied text, so 747successive uses of this command add text in reverse order. @kbd{M-x 748copy-to-buffer} is similar, except that any existing text in the other 749buffer is deleted, so the buffer is left containing just the text newly 750copied into it. 751 752 The command @kbd{C-x x i} (@code{insert-buffer}) can be used to 753retrieve the accumulated text from another buffer. This prompts for 754the name of a buffer, and inserts a copy of all the text in that 755buffer into the current buffer at point, leaving point at the 756beginning of the inserted text. It also adds the position of the end 757of the inserted text to the mark ring, without activating the mark. 758@xref{Buffers}, for background information on buffers. 759 760 Instead of accumulating text in a buffer, you can append text 761directly into a file with @kbd{M-x append-to-file}. This prompts for 762a filename, and adds the text of the region to the end of the 763specified file. The file is changed immediately on disk. 764 765 You should use @code{append-to-file} only with files that are 766@emph{not} being visited in Emacs. Using it on a file that you are 767editing in Emacs would change the file behind Emacs's back, which 768can lead to losing some of your editing. 769 770 Another way to move text around is to store it in a register. 771@xref{Registers}. 772 773@node Rectangles 774@section Rectangles 775@cindex rectangle 776@cindex columns (and rectangles) 777@cindex killing rectangular areas of text 778 779 @dfn{Rectangle} commands operate on rectangular areas of the text: 780all the characters between a certain pair of columns, in a certain 781range of lines. Emacs has commands to kill rectangles, yank killed 782rectangles, clear them out, fill them with blanks or text, or delete 783them. Rectangle commands are useful with text in multicolumn formats, 784and for changing text into or out of such formats. 785 786@cindex mark rectangle 787@cindex region-rectangle 788@cindex rectangular region 789 To specify a rectangle for a command to work on, set the mark at one 790corner and point at the opposite corner. The rectangle thus specified 791is called the @dfn{region-rectangle}. If point and the mark are in 792the same column, the region-rectangle is empty. If they are in the 793same line, the region-rectangle is one line high. 794 795 The region-rectangle is controlled in much the same way as the 796region is controlled. But remember that a given combination of point 797and mark values can be interpreted either as a region or as a 798rectangle, depending on the command that uses them. 799 800 A rectangular region can also be marked using the mouse: click and drag 801@kbd{C-M-mouse-1} from one corner of the rectangle to the opposite. 802 803@table @kbd 804@item C-x r k 805Kill the text of the region-rectangle, saving its contents as the 806last killed rectangle (@code{kill-rectangle}). 807@item C-x r M-w 808Save the text of the region-rectangle as the last killed rectangle 809(@code{copy-rectangle-as-kill}). 810@item C-x r d 811Delete the text of the region-rectangle (@code{delete-rectangle}). 812@item C-x r y 813Yank the last killed rectangle with its upper left corner at point 814(@code{yank-rectangle}). 815@item C-x r o 816Insert blank space to fill the space of the region-rectangle 817(@code{open-rectangle}). This pushes the previous contents of the 818region-rectangle to the right. 819@item C-x r N 820Insert line numbers along the left edge of the region-rectangle 821(@code{rectangle-number-lines}). This pushes the previous contents of 822the region-rectangle to the right. 823@item C-x r c 824Clear the region-rectangle by replacing all of its contents with spaces 825(@code{clear-rectangle}). 826@item M-x delete-whitespace-rectangle 827Delete whitespace in each of the lines on the specified rectangle, 828starting from the left edge column of the rectangle. 829@item C-x r t @var{string} @key{RET} 830Replace rectangle contents with @var{string} on each line 831(@code{string-rectangle}). 832@item M-x string-insert-rectangle @key{RET} @var{string} @key{RET} 833Insert @var{string} on each line of the rectangle. 834@item C-x @key{SPC} 835Toggle Rectangle Mark mode (@code{rectangle-mark-mode}). 836When this mode is active, the region-rectangle is highlighted and can 837be shrunk/grown, and the standard kill and yank commands operate on it. 838@end table 839 840 The rectangle operations fall into two classes: commands to erase or 841insert rectangles, and commands to make blank rectangles. 842 843@kindex C-x r k 844@kindex C-x r d 845@findex kill-rectangle 846@findex delete-rectangle 847 There are two ways to erase the text in a rectangle: @kbd{C-x r d} 848(@code{delete-rectangle}) to delete the text outright, or @kbd{C-x r 849k} (@code{kill-rectangle}) to remove the text and save it as the 850@dfn{last killed rectangle}. In both cases, erasing the 851region-rectangle is like erasing the specified text on each line of 852the rectangle; if there is any following text on the line, it moves 853backwards to fill the gap. 854 855 Killing a rectangle is not killing in the usual sense; the 856rectangle is not stored in the kill ring, but in a special place that 857only records the most recent rectangle killed. This is because 858yanking a rectangle is so different from yanking linear text that 859different yank commands have to be used. Yank-popping is not defined 860for rectangles. 861 862@kindex C-x r M-w 863@findex copy-rectangle-as-kill 864 @kbd{C-x r M-w} (@code{copy-rectangle-as-kill}) is the equivalent of 865@kbd{M-w} for rectangles: it records the rectangle as the last 866killed rectangle, without deleting the text from the buffer. 867 868@kindex C-x r y 869@findex yank-rectangle 870 To yank the last killed rectangle, type @kbd{C-x r y} 871(@code{yank-rectangle}). The rectangle's first line is inserted at 872point, the rectangle's second line is inserted at the same horizontal 873position one line vertically below, and so on. The number of lines 874affected is determined by the height of the saved rectangle. 875 876 For example, you can convert two single-column lists into a 877double-column list by killing one of the single-column lists as a 878rectangle, and then yanking it beside the other list. 879 880 You can also copy rectangles into and out of registers with @kbd{C-x r 881r @var{r}} and @kbd{C-x r i @var{r}}. @xref{Rectangle Registers}. 882 883@kindex C-x r o 884@findex open-rectangle 885@kindex C-x r c 886@findex clear-rectangle 887 There are two commands you can use for making blank rectangles: 888@kbd{C-x r c} (@code{clear-rectangle}) blanks out existing text in the 889region-rectangle, and @kbd{C-x r o} (@code{open-rectangle}) inserts a 890blank rectangle. 891 892@findex delete-whitespace-rectangle 893 @kbd{M-x delete-whitespace-rectangle} deletes horizontal whitespace 894starting from a particular column. This applies to each of the lines 895in the rectangle, and the column is specified by the left edge of the 896rectangle. The right edge of the rectangle does not make any 897difference to this command. 898 899@kindex C-x r N 900@findex rectangle 901 The command @kbd{C-x r N} (@code{rectangle-number-lines}) inserts 902line numbers along the left edge of the region-rectangle. Normally, 903the numbering begins from 1 (for the first line of the rectangle). 904With a prefix argument, the command prompts for a number to begin 905from, and for a format string with which to print the numbers 906(@pxref{Formatting Strings,,, elisp, The Emacs Lisp Reference 907Manual}). 908 909@kindex C-x r t 910@findex string-rectangle 911 The command @kbd{C-x r t} (@code{string-rectangle}) replaces the 912contents of a region-rectangle with a string on each line. The 913string's width need not be the same as the width of the rectangle. If 914the string's width is less, the text after the rectangle shifts left; 915if the string is wider than the rectangle, the text after the 916rectangle shifts right. 917 918@findex string-insert-rectangle 919 The command @kbd{M-x string-insert-rectangle} is similar to 920@code{string-rectangle}, but inserts the string on each line, 921shifting the original text to the right. 922 923@findex rectangle-mark-mode 924 The command @kbd{C-x @key{SPC}} (@code{rectangle-mark-mode}) toggles 925whether the region-rectangle or the standard region is highlighted 926(first activating the region if necessary). When this mode is enabled, 927commands that resize the region (@kbd{C-f}, @kbd{C-n} etc.)@: do 928so in a rectangular fashion, and killing and yanking operate on the 929rectangle. @xref{Killing}. The mode persists only as long as the 930region is active. 931 932The region-rectangle works only when the mark is active. In 933particular, when Transient Mark mode is off (@pxref{Disabled Transient 934Mark}), in addition to typing @kbd{C-x @key{SPC}} you will need to 935activate the mark. 936 937Unlike the standard region, the region-rectangle can have its corners 938extended past the end of buffer, or inside stretches of white space 939that point normally cannot enter, like in the middle of a TAB 940character. 941 942@findex rectangle-exchange-point-and-mark 943@findex exchange-point-and-mark@r{, in rectangle-mark-mode} 944@kindex C-x C-x@r{, in rectangle-mark-mode} 945When the region is active (@pxref{Mark}) and in rectangle-mark-mode, 946@kbd{C-x C-x} runs the command 947@code{rectangle-exchange-point-and-mark}, which cycles between the 948four corners of the region-rectangle. This comes in handy if you want 949to modify the dimensions of the region-rectangle before invoking an 950operation on the marked text. 951 952@node CUA Bindings 953@section CUA Bindings 954@findex cua-mode 955@vindex cua-mode 956@cindex CUA key bindings 957@vindex cua-enable-cua-keys 958 The command @kbd{M-x cua-mode} sets up key bindings that are 959compatible with the Common User Access (CUA) system used in many other 960applications. 961 962 When CUA mode is enabled, the keys @kbd{C-x}, @kbd{C-c}, @kbd{C-v}, 963and @kbd{C-z} invoke commands that cut (kill), copy, paste (yank), and 964undo respectively. The @kbd{C-x} and @kbd{C-c} keys perform cut and 965copy only if the region is active. Otherwise, they still act as 966prefix keys, so that standard Emacs commands like @kbd{C-x C-c} still 967work. Note that this means the variable @code{mark-even-if-inactive} 968has no effect for @kbd{C-x} and @kbd{C-c} (@pxref{Using Region}). 969 970 To enter an Emacs command like @kbd{C-x C-f} while the mark is 971active, use one of the following methods: either hold @kbd{Shift} 972together with the prefix key, e.g., @kbd{S-C-x C-f}, or quickly type 973the prefix key twice, e.g., @kbd{C-x C-x C-f}. 974 975 To disable the overriding of standard Emacs binding by CUA mode, 976while retaining the other features of CUA mode described below, set 977the variable @code{cua-enable-cua-keys} to @code{nil}. 978 979 CUA mode by default activates Delete-Selection mode (@pxref{Mouse Commands}) 980so that typed text replaces the active region. To use CUA without this 981behavior, set the variable @code{cua-delete-selection} to @code{nil}. 982 983@cindex rectangle highlighting 984 CUA mode provides enhanced rectangle support with visible 985rectangle highlighting. Use @kbd{C-@key{RET}} to start a rectangle, 986extend it using the movement commands, and cut or copy it using 987@kbd{C-x} or @kbd{C-c}. @key{RET} moves the cursor to the next 988(clockwise) corner of the rectangle, so you can easily expand it in 989any direction. Normal text you type is inserted to the left or right 990of each line in the rectangle (on the same side as the cursor). 991 992 You can use this rectangle support without activating CUA by calling the 993@code{cua-rectangle-mark-mode} command. There's also the standard command 994@code{rectangle-mark-mode}, see @ref{Rectangles}. 995 996 With CUA you can easily copy text and rectangles into and out of 997registers by providing a one-digit numeric prefix to the kill, copy, 998and yank commands, e.g., @kbd{C-1 C-c} copies the region into register 999@code{1}, and @kbd{C-2 C-v} yanks the contents of register @code{2}. 1000 1001@cindex global mark 1002 CUA mode also has a global mark feature which allows easy moving and 1003copying of text between buffers. Use @kbd{C-S-@key{SPC}} to toggle the 1004global mark on and off. When the global mark is on, all text that you 1005kill or copy is automatically inserted at the global mark, and text 1006you type is inserted at the global mark rather than at the current 1007position. 1008 1009 For example, to copy words from various buffers into a word list in 1010a given buffer, set the global mark in the target buffer, then 1011navigate to each of the words you want in the list, mark it (e.g., with 1012@kbd{S-M-f}), copy it to the list with @kbd{C-c} or @kbd{M-w}, and 1013insert a newline after the word in the target list by pressing 1014@key{RET}. 1015