killing.texi 40 KB

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