Some doc for cycle-spacing
[bpt/emacs.git] / doc / emacs / killing.texi
CommitLineData
6bf7aab6 1@c This is part of the Emacs manual.
ba318903 2@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2014 Free Software
ab422c4d 3@c Foundation, Inc.
6bf7aab6 4@c See file emacs.texi for copying conditions.
6bf7aab6 5
abb9615e 6@node Killing
1f67b1dd 7@chapter Killing and Moving Text
6bf7aab6 8
4d45a8b7
CY
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.
1f67b1dd 19
b103c904
CY
20@menu
21* Deletion and Killing:: Commands that remove text.
22* Yanking:: Commands that insert text.
4d45a8b7 23* Cut and Paste:: Clipboard and selections on graphical displays.
b103c904
CY
24* Accumulating Text:: Other methods to add text to the buffer.
25* Rectangles:: Operating on text in rectangular areas.
6cfd0fa2 26* CUA Bindings:: Using @kbd{C-x}/@kbd{C-c}/@kbd{C-v} to kill and yank.
b103c904
CY
27@end menu
28
29@node Deletion and Killing
6bf7aab6
DL
30@section Deletion and Killing
31
32@cindex killing text
33@cindex cutting text
34@cindex deletion
1f67b1dd 35 Most commands which erase text from the buffer save it in the kill
4d45a8b7 36ring. These are known as @dfn{kill} commands, and their names
1df7defd 37normally contain the word @samp{kill} (e.g., @code{kill-line}). The
4d45a8b7
CY
38kill ring stores several recent kills, not just the last one, so
39killing is a very safe operation: you don't have to worry much about
40losing text that you previously killed. The kill ring is shared by
41all buffers, so text that is killed in one buffer can be yanked into
42another 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.
7e9bf756 47
4d45a8b7
CY
48 On graphical displays, killing text also copies it to the system
49clipboard. @xref{Cut and Paste}.
7e9bf756
CY
50
51 Commands that erase text but do not save it in the kill ring are
4d45a8b7
CY
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.
6bf7aab6 58
a21cc7d1
RS
59 You can also use the mouse to kill and yank. @xref{Cut and Paste}.
60
6bf7aab6
DL
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
177c0ea7 66 syntactic units such as words and sentences.
91ed7ea8 67* Kill Options:: Options that affect killing.
6bf7aab6
DL
68@end menu
69
70@node Deletion
71@subsection Deletion
6bf7aab6
DL
72@findex delete-backward-char
73@findex delete-char
6bf7aab6 74
ba5d9bfd
RS
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
6bf7aab6 79@table @kbd
6bf7aab6 80@item @key{DEL}
7e9bf756 81@itemx @key{Backspace}
50b063c3
CY
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
6bf7aab6
DL
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
50b063c3
CY
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, they
109delete all the text in the region if it is active (@pxref{Using
110Region}).
4933bc02 111
6bf7aab6
DL
112@kindex M-\
113@findex delete-horizontal-space
114@kindex M-SPC
115@findex just-one-space
5e61c1ef 116@findex cycle-spacing
7e9bf756 117 The other delete commands are those that delete only whitespace
6bf7aab6
DL
118characters: spaces, tabs and newlines. @kbd{M-\}
119(@code{delete-horizontal-space}) deletes all the spaces and tab
f111a3c6
CY
120characters before and after point. With a prefix argument, this only
121deletes spaces and tab characters before point. @kbd{M-@key{SPC}}
21100e7d 122(@code{just-one-space}) does likewise but leaves a single space before
80b9df3a
RS
123point, regardless of the number of spaces that existed previously
124(even if there were none before). With a numeric argument @var{n}, it
21100e7d
CY
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,
5e61c1ef
GM
127leaving @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.
6bf7aab6
DL
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,
fda95b3d 136the current line). On a solitary blank line, it deletes that line.
6bf7aab6
DL
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
169d6004
GM
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
6bf7aab6
DL
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}).
533286e0
EZ
159@item C-S-backspace
160Kill an entire line at once (@code{kill-whole-line})
6bf7aab6
DL
161@end table
162
163@kindex C-k
164@findex kill-line
4d45a8b7
CY
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 visible
7e9bf756
CY
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
4d45a8b7
CY
178 In this context, ``line'' means a logical text line, not a screen
179line (@pxref{Continuation Lines}).
180
7e9bf756
CY
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.
6bf7aab6
DL
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
533286e0
EZ
194@kindex C-S-backspace
195@findex kill-whole-line
4d45a8b7
CY
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}.
533286e0 200
6bf7aab6
DL
201@node Other Kill Commands
202@subsection Other Kill Commands
203@findex kill-region
204@kindex C-w
205
6bf7aab6
DL
206@table @kbd
207@item C-w
50b063c3 208Kill the region (@code{kill-region}).
7e9bf756 209@item M-w
50b063c3 210Copy the region into the kill ring (@code{kill-ring-save}).
6bf7aab6 211@item M-d
50b063c3 212Kill the next word (@code{kill-word}). @xref{Words}.
6bf7aab6 213@item M-@key{DEL}
50b063c3 214Kill one word backwards (@code{backward-kill-word}).
6bf7aab6
DL
215@item C-x @key{DEL}
216Kill back to beginning of sentence (@code{backward-kill-sentence}).
217@xref{Sentences}.
218@item M-k
50b063c3 219Kill to the end of the sentence (@code{kill-sentence}).
6bf7aab6 220@item C-M-k
46497336 221Kill the following balanced expression (@code{kill-sexp}). @xref{Expressions}.
6bf7aab6
DL
222@item M-z @var{char}
223Kill through the next occurrence of @var{char} (@code{zap-to-char}).
224@end table
225
50b063c3
CY
226@kindex C-w
227@findex kill-region
7e9bf756
CY
228@kindex M-w
229@findex kill-ring-save
50b063c3
CY
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}).
7e9bf756
CY
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}).
6bf7aab6
DL
242
243@kindex M-z
244@findex zap-to-char
7e9bf756
CY
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
6bf7aab6 247including) the next occurrence of that character in the buffer. A
7e9bf756 248numeric argument acts as a repeat count; a negative argument means to
6bf7aab6
DL
249search backward and kill text before point.
250
91ed7ea8
CY
251@node Kill Options
252@subsection Options for Killing
253
254@vindex kill-read-only-ok
255@cindex read-only text, killing
256 Some specialized buffers contain @dfn{read-only text}, which cannot
4d45a8b7
CY
257be modified and therefore cannot be killed. The kill commands work
258specially in a read-only buffer: they move over text and copy it to
91ed7ea8 259the kill ring, without actually deleting it from the buffer.
4d45a8b7 260Normally, they also beep and display an error message when this
91ed7ea8
CY
261happens. But if you set the variable @code{kill-read-only-ok} to a
262non-@code{nil} value, they just print a message in the echo area to
263explain why the text has not been erased.
264
265@vindex kill-do-not-save-duplicates
266 If you change the variable @code{kill-do-not-save-duplicates} to a
267non-@code{nil} value, identical subsequent kills yield a single
268kill-ring entry, without duplication.
269
b103c904 270@node Yanking
6bf7aab6
DL
271@section Yanking
272@cindex moving text
273@cindex copying text
274@cindex kill ring
275@cindex yanking
276@cindex pasting
277
7e9bf756 278 @dfn{Yanking} means reinserting text previously killed. The usual
50b063c3 279way to move or copy text is to kill it and then yank it elsewhere.
6bf7aab6
DL
280
281@table @kbd
282@item C-y
50b063c3 283Yank the last kill into the buffer, at point (@code{yank}).
6bf7aab6 284@item M-y
50b063c3
CY
285Replace the text just yanked with an earlier batch of killed text
286(@code{yank-pop}). @xref{Earlier Kills}.
6bf7aab6 287@item C-M-w
50b063c3
CY
288Cause the following command, if it is a kill command, to append to the
289previous kill (@code{append-next-kill}). @xref{Appending Kills}.
6bf7aab6
DL
290@end table
291
50b063c3
CY
292@kindex C-y
293@findex yank
294 The basic yanking command is @kbd{C-y} (@code{yank}). It inserts
295the most recent kill, leaving the cursor at the end of the inserted
296text. It also sets the mark at the beginning of the inserted text,
297without activating the mark; this lets you jump easily to that
298position, if you wish, with @kbd{C-u C-@key{SPC}} (@pxref{Mark Ring}).
299
300 With a plain prefix argument (@kbd{C-u C-y}), the command instead
301leaves the cursor in front of the inserted text, and sets the mark at
302the end. Using any other prefix argument specifies an earlier kill;
1df7defd 303e.g., @kbd{C-u 4 C-y} reinserts the fourth most recent kill.
50b063c3
CY
304@xref{Earlier Kills}.
305
306 On graphical displays, @kbd{C-y} first checks if another application
307has placed any text in the system clipboard more recently than the
4ef1567b 308last Emacs kill. If so, it inserts the clipboard's text instead.
50b063c3
CY
309Thus, Emacs effectively treats ``cut'' or ``copy'' clipboard
310operations performed in other applications like Emacs kills, except
311that they are not recorded in the kill ring. @xref{Cut and Paste},
312for details.
7464a646 313
6bf7aab6 314@menu
50b063c3 315* Kill Ring:: Where killed text is stored.
8838673e 316* Earlier Kills:: Yanking something killed some time ago.
50b063c3 317* Appending Kills:: Several kills in a row all yank together.
6bf7aab6
DL
318@end menu
319
320@node Kill Ring
321@subsection The Kill Ring
322
4d45a8b7
CY
323 The @dfn{kill ring} is a list of blocks of text that were previously
324killed. There is only one kill ring, shared by all buffers, so you
325can kill text in one buffer and yank it in another buffer. This is
50b063c3 326the usual way to move text from one buffer to another. (There are
4d45a8b7
CY
327several other methods: for instance, you could store the text in a
328register; see @ref{Registers}. @xref{Accumulating Text}, for some
329other ways to move text around.)
6bf7aab6 330
50b063c3
CY
331@vindex kill-ring-max
332 The maximum number of entries in the kill ring is controlled by the
333variable @code{kill-ring-max}. The default is 60. If you make a new
334kill when this limit has been reached, Emacs makes room by deleting
335the oldest entry in the kill ring.
4d45a8b7 336
50b063c3
CY
337@vindex kill-ring
338 The actual contents of the kill ring are stored in a variable named
339@code{kill-ring}; you can view the entire contents of the kill ring
340with @kbd{C-h v kill-ring}.
341
342@node Earlier Kills
343@subsection Yanking Earlier Kills
344@cindex yanking previous kills
345
346 As explained in @ref{Yanking}, you can use a numeric argument to
347@kbd{C-y} to yank text that is no longer the most recent kill. This
348is useful if you remember which kill ring entry you want. If you
349don't, you can use the @kbd{M-y} (@code{yank-pop}) command to cycle
350through the possibilities.
351
352@kindex M-y
353@findex yank-pop
354 If the previous command was a yank command, @kbd{M-y} takes the text
355that was yanked and replaces it with the text from an earlier kill.
356So, to recover the text of the next-to-the-last kill, first use
357@kbd{C-y} to yank the last kill, and then use @kbd{M-y} to replace it
358with the previous kill. @kbd{M-y} is allowed only after a @kbd{C-y}
359or another @kbd{M-y}.
360
361 You can understand @kbd{M-y} in terms of a ``last yank'' pointer which
362points at an entry in the kill ring. Each time you kill, the ``last
363yank'' pointer moves to the newly made entry at the front of the ring.
364@kbd{C-y} yanks the entry which the ``last yank'' pointer points to.
365@kbd{M-y} moves the ``last yank'' pointer to a different entry, and the
366text in the buffer changes to match. Enough @kbd{M-y} commands can move
367the pointer to any entry in the ring, so you can get any entry into the
368buffer. Eventually the pointer reaches the end of the ring; the next
369@kbd{M-y} loops back around to the first entry again.
370
371 @kbd{M-y} moves the ``last yank'' pointer around the ring, but it does
372not change the order of the entries in the ring, which always runs from
373the most recent kill at the front to the oldest one still remembered.
374
375 @kbd{M-y} can take a numeric argument, which tells it how many entries
376to advance the ``last yank'' pointer by. A negative argument moves the
377pointer toward the front of the ring; from the front of the ring, it
378moves ``around'' to the last entry and continues forward from there.
379
380 Once the text you are looking for is brought into the buffer, you can
381stop doing @kbd{M-y} commands and it will stay there. It's just a copy
382of the kill ring entry, so editing it in the buffer does not change
383what's in the ring. As long as no new killing is done, the ``last
384yank'' pointer remains at the same place in the kill ring, so repeating
385@kbd{C-y} will yank another copy of the same previous kill.
4d45a8b7 386
50b063c3
CY
387 When you call @kbd{C-y} with a numeric argument, that also sets the
388``last yank'' pointer to the entry that it yanks.
6bf7aab6
DL
389
390@node Appending Kills
391@subsection Appending Kills
392
393@cindex appending kills in the ring
6bf7aab6
DL
394 Normally, each kill command pushes a new entry onto the kill ring.
395However, two or more kill commands in a row combine their text into a
396single entry, so that a single @kbd{C-y} yanks all the text as a unit,
397just as it was before it was killed.
398
399 Thus, if you want to yank text as a unit, you need not kill all of it
400with one command; you can keep killing line after line, or word after
401word, until you have killed it all, and you can still get it all back at
402once.
403
404 Commands that kill forward from point add onto the end of the previous
405killed text. Commands that kill backward from point add text onto the
406beginning. This way, any sequence of mixed forward and backward kill
407commands puts all the killed text into one entry without rearrangement.
408Numeric arguments do not break the sequence of appending kills. For
409example, suppose the buffer contains this text:
410
411@example
412This is a line @point{}of sample text.
413@end example
414
415@noindent
416with point shown by @point{}. If you type @kbd{M-d M-@key{DEL} M-d
417M-@key{DEL}}, killing alternately forward and backward, you end up with
418@samp{a line of sample} as one entry in the kill ring, and @samp{This
58fa012d
EZ
419is@ @ text.} in the buffer. (Note the double space between @samp{is}
420and @samp{text}, which you can clean up with @kbd{M-@key{SPC}} or
421@kbd{M-q}.)
6bf7aab6
DL
422
423 Another way to kill the same text is to move back two words with
424@kbd{M-b M-b}, then kill all four words forward with @kbd{C-u M-d}.
425This produces exactly the same results in the buffer and in the kill
426ring. @kbd{M-f M-f C-u M-@key{DEL}} kills the same text, all going
427backward; once again, the result is the same. The text in the kill ring
428entry always has the same order that it had in the buffer before you
429killed it.
430
431@kindex C-M-w
432@findex append-next-kill
433 If a kill command is separated from the last kill command by other
9718dea2
CY
434commands (not just numeric arguments), it starts a new entry on the
435kill ring. But you can force it to combine with the last killed text,
436by typing @kbd{C-M-w} (@code{append-next-kill}) right beforehand. The
437@kbd{C-M-w} tells its following command, if it is a kill command, to
438treat the kill as part of the sequence of previous kills. As usual,
439the kill is appended to the previous killed text if the command kills
440forward, and prepended if the command kills backward. In this way,
441you can kill several separated pieces of text and accumulate them to
442be yanked back in one place.
6bf7aab6 443
7e9bf756
CY
444 A kill command following @kbd{M-w} (@code{kill-ring-save}) does not
445append to the text that @kbd{M-w} copied into the kill ring.
6bf7aab6 446
4d45a8b7
CY
447@node Cut and Paste
448@section ``Cut and Paste'' Operations on Graphical Displays
449@cindex cut
450@cindex copy
451@cindex paste
452
453 In most graphical desktop environments, you can transfer data
454(usually text) between different applications using a system facility
455called the @dfn{clipboard}. On X, two other similar facilities are
456available: the primary selection and the secondary selection. When
457Emacs is run on a graphical display, its kill and yank commands
458integrate with these facilities, so that you can easily transfer text
459between Emacs and other graphical applications.
460
461 By default, Emacs uses UTF-8 as the coding system for inter-program
462text transfers. If you find that the pasted text is not what you
463expected, you can specify another coding system by typing @kbd{C-x
464@key{RET} x} or @kbd{C-x @key{RET} X}. You can also request a
465different data type by customizing @code{x-select-request-type}.
466@xref{Communication Coding}.
467
468@menu
469* Clipboard:: How Emacs uses the system clipboard.
470* Primary Selection:: The temporarily selected text selection.
471* Secondary Selection:: Cutting without altering point and mark.
472@end menu
473
474@node Clipboard
475@subsection Using the Clipboard
476@cindex clipboard
477
478 The @dfn{clipboard} is the facility that most graphical applications
479use for ``cutting and pasting''. When the clipboard exists, the kill
480and yank commands in Emacs make use of it.
481
482 When you kill some text with a command such as @kbd{C-w}
483(@code{kill-region}), or copy it to the kill ring with a command such
484as @kbd{M-w} (@code{kill-ring-save}), that text is also put in the
50b063c3 485clipboard.
4d45a8b7
CY
486
487@vindex save-interprogram-paste-before-kill
488 When an Emacs kill command puts text in the clipboard, the existing
489clipboard contents are normally lost. Optionally, you can change
490@code{save-interprogram-paste-before-kill} to @code{t}. Then Emacs
491will first save the clipboard to its kill ring, preventing you from
492losing the old clipboard data---at the risk of high memory consumption
493if that data turns out to be large.
494
50b063c3
CY
495 Yank commands, such as @kbd{C-y} (@code{yank}), also use the
496clipboard. If another application ``owns'' the clipboard---i.e., if
497you cut or copied text there more recently than your last kill command
498in Emacs---then Emacs yanks from the clipboard instead of the kill
499ring.
4d45a8b7
CY
500
501@vindex yank-pop-change-selection
502 Normally, rotating the kill ring with @kbd{M-y} (@code{yank-pop})
503does not alter the clipboard. However, if you change
504@code{yank-pop-change-selection} to @code{t}, then @kbd{M-y} saves the
505new yank to the clipboard.
506
507@vindex x-select-enable-clipboard
508 To prevent kill and yank commands from accessing the clipboard,
509change the variable @code{x-select-enable-clipboard} to @code{nil}.
a08a07e3
CY
510
511@cindex clipboard manager
512@vindex x-select-enable-clipboard-manager
513 Many X desktop environments support a feature called the
514@dfn{clipboard manager}. If you exit Emacs while it is the current
515``owner'' of the clipboard data, and there is a clipboard manager
516running, Emacs transfers the clipboard data to the clipboard manager
517so that it is not lost. In some circumstances, this may cause a delay
518when exiting Emacs; if you wish to prevent Emacs from transferring
519data to the clipboard manager, change the variable
520@code{x-select-enable-clipboard-manager} to @code{nil}.
4d45a8b7
CY
521
522@vindex x-select-enable-primary
523@findex clipboard-kill-region
524@findex clipboard-kill-ring-save
525@findex clipboard-yank
526 Prior to Emacs 24, the kill and yank commands used the primary
527selection (@pxref{Primary Selection}), not the clipboard. If you
528prefer this behavior, change @code{x-select-enable-clipboard} to
529@code{nil}, @code{x-select-enable-primary} to @code{t}, and
530@code{mouse-drag-copy-region} to @code{t}. In this case, you can use
531the following commands to act explicitly on the clipboard:
532@code{clipboard-kill-region} kills the region and saves it to the
533clipboard; @code{clipboard-kill-ring-save} copies the region to the
534kill ring and saves it to the clipboard; and @code{clipboard-yank}
535yanks the contents of the clipboard at point.
536
537@node Primary Selection
538@subsection Cut and Paste with Other Window Applications
539@cindex X cutting and pasting
540@cindex X selection
541@cindex primary selection
542@cindex selection, primary
543
50b063c3 544 Under the X Window System, there exists a @dfn{primary selection}
4d45a8b7
CY
545containing the last stretch of text selected in an X application
546(usually by dragging the mouse). Typically, this text can be inserted
547into other X applications by @kbd{mouse-2} clicks. The primary
50b063c3
CY
548selection is separate from the clipboard. Its contents are more
549``fragile''; they are overwritten each time you select text with the
550mouse, whereas the clipboard is only overwritten by explicit ``cut''
551or ``copy'' commands.
4d45a8b7 552
50b063c3
CY
553 Under X, whenever the region is active (@pxref{Mark}), the text in
554the region is saved in the primary selection. This applies regardless
555of whether the region was made by dragging or clicking the mouse
1df7defd 556(@pxref{Mouse Commands}), or by keyboard commands (e.g., by typing
50b063c3 557@kbd{C-@key{SPC}} and moving point; @pxref{Setting Mark}).
4d45a8b7
CY
558
559@vindex select-active-regions
963578d3
CY
560 If you change the variable @code{select-active-regions} to
561@code{only}, Emacs saves only temporarily active regions to the
1df7defd 562primary selection, i.e., those made with the mouse or with shift
963578d3
CY
563selection (@pxref{Shift Selection}). If you change
564@code{select-active-regions} to @code{nil}, Emacs avoids saving active
565regions to the primary selection entirely.
4d45a8b7
CY
566
567 To insert the primary selection into an Emacs buffer, click
568@kbd{mouse-2} (@code{mouse-yank-primary}) where you want to insert it.
569@xref{Mouse Commands}.
570
571@cindex MS-Windows, and primary selection
572 MS-Windows provides no primary selection, but Emacs emulates it
573within a single Emacs session by storing the selected text internally.
574Therefore, all the features and commands related to the primary
575selection work on Windows as they do on X, for cutting and pasting
576within the same session, but not across Emacs sessions or with other
577applications.
578
579@node Secondary Selection
580@subsection Secondary Selection
581@cindex secondary selection
582
583 In addition to the primary selection, the X Window System provides a
584second similar facility known as the @dfn{secondary selection}.
585Nowadays, few X applications make use of the secondary selection, but
586you can access it using the following Emacs commands:
587
588@table @kbd
589@findex mouse-set-secondary
590@kindex M-Drag-Mouse-1
591@item M-Drag-Mouse-1
592Set the secondary selection, with one end at the place where you press
593down the button, and the other end at the place where you release it
594(@code{mouse-set-secondary}). The selected text is highlighted, using
595the @code{secondary-selection} face, as you drag. The window scrolls
596automatically if you drag the mouse off the top or bottom of the
597window, just like @code{mouse-set-region} (@pxref{Mouse Commands}).
598
599This command does not alter the kill ring.
600
601@findex mouse-start-secondary
602@kindex M-Mouse-1
603@item M-Mouse-1
604Set one endpoint for the @dfn{secondary selection}
605(@code{mouse-start-secondary}).
606
607@findex mouse-secondary-save-then-kill
608@kindex M-Mouse-3
609@item M-Mouse-3
610Set the secondary selection, with one end at the position clicked and
611the other at the position specified with @kbd{M-Mouse-1}
612(@code{mouse-secondary-save-then-kill}). This also puts the selected
613text in the kill ring. A second @kbd{M-Mouse-3} at the same place
614kills the secondary selection just made.
615
616@findex mouse-yank-secondary
617@kindex M-Mouse-2
618@item M-Mouse-2
619Insert the secondary selection where you click, placing point at the
620end of the yanked text (@code{mouse-yank-secondary}).
621@end table
622
623Double or triple clicking of @kbd{M-Mouse-1} operates on words and
624lines, much like @kbd{Mouse-1}.
625
626If @code{mouse-yank-at-point} is non-@code{nil}, @kbd{M-Mouse-2} yanks
627at point. Then it does not matter precisely where you click, or even
628which of the frame's windows you click on. @xref{Mouse Commands}.
629
b103c904 630@node Accumulating Text
6bf7aab6
DL
631@section Accumulating Text
632@findex append-to-buffer
633@findex prepend-to-buffer
634@findex copy-to-buffer
635@findex append-to-file
636
637@cindex accumulating scattered text
638 Usually we copy or move text by killing it and yanking it, but there
3423ce02 639are other convenient methods for copying one block of text in many
7e9bf756
CY
640places, or for copying many scattered blocks of text into one place.
641Here we describe the commands to accumulate scattered pieces of text
642into a buffer or into a file.
6bf7aab6
DL
643
644@table @kbd
645@item M-x append-to-buffer
0ec1f115 646Append region to the contents of a specified buffer.
6bf7aab6 647@item M-x prepend-to-buffer
0ec1f115 648Prepend region to the contents of a specified buffer.
6bf7aab6 649@item M-x copy-to-buffer
58fa012d 650Copy region into a specified buffer, deleting that buffer's old contents.
6bf7aab6 651@item M-x insert-buffer
0ec1f115 652Insert the contents of a specified buffer into current buffer at point.
6bf7aab6 653@item M-x append-to-file
0ec1f115 654Append region to the contents of a specified file, at the end.
6bf7aab6
DL
655@end table
656
657 To accumulate text into a buffer, use @kbd{M-x append-to-buffer}.
658This reads a buffer name, then inserts a copy of the region into the
659buffer specified. If you specify a nonexistent buffer,
660@code{append-to-buffer} creates the buffer. The text is inserted
661wherever point is in that buffer. If you have been using the buffer for
662editing, the copied text goes into the middle of the text of the buffer,
58fa012d 663starting from wherever point happens to be at that moment.
6bf7aab6
DL
664
665 Point in that buffer is left at the end of the copied text, so
666successive uses of @code{append-to-buffer} accumulate the text in the
667specified buffer in the same order as they were copied. Strictly
668speaking, @code{append-to-buffer} does not always append to the text
50b063c3
CY
669already in the buffer---it appends only if point in that buffer is at
670the end. However, if @code{append-to-buffer} is the only command you
671use to alter a buffer, then point is always at the end.
6bf7aab6
DL
672
673 @kbd{M-x prepend-to-buffer} is just like @code{append-to-buffer}
674except that point in the other buffer is left before the copied text, so
675successive prependings add text in reverse order. @kbd{M-x
58fa012d 676copy-to-buffer} is similar, except that any existing text in the other
6bf7aab6
DL
677buffer is deleted, so the buffer is left containing just the text newly
678copied into it.
679
4c987d71
CY
680 The command @kbd{M-x insert-buffer} can be used to retrieve the
681accumulated text from another buffer. This prompts for the name of a
682buffer, and inserts a copy of all the text in that buffer into the
683current buffer at point, leaving point at the beginning of the
684inserted text. It also adds the position of the end of the inserted
685text to the mark ring, without activating the mark. @xref{Buffers},
686for background information on buffers.
6bf7aab6 687
7e9bf756
CY
688 Instead of accumulating text in a buffer, you can append text
689directly into a file with @kbd{M-x append-to-file}. This prompts for
690a filename, and adds the text of the region to the end of the
691specified file. The file is changed immediately on disk.
6bf7aab6
DL
692
693 You should use @code{append-to-file} only with files that are
694@emph{not} being visited in Emacs. Using it on a file that you are
695editing in Emacs would change the file behind Emacs's back, which
696can lead to losing some of your editing.
697
7e9bf756
CY
698 Another way to move text around is to store it in a register.
699@xref{Registers}.
700
b103c904 701@node Rectangles
6bf7aab6
DL
702@section Rectangles
703@cindex rectangle
704@cindex columns (and rectangles)
705@cindex killing rectangular areas of text
706
7e9bf756
CY
707 @dfn{Rectangle} commands operate on rectangular areas of the text:
708all the characters between a certain pair of columns, in a certain
709range of lines. Emacs has commands to kill rectangles, yank killed
710rectangles, clear them out, fill them with blanks or text, or delete
711them. Rectangle commands are useful with text in multicolumn formats,
712and for changing text into or out of such formats.
6bf7aab6 713
077b72a4 714@cindex mark rectangle
50b063c3
CY
715 To specify a rectangle for a command to work on, set the mark at one
716corner and point at the opposite corner. The rectangle thus specified
717is called the @dfn{region-rectangle}. If point and the mark are in
718the same column, the region-rectangle is empty. If they are in the
719same line, the region-rectangle is one line high.
720
721 The region-rectangle is controlled in much the same way as the
722region is controlled. But remember that a given combination of point
723and mark values can be interpreted either as a region or as a
724rectangle, depending on the command that uses them.
6bf7aab6
DL
725
726@table @kbd
727@item C-x r k
177c0ea7 728Kill the text of the region-rectangle, saving its contents as the
6bf7aab6 729``last killed rectangle'' (@code{kill-rectangle}).
48de8b12
CY
730@item C-x r M-w
731Save the text of the region-rectangle as the ``last killed rectangle''
732(@code{copy-rectangle-as-kill}).
6bf7aab6
DL
733@item C-x r d
734Delete the text of the region-rectangle (@code{delete-rectangle}).
735@item C-x r y
736Yank the last killed rectangle with its upper left corner at point
737(@code{yank-rectangle}).
738@item C-x r o
739Insert blank space to fill the space of the region-rectangle
740(@code{open-rectangle}). This pushes the previous contents of the
50b063c3
CY
741region-rectangle to the right.
742@item C-x r N
743Insert line numbers along the left edge of the region-rectangle
744(@code{rectangle-number-lines}). This pushes the previous contents of
745the region-rectangle to the right.
3b4d49d7 746@item C-x r c
df7593dd 747Clear the region-rectangle by replacing all of its contents with spaces
3b4d49d7 748(@code{clear-rectangle}).
6bf7aab6
DL
749@item M-x delete-whitespace-rectangle
750Delete whitespace in each of the lines on the specified rectangle,
751starting from the left edge column of the rectangle.
d621caf7 752@item C-x r t @var{string} @key{RET}
df7593dd 753Replace rectangle contents with @var{string} on each line
6bf7aab6 754(@code{string-rectangle}).
1e1e6d52 755@item M-x string-insert-rectangle @key{RET} @var{string} @key{RET}
e9db3bf2 756Insert @var{string} on each line of the rectangle.
6bf7aab6
DL
757@end table
758
50b063c3
CY
759 The rectangle operations fall into two classes: commands to erase or
760insert rectangles, and commands to make blank rectangles.
6bf7aab6
DL
761
762@kindex C-x r k
763@kindex C-x r d
764@findex kill-rectangle
765@findex delete-rectangle
50b063c3
CY
766 There are two ways to erase the text in a rectangle: @kbd{C-x r d}
767(@code{delete-rectangle}) to delete the text outright, or @kbd{C-x r
58179cce 768k} (@code{kill-rectangle}) to remove the text and save it as the
50b063c3
CY
769@dfn{last killed rectangle}. In both cases, erasing the
770region-rectangle is like erasing the specified text on each line of
bfd779dd 771the rectangle; if there is any following text on the line, it moves
50b063c3
CY
772backwards to fill the gap.
773
774 ``Killing'' a rectangle is not killing in the usual sense; the
6bf7aab6 775rectangle is not stored in the kill ring, but in a special place that
50b063c3
CY
776only records the most recent rectangle killed. This is because
777yanking a rectangle is so different from yanking linear text that
778different yank commands have to be used. Yank-popping is not defined
779for rectangles.
6bf7aab6 780
48de8b12
CY
781@kindex C-x r M-w
782@findex copy-rectangle-as-kill
783 @kbd{C-x r M-w} (@code{copy-rectangle-as-kill}) is the equivalent of
784@kbd{M-w} for rectangles: it records the rectangle as the ``last
785killed rectangle'', without deleting the text from the buffer.
786
6bf7aab6
DL
787@kindex C-x r y
788@findex yank-rectangle
789 To yank the last killed rectangle, type @kbd{C-x r y}
50b063c3
CY
790(@code{yank-rectangle}). The rectangle's first line is inserted at
791point, the rectangle's second line is inserted at the same horizontal
792position one line vertically below, and so on. The number of lines
793affected is determined by the height of the saved rectangle.
794
795 For example, you can convert two single-column lists into a
796double-column list by killing one of the single-column lists as a
797rectangle, and then yanking it beside the other list.
6bf7aab6
DL
798
799 You can also copy rectangles into and out of registers with @kbd{C-x r
a30ed87b 800r @var{r}} and @kbd{C-x r i @var{r}}. @xref{Rectangle Registers}.
6bf7aab6
DL
801
802@kindex C-x r o
803@findex open-rectangle
3b4d49d7 804@kindex C-x r c
6bf7aab6
DL
805@findex clear-rectangle
806 There are two commands you can use for making blank rectangles:
50b063c3
CY
807@kbd{C-x r c} (@code{clear-rectangle}) blanks out existing text in the
808region-rectangle, and @kbd{C-x r o} (@code{open-rectangle}) inserts a
809blank rectangle.
6bf7aab6
DL
810
811@findex delete-whitespace-rectangle
50b063c3
CY
812 @kbd{M-x delete-whitespace-rectangle} deletes horizontal whitespace
813starting from a particular column. This applies to each of the lines
814in the rectangle, and the column is specified by the left edge of the
815rectangle. The right edge of the rectangle does not make any
816difference to this command.
817
818@kindex C-x r N
819@findex rectangle
820 The command @kbd{C-x r N} (@code{rectangle-number-lines}) inserts
821line numbers along the left edge of the region-rectangle. Normally,
822the numbering begins from 1 (for the first line of the rectangle).
823With a prefix argument, the command prompts for a number to begin
824from, and for a format string with which to print the numbers
825(@pxref{Formatting Strings,,, elisp, The Emacs Lisp Reference
826Manual}).
6bf7aab6
DL
827
828@kindex C-x r t
829@findex string-rectangle
d57211a3 830 The command @kbd{C-x r t} (@code{string-rectangle}) replaces the
1e1e6d52
GM
831contents of a region-rectangle with a string on each line. The
832string's width need not be the same as the width of the rectangle. If
833the string's width is less, the text after the rectangle shifts left;
834if the string is wider than the rectangle, the text after the
835rectangle shifts right.
836
837@findex string-insert-rectangle
177c0ea7
JB
838 The command @kbd{M-x string-insert-rectangle} is similar to
839@code{string-rectangle}, but inserts the string on each line,
1e1e6d52 840shifting the original text to the right.
ab5796a9 841
b103c904 842@node CUA Bindings
38fe0612 843@section CUA Bindings
95a0306c
KS
844@findex cua-mode
845@vindex cua-mode
846@cindex CUA key bindings
847@vindex cua-enable-cua-keys
848 The command @kbd{M-x cua-mode} sets up key bindings that are
849compatible with the Common User Access (CUA) system used in many other
50b063c3
CY
850applications.
851
852 When CUA mode is enabled, the keys @kbd{C-x}, @kbd{C-c}, @kbd{C-v},
853and @kbd{C-z} invoke commands that cut (kill), copy, paste (yank), and
854undo respectively. The @kbd{C-x} and @kbd{C-c} keys perform cut and
855copy only if the region is active. Otherwise, they still act as
856prefix keys, so that standard Emacs commands like @kbd{C-x C-c} still
857work. Note that this means the variable @code{mark-even-if-inactive}
858has no effect for @kbd{C-x} and @kbd{C-c} (@pxref{Using Region}).
95a0306c 859
144e981a
RS
860 To enter an Emacs command like @kbd{C-x C-f} while the mark is
861active, use one of the following methods: either hold @kbd{Shift}
1df7defd
PE
862together with the prefix key, e.g., @kbd{S-C-x C-f}, or quickly type
863the prefix key twice, e.g., @kbd{C-x C-x C-f}.
95a0306c 864
50b063c3
CY
865 To disable the overriding of standard Emacs binding by CUA mode,
866while retaining the other features of CUA mode described below, set
867the variable @code{cua-enable-cua-keys} to @code{nil}.
868
7e9bf756
CY
869 In CUA mode, typed text replaces the active region as in
870Delete-Selection mode (@pxref{Mouse Commands}).
871
95a0306c
KS
872@cindex rectangle highlighting
873 CUA mode provides enhanced rectangle support with visible
874rectangle highlighting. Use @kbd{C-RET} to start a rectangle,
875extend it using the movement commands, and cut or copy it using
19126168
KS
876@kbd{C-x} or @kbd{C-c}. @kbd{RET} moves the cursor to the next
877(clockwise) corner of the rectangle, so you can easily expand it in
878any direction. Normal text you type is inserted to the left or right
879of each line in the rectangle (on the same side as the cursor).
95a0306c
KS
880
881 With CUA you can easily copy text and rectangles into and out of
40b6cb79 882registers by providing a one-digit numeric prefix to the kill, copy,
1df7defd 883and yank commands, e.g., @kbd{C-1 C-c} copies the region into register
95a0306c
KS
884@code{1}, and @kbd{C-2 C-v} yanks the contents of register @code{2}.
885
886@cindex global mark
887 CUA mode also has a global mark feature which allows easy moving and
888copying of text between buffers. Use @kbd{C-S-SPC} to toggle the
889global mark on and off. When the global mark is on, all text that you
890kill or copy is automatically inserted at the global mark, and text
891you type is inserted at the global mark rather than at the current
892position.
893
894 For example, to copy words from various buffers into a word list in
895a given buffer, set the global mark in the target buffer, then
1df7defd 896navigate to each of the words you want in the list, mark it (e.g., with
95a0306c
KS
897@kbd{S-M-f}), copy it to the list with @kbd{C-c} or @kbd{M-w}, and
898insert a newline after the word in the target list by pressing
899@key{RET}.