Mercurial > emacs
annotate man/killing.texi @ 50715:46229d46cbeb
Major rewrite. The code is reordered, cleaner and faster.
Introduced new options to automatically cleanup the recent list,
and to handle filename transformation (for example to use true
filenames).
(recentf-version): New constant.
(recentf-save-file-header): Moved.
(recentf-data-cache): New variable.
(recentf-update-menu-p, recentf-initialized-p): Removed.
(recentf-menu-customization-changed): Moved. Doc fix.
(recentf-max-saved-items): Doc fix.
(recentf-save-file): Doc fix. No more expand filename here.
(recentf-exclude, recentf-menu-action)
(recentf-menu-filter): Doc fix.
(recentf-menu-append-commands-flag): Renamed from...
(recentf-menu-append-commands-p): Made obsolete.
(recentf-keep-non-readable-files-flag): Renamed from...
(recentf-keep-non-readable-files-p): Made obsolete.
(recentf-auto-cleanup, recentf-filename-handler): New options.
(recentf-string-equal, recentf-string-lessp)
(recentf-string-member): New functions.
(recentf-trunc-list): Moved.
(recentf-dump-variable): Moved. Better code and output format.
(recentf-auto-cleanup-timer): New variable.
(recentf-auto-cleanup): New function.
(recentf-push, recentf-expand-file-name): New functions.
(recentf-add-file): In-lined. Use above functions.
(recentf-remove-if-non-readable): In-lined. Expand file name.
(recentf-find-file): Use `recentf-remove-if-non-readable'.
(recentf-directory-compare): Moved. Use `recentf-string-equal'
and `recentf-string-lessp' to do comparisons.
(recentf-menu-items-for-commands)
(recentf-menu-filter-commands): Moved.
(recentf-elements, recentf-make-menu-element)
(recentf-menu-element-item, recentf-menu-element-value)
(recentf-set-menu-element-item, recentf-set-menu-element-value)
(recentf-sub-menu-element-p, recentf-make-default-menu-element)
(recentf-menu-elements): In-lined. Some doc fix.
(recentf-apply-menu-filter): Better code.
(recentf-make-menu-items): Doc fix. Use
`recentf-menu-append-commands-flag'.
(recentf-make-menu-item): In-lined. Better code.
(recentf-clear-data): New function.
(recentf-sort-ascending, recentf-sort-descending)
(recentf-sort-basenames-ascending)
(recentf-sort-basenames-descending)
(recentf-sort-directories-ascending)
(recentf-sort-directories-descending)
(recentf-show-basenames-ascending)
(recentf-show-basenames-descending: In-lined. Better code. Some
doc fix.
(recentf-show-basenames)
(recentf-relative-filter): Better code. Doc fix.
(recentf-arrange-by-rule-subfilter): Doc fix. Improved :set code.
(recentf-match-rule-p): Use filename instead of file-path.
(recentf-arrange-by-rule, recentf-build-mode-rules)
(recentf-arrange-by-mode, recentf-build-dir-rules)
(recentf-file-name-nondir)
(recentf-filter-changer-alist): Some doc fix and code cleanup.
(recentf-filter-changer-goto-next): Doc fix. Call
`recentf-clear-data'.
(recentf-filter-changer-get-current)
(recentf-filter-changer-get-next): In-lined. Doc fix and better
code.
(recentf-filter-changer): Doc fix and better code.
(recentf-cancel-dialog): Doc fix.
(recentf-dialog-mode-map): Initialized in defvar.
(recentf-dialog-mode): Doc fix.
(recentf-track-opened-file): Renamed from...
(recentf-add-file-hook): Removed.
(recentf-track-closed-file): Renamed from...
(recentf-remove-file-hook): Removed.
(recentf-update-menu-hook): Removed. Replaced by...
(recentf-update-menu): New. Better catch unnecessary updates.
Display a message on error.
(recentf-used-hooks): New constant.
(recentf-enabled-p): New function.
(recentf-edit-selected-items)
(recentf-open-files-action)
(recentf-open-files-item-shift): Doc fix.
(recentf-edit-list-action)
(recentf-open-files-item): Doc fix. Code cleanup.
(recentf-edit-list, recentf-open-files)
(recentf-open-more-files): Likewise. Removed autoload cookie.
(recentf-save-list, recentf-cleanup): Likewise. Moved.
(recentf-load-list): New command.
(recentf-mode): Better code. Does nothing if enabling the already
enabled mode.
author | Juanma Barranquero <lekktu@gmail.com> |
---|---|
date | Sat, 26 Apr 2003 23:41:59 +0000 |
parents | 23a1cea22d13 |
children | 695cf19ef79e d7ddb3e565de |
rev | line source |
---|---|
25829 | 1 @c This is part of the Emacs manual. |
36162
f657bb5a6cf5
Rewrite kill-read-only-ok, Delete Selection mode, replace-rectangle.
Richard M. Stallman <rms@gnu.org>
parents:
35918
diff
changeset
|
2 @c Copyright (C) 1985,86,87,93,94,95,97,00,2001 Free Software Foundation, Inc. |
25829 | 3 @c See file emacs.texi for copying conditions. |
4 @iftex | |
5 @chapter Killing and Moving Text | |
6 | |
7 @dfn{Killing} means erasing text and copying it into the @dfn{kill | |
8 ring}, from which it can be retrieved by @dfn{yanking} it. Some systems | |
9 use the terms ``cutting'' and ``pasting'' for these operations. | |
10 | |
38745 | 11 The most common way of moving or copying text within Emacs is to kill it |
25829 | 12 and later yank it elsewhere in one or more places. This is very safe |
13 because Emacs remembers several recent kills, not just the last one. It | |
14 is versatile, because the many commands for killing syntactic units can | |
15 also be used for moving those units. But there are other ways of | |
16 copying text for special purposes. | |
17 | |
46037
7af49c69e77b
Mention that kill commands communicate with other apps,
Richard M. Stallman <rms@gnu.org>
parents:
39264
diff
changeset
|
18 On terminals that support multiple windows for multiple applications, |
7af49c69e77b
Mention that kill commands communicate with other apps,
Richard M. Stallman <rms@gnu.org>
parents:
39264
diff
changeset
|
19 the kill commands also provide a way to select text for other applications |
7af49c69e77b
Mention that kill commands communicate with other apps,
Richard M. Stallman <rms@gnu.org>
parents:
39264
diff
changeset
|
20 to copy, and the Emacs yank commands can access selections made by |
7af49c69e77b
Mention that kill commands communicate with other apps,
Richard M. Stallman <rms@gnu.org>
parents:
39264
diff
changeset
|
21 other programs. |
7af49c69e77b
Mention that kill commands communicate with other apps,
Richard M. Stallman <rms@gnu.org>
parents:
39264
diff
changeset
|
22 |
25829 | 23 Emacs has only one kill ring for all buffers, so you can kill text in |
24 one buffer and yank it in another buffer. | |
25 | |
26 @end iftex | |
27 | |
28 @node Killing, Yanking, Mark, Top | |
29 @section Deletion and Killing | |
30 | |
31 @cindex killing text | |
32 @cindex cutting text | |
33 @cindex deletion | |
34 Most commands which erase text from the buffer save it in the kill | |
35 ring so that you can move or copy it to other parts of the buffer. | |
36 These commands are known as @dfn{kill} commands. The rest of the | |
37 commands that erase text do not save it in the kill ring; they are known | |
38 as @dfn{delete} commands. (This distinction is made only for erasure of | |
39 text in the buffer.) If you do a kill or delete command by mistake, you | |
40 can use the @kbd{C-x u} (@code{undo}) command to undo it | |
41 (@pxref{Undo}). | |
42 | |
30771
e9948dd313fa
(Killing): Document kill-read-only-ok.
Eli Zaretskii <eliz@gnu.org>
parents:
27749
diff
changeset
|
43 @vindex kill-read-only-ok |
e9948dd313fa
(Killing): Document kill-read-only-ok.
Eli Zaretskii <eliz@gnu.org>
parents:
27749
diff
changeset
|
44 @cindex read-only text, killing |
36162
f657bb5a6cf5
Rewrite kill-read-only-ok, Delete Selection mode, replace-rectangle.
Richard M. Stallman <rms@gnu.org>
parents:
35918
diff
changeset
|
45 You cannot kill read-only text, since such text does not allow any |
f657bb5a6cf5
Rewrite kill-read-only-ok, Delete Selection mode, replace-rectangle.
Richard M. Stallman <rms@gnu.org>
parents:
35918
diff
changeset
|
46 kind of modification. But some users like to use the kill commands to |
f657bb5a6cf5
Rewrite kill-read-only-ok, Delete Selection mode, replace-rectangle.
Richard M. Stallman <rms@gnu.org>
parents:
35918
diff
changeset
|
47 copy read-only text into the kill ring, without actually changing it. |
f657bb5a6cf5
Rewrite kill-read-only-ok, Delete Selection mode, replace-rectangle.
Richard M. Stallman <rms@gnu.org>
parents:
35918
diff
changeset
|
48 If you set the variable @code{kill-read-only-ok} to a non-@code{nil} |
f657bb5a6cf5
Rewrite kill-read-only-ok, Delete Selection mode, replace-rectangle.
Richard M. Stallman <rms@gnu.org>
parents:
35918
diff
changeset
|
49 value, the kill commands work specially in a read-only buffer: they |
f657bb5a6cf5
Rewrite kill-read-only-ok, Delete Selection mode, replace-rectangle.
Richard M. Stallman <rms@gnu.org>
parents:
35918
diff
changeset
|
50 move over text, and copy it to the kill ring, without actually |
f657bb5a6cf5
Rewrite kill-read-only-ok, Delete Selection mode, replace-rectangle.
Richard M. Stallman <rms@gnu.org>
parents:
35918
diff
changeset
|
51 deleting it from the buffer. When this happens, a message in the echo |
f657bb5a6cf5
Rewrite kill-read-only-ok, Delete Selection mode, replace-rectangle.
Richard M. Stallman <rms@gnu.org>
parents:
35918
diff
changeset
|
52 area tells you what is happening. |
35918
89bf4e8936b6
(Killing): Document that kill commands in a read-only buffer do
Eli Zaretskii <eliz@gnu.org>
parents:
33805
diff
changeset
|
53 |
25829 | 54 The delete commands include @kbd{C-d} (@code{delete-char}) and |
38461
23f63206a867
Proofreading fixes from Chris Green <chris_e_green@yahoo.com>.
Eli Zaretskii <eliz@gnu.org>
parents:
38415
diff
changeset
|
55 @key{DEL} (@code{delete-backward-char}), which delete only one |
23f63206a867
Proofreading fixes from Chris Green <chris_e_green@yahoo.com>.
Eli Zaretskii <eliz@gnu.org>
parents:
38415
diff
changeset
|
56 character at a time, and those commands that delete only spaces or |
23f63206a867
Proofreading fixes from Chris Green <chris_e_green@yahoo.com>.
Eli Zaretskii <eliz@gnu.org>
parents:
38415
diff
changeset
|
57 newlines. Commands that can destroy significant amounts of nontrivial |
23f63206a867
Proofreading fixes from Chris Green <chris_e_green@yahoo.com>.
Eli Zaretskii <eliz@gnu.org>
parents:
38415
diff
changeset
|
58 data generally do a kill operation instead. The commands' names and |
23f63206a867
Proofreading fixes from Chris Green <chris_e_green@yahoo.com>.
Eli Zaretskii <eliz@gnu.org>
parents:
38415
diff
changeset
|
59 individual descriptions use the words @samp{kill} and @samp{delete} to |
23f63206a867
Proofreading fixes from Chris Green <chris_e_green@yahoo.com>.
Eli Zaretskii <eliz@gnu.org>
parents:
38415
diff
changeset
|
60 say which kind of operation they perform. |
25829 | 61 |
46037
7af49c69e77b
Mention that kill commands communicate with other apps,
Richard M. Stallman <rms@gnu.org>
parents:
39264
diff
changeset
|
62 On window systems, the most recent kill done in Emacs is also the |
7af49c69e77b
Mention that kill commands communicate with other apps,
Richard M. Stallman <rms@gnu.org>
parents:
39264
diff
changeset
|
63 primary selection, if it is more recent than any selection you made in |
7af49c69e77b
Mention that kill commands communicate with other apps,
Richard M. Stallman <rms@gnu.org>
parents:
39264
diff
changeset
|
64 another program. This means that the paste commands of other window |
7af49c69e77b
Mention that kill commands communicate with other apps,
Richard M. Stallman <rms@gnu.org>
parents:
39264
diff
changeset
|
65 applications copy the text that you killed in Emacs. |
7af49c69e77b
Mention that kill commands communicate with other apps,
Richard M. Stallman <rms@gnu.org>
parents:
39264
diff
changeset
|
66 |
30865 | 67 @cindex Delete Selection mode |
68 @cindex mode, Delete Selection | |
69 @findex delete-selection-mode | |
36162
f657bb5a6cf5
Rewrite kill-read-only-ok, Delete Selection mode, replace-rectangle.
Richard M. Stallman <rms@gnu.org>
parents:
35918
diff
changeset
|
70 Many window systems follow the convention that insertion while text |
f657bb5a6cf5
Rewrite kill-read-only-ok, Delete Selection mode, replace-rectangle.
Richard M. Stallman <rms@gnu.org>
parents:
35918
diff
changeset
|
71 is selected deletes the selected text. You can make Emacs behave this |
f657bb5a6cf5
Rewrite kill-read-only-ok, Delete Selection mode, replace-rectangle.
Richard M. Stallman <rms@gnu.org>
parents:
35918
diff
changeset
|
72 way by enabling Delete Selection mode, with @kbd{M-x |
f657bb5a6cf5
Rewrite kill-read-only-ok, Delete Selection mode, replace-rectangle.
Richard M. Stallman <rms@gnu.org>
parents:
35918
diff
changeset
|
73 delete-selection-mode}, or using Custom. Another effect of this mode |
f657bb5a6cf5
Rewrite kill-read-only-ok, Delete Selection mode, replace-rectangle.
Richard M. Stallman <rms@gnu.org>
parents:
35918
diff
changeset
|
74 is that @key{DEL}, @kbd{C-d} and some other keys, when a selection |
f657bb5a6cf5
Rewrite kill-read-only-ok, Delete Selection mode, replace-rectangle.
Richard M. Stallman <rms@gnu.org>
parents:
35918
diff
changeset
|
75 exists, will kill the whole selection. It also enables Transient Mark |
f657bb5a6cf5
Rewrite kill-read-only-ok, Delete Selection mode, replace-rectangle.
Richard M. Stallman <rms@gnu.org>
parents:
35918
diff
changeset
|
76 mode (@pxref{Transient Mark}). |
30865 | 77 |
25829 | 78 @menu |
79 * Deletion:: Commands for deleting small amounts of text and | |
80 blank areas. | |
81 * Killing by Lines:: How to kill entire lines of text at one time. | |
82 * Other Kill Commands:: Commands to kill large regions of text and | |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49330
diff
changeset
|
83 syntactic units such as words and sentences. |
25829 | 84 @end menu |
85 | |
37486
d7bf0f33e402
Add @need before Deletion node.
Richard M. Stallman <rms@gnu.org>
parents:
37447
diff
changeset
|
86 @need 1500 |
25829 | 87 @node Deletion |
88 @subsection Deletion | |
89 @findex delete-backward-char | |
90 @findex delete-char | |
91 | |
37887
1ebd03c6b468
Add some intro text in node Deletion.
Richard M. Stallman <rms@gnu.org>
parents:
37585
diff
changeset
|
92 Deletion means erasing text and not saving it in the kill ring. For |
1ebd03c6b468
Add some intro text in node Deletion.
Richard M. Stallman <rms@gnu.org>
parents:
37585
diff
changeset
|
93 the most part, the Emacs commands that delete text are those that |
1ebd03c6b468
Add some intro text in node Deletion.
Richard M. Stallman <rms@gnu.org>
parents:
37585
diff
changeset
|
94 erase just one character or only whitespace. |
1ebd03c6b468
Add some intro text in node Deletion.
Richard M. Stallman <rms@gnu.org>
parents:
37585
diff
changeset
|
95 |
25829 | 96 @table @kbd |
97 @item C-d | |
36657
0ee33338bb24
(Deletion): Mention the Delete vs Backspace keys. Document
Eli Zaretskii <eliz@gnu.org>
parents:
36162
diff
changeset
|
98 @itemx @key{Delete} |
0ee33338bb24
(Deletion): Mention the Delete vs Backspace keys. Document
Eli Zaretskii <eliz@gnu.org>
parents:
36162
diff
changeset
|
99 Delete next character (@code{delete-char}). If your keyboard has a |
0ee33338bb24
(Deletion): Mention the Delete vs Backspace keys. Document
Eli Zaretskii <eliz@gnu.org>
parents:
36162
diff
changeset
|
100 @key{Delete} function key (usually located in the edit keypad), Emacs |
0ee33338bb24
(Deletion): Mention the Delete vs Backspace keys. Document
Eli Zaretskii <eliz@gnu.org>
parents:
36162
diff
changeset
|
101 binds it to @code{delete-char} as well. |
25829 | 102 @item @key{DEL} |
36657
0ee33338bb24
(Deletion): Mention the Delete vs Backspace keys. Document
Eli Zaretskii <eliz@gnu.org>
parents:
36162
diff
changeset
|
103 @itemx @key{BS} |
0ee33338bb24
(Deletion): Mention the Delete vs Backspace keys. Document
Eli Zaretskii <eliz@gnu.org>
parents:
36162
diff
changeset
|
104 Delete previous character (@code{delete-backward-char}). Some keyboards |
37486
d7bf0f33e402
Add @need before Deletion node.
Richard M. Stallman <rms@gnu.org>
parents:
37447
diff
changeset
|
105 refer to this key as a ``backspace key'' and label it with a left arrow. |
25829 | 106 @item M-\ |
107 Delete spaces and tabs around point (@code{delete-horizontal-space}). | |
108 @item M-@key{SPC} | |
109 Delete spaces and tabs around point, leaving one space | |
110 (@code{just-one-space}). | |
111 @item C-x C-o | |
112 Delete blank lines around the current line (@code{delete-blank-lines}). | |
113 @item M-^ | |
114 Join two lines by deleting the intervening newline, along with any | |
115 indentation following it (@code{delete-indentation}). | |
116 @end table | |
117 | |
36725
640fb21a2098
Clarify the text for BACKSPACE vs DELETE.
Richard M. Stallman <rms@gnu.org>
parents:
36720
diff
changeset
|
118 @kindex DEL |
640fb21a2098
Clarify the text for BACKSPACE vs DELETE.
Richard M. Stallman <rms@gnu.org>
parents:
36720
diff
changeset
|
119 @kindex C-d |
25829 | 120 The most basic delete commands are @kbd{C-d} (@code{delete-char}) and |
121 @key{DEL} (@code{delete-backward-char}). @kbd{C-d} deletes the | |
122 character after point, the one the cursor is ``on top of.'' This | |
123 doesn't move point. @key{DEL} deletes the character before the cursor, | |
124 and moves point back. You can delete newlines like any other characters | |
125 in the buffer; deleting a newline joins two lines. Actually, @kbd{C-d} | |
126 and @key{DEL} aren't always delete commands; when given arguments, they | |
127 kill instead, since they can erase more than one character this way. | |
128 | |
36725
640fb21a2098
Clarify the text for BACKSPACE vs DELETE.
Richard M. Stallman <rms@gnu.org>
parents:
36720
diff
changeset
|
129 @kindex BACKSPACE |
640fb21a2098
Clarify the text for BACKSPACE vs DELETE.
Richard M. Stallman <rms@gnu.org>
parents:
36720
diff
changeset
|
130 @kindex BS |
640fb21a2098
Clarify the text for BACKSPACE vs DELETE.
Richard M. Stallman <rms@gnu.org>
parents:
36720
diff
changeset
|
131 @kindex DELETE |
640fb21a2098
Clarify the text for BACKSPACE vs DELETE.
Richard M. Stallman <rms@gnu.org>
parents:
36720
diff
changeset
|
132 Every keyboard has a large key, labeled @key{DEL}, @key{BACKSPACE}, |
640fb21a2098
Clarify the text for BACKSPACE vs DELETE.
Richard M. Stallman <rms@gnu.org>
parents:
36720
diff
changeset
|
133 @key{BS} or @key{DELETE}, which is a short distance above the |
640fb21a2098
Clarify the text for BACKSPACE vs DELETE.
Richard M. Stallman <rms@gnu.org>
parents:
36720
diff
changeset
|
134 @key{RET} or @key{ENTER} key and is normally used for erasing what you |
36789
f71fe44b07ea
Simplify the discussion of DEL. Refer to `DEL Gets Help' node
Richard M. Stallman <rms@gnu.org>
parents:
36725
diff
changeset
|
135 have typed. Regardless of the actual name on the key, in Emacs it is |
36725
640fb21a2098
Clarify the text for BACKSPACE vs DELETE.
Richard M. Stallman <rms@gnu.org>
parents:
36720
diff
changeset
|
136 equivalent to @key{DEL}---or it should be. |
640fb21a2098
Clarify the text for BACKSPACE vs DELETE.
Richard M. Stallman <rms@gnu.org>
parents:
36720
diff
changeset
|
137 |
37357
ad563f9185fb
Minor clarifications of BACKSPACE vs DEL.
Richard M. Stallman <rms@gnu.org>
parents:
37124
diff
changeset
|
138 Many keyboards (including standard PC keyboards) have a |
ad563f9185fb
Minor clarifications of BACKSPACE vs DEL.
Richard M. Stallman <rms@gnu.org>
parents:
37124
diff
changeset
|
139 @key{BACKSPACE} key a short ways above @key{RET} or @key{ENTER}, and a |
ad563f9185fb
Minor clarifications of BACKSPACE vs DEL.
Richard M. Stallman <rms@gnu.org>
parents:
37124
diff
changeset
|
140 @key{DELETE} key elsewhere. In that case, the @key{BACKSPACE} key is |
ad563f9185fb
Minor clarifications of BACKSPACE vs DEL.
Richard M. Stallman <rms@gnu.org>
parents:
37124
diff
changeset
|
141 @key{DEL}, and the @key{DELETE} key is equivalent to @kbd{C-d}---or it |
ad563f9185fb
Minor clarifications of BACKSPACE vs DEL.
Richard M. Stallman <rms@gnu.org>
parents:
37124
diff
changeset
|
142 should be. |
36725
640fb21a2098
Clarify the text for BACKSPACE vs DELETE.
Richard M. Stallman <rms@gnu.org>
parents:
36720
diff
changeset
|
143 |
640fb21a2098
Clarify the text for BACKSPACE vs DELETE.
Richard M. Stallman <rms@gnu.org>
parents:
36720
diff
changeset
|
144 Why do we say ``or it should be''? When Emacs starts up using a |
36789
f71fe44b07ea
Simplify the discussion of DEL. Refer to `DEL Gets Help' node
Richard M. Stallman <rms@gnu.org>
parents:
36725
diff
changeset
|
145 window system, it determines automatically which key or keys should be |
38461
23f63206a867
Proofreading fixes from Chris Green <chris_e_green@yahoo.com>.
Eli Zaretskii <eliz@gnu.org>
parents:
38415
diff
changeset
|
146 equivalent to @key{DEL}. As a result, @key{BACKSPACE} and/or @key{DELETE} |
36789
f71fe44b07ea
Simplify the discussion of DEL. Refer to `DEL Gets Help' node
Richard M. Stallman <rms@gnu.org>
parents:
36725
diff
changeset
|
147 keys normally do the right things. But in some unusual cases Emacs |
f71fe44b07ea
Simplify the discussion of DEL. Refer to `DEL Gets Help' node
Richard M. Stallman <rms@gnu.org>
parents:
36725
diff
changeset
|
148 gets the wrong information from the system. If these keys don't do |
37357
ad563f9185fb
Minor clarifications of BACKSPACE vs DEL.
Richard M. Stallman <rms@gnu.org>
parents:
37124
diff
changeset
|
149 what they ought to do, you need to tell Emacs which key to use for |
38767
5889c45fd6ad
Change the name of the "DEL Doesn't Delete" node to "DEL Does Not Delete",
Eli Zaretskii <eliz@gnu.org>
parents:
38745
diff
changeset
|
150 @key{DEL}. @xref{DEL Does Not Delete}, for how to do this. |
36725
640fb21a2098
Clarify the text for BACKSPACE vs DELETE.
Richard M. Stallman <rms@gnu.org>
parents:
36720
diff
changeset
|
151 |
36789
f71fe44b07ea
Simplify the discussion of DEL. Refer to `DEL Gets Help' node
Richard M. Stallman <rms@gnu.org>
parents:
36725
diff
changeset
|
152 @findex normal-erase-is-backspace-mode |
37357
ad563f9185fb
Minor clarifications of BACKSPACE vs DEL.
Richard M. Stallman <rms@gnu.org>
parents:
37124
diff
changeset
|
153 On most text-only terminals, Emacs cannot tell which keys the |
ad563f9185fb
Minor clarifications of BACKSPACE vs DEL.
Richard M. Stallman <rms@gnu.org>
parents:
37124
diff
changeset
|
154 keyboard really has, so it follows a uniform plan which may or may not |
ad563f9185fb
Minor clarifications of BACKSPACE vs DEL.
Richard M. Stallman <rms@gnu.org>
parents:
37124
diff
changeset
|
155 fit your keyboard. The uniform plan is that the ASCII @key{DEL} |
ad563f9185fb
Minor clarifications of BACKSPACE vs DEL.
Richard M. Stallman <rms@gnu.org>
parents:
37124
diff
changeset
|
156 character deletes, and the ASCII @key{BS} (backspace) character asks |
ad563f9185fb
Minor clarifications of BACKSPACE vs DEL.
Richard M. Stallman <rms@gnu.org>
parents:
37124
diff
changeset
|
157 for help (it is the same as @kbd{C-h}). If this is not right for your |
38745 | 158 keyboard, such as if you find that the key which ought to delete backwards |
38767
5889c45fd6ad
Change the name of the "DEL Doesn't Delete" node to "DEL Does Not Delete",
Eli Zaretskii <eliz@gnu.org>
parents:
38745
diff
changeset
|
159 enters Help instead, see @ref{DEL Does Not Delete}. |
36657
0ee33338bb24
(Deletion): Mention the Delete vs Backspace keys. Document
Eli Zaretskii <eliz@gnu.org>
parents:
36162
diff
changeset
|
160 |
25829 | 161 @kindex M-\ |
162 @findex delete-horizontal-space | |
163 @kindex M-SPC | |
164 @findex just-one-space | |
165 The other delete commands are those which delete only whitespace | |
166 characters: spaces, tabs and newlines. @kbd{M-\} | |
167 (@code{delete-horizontal-space}) deletes all the spaces and tab | |
168 characters before and after point. @kbd{M-@key{SPC}} | |
169 (@code{just-one-space}) does likewise but leaves a single space after | |
170 point, regardless of the number of spaces that existed previously (even | |
38461
23f63206a867
Proofreading fixes from Chris Green <chris_e_green@yahoo.com>.
Eli Zaretskii <eliz@gnu.org>
parents:
38415
diff
changeset
|
171 if there were none before). |
25829 | 172 |
173 @kbd{C-x C-o} (@code{delete-blank-lines}) deletes all blank lines | |
174 after the current line. If the current line is blank, it deletes all | |
175 blank lines preceding the current line as well (leaving one blank line, | |
176 the current line). | |
177 | |
178 @kbd{M-^} (@code{delete-indentation}) joins the current line and the | |
179 previous line, by deleting a newline and all surrounding spaces, usually | |
180 leaving a single space. @xref{Indentation,M-^}. | |
181 | |
182 @node Killing by Lines | |
183 @subsection Killing by Lines | |
184 | |
185 @table @kbd | |
186 @item C-k | |
187 Kill rest of line or one or more lines (@code{kill-line}). | |
188 @end table | |
189 | |
190 @kindex C-k | |
191 @findex kill-line | |
192 The simplest kill command is @kbd{C-k}. If given at the beginning of | |
193 a line, it kills all the text on the line, leaving it blank. When used | |
194 on a blank line, it kills the whole line including its newline. To kill | |
195 an entire non-blank line, go to the beginning and type @kbd{C-k} twice. | |
196 | |
197 More generally, @kbd{C-k} kills from point up to the end of the line, | |
198 unless it is at the end of a line. In that case it kills the newline | |
199 following point, thus merging the next line into the current one. | |
200 Spaces and tabs that you can't see at the end of the line are ignored | |
201 when deciding which case applies, so if point appears to be at the end | |
202 of the line, you can be sure @kbd{C-k} will kill the newline. | |
203 | |
204 When @kbd{C-k} is given a positive argument, it kills that many lines | |
205 and the newlines that follow them (however, text on the current line | |
38461
23f63206a867
Proofreading fixes from Chris Green <chris_e_green@yahoo.com>.
Eli Zaretskii <eliz@gnu.org>
parents:
38415
diff
changeset
|
206 before point is not killed). With a negative argument @minus{}@var{n}, it |
25829 | 207 kills @var{n} lines preceding the current line (together with the text |
208 on the current line before point). Thus, @kbd{C-u - 2 C-k} at the front | |
209 of a line kills the two previous lines. | |
210 | |
211 @kbd{C-k} with an argument of zero kills the text before point on the | |
212 current line. | |
213 | |
214 @vindex kill-whole-line | |
215 If the variable @code{kill-whole-line} is non-@code{nil}, @kbd{C-k} at | |
216 the very beginning of a line kills the entire line including the | |
217 following newline. This variable is normally @code{nil}. | |
218 | |
219 @node Other Kill Commands | |
220 @subsection Other Kill Commands | |
221 @findex kill-region | |
222 @kindex C-w | |
223 | |
224 @table @kbd | |
225 @item C-w | |
226 Kill region (from point to the mark) (@code{kill-region}). | |
227 @item M-d | |
228 Kill word (@code{kill-word}). @xref{Words}. | |
229 @item M-@key{DEL} | |
230 Kill word backwards (@code{backward-kill-word}). | |
231 @item C-x @key{DEL} | |
232 Kill back to beginning of sentence (@code{backward-kill-sentence}). | |
233 @xref{Sentences}. | |
234 @item M-k | |
235 Kill to end of sentence (@code{kill-sentence}). | |
236 @item C-M-k | |
38206
b13ab91e3dd8
Say "expression" instead of "sexp". Update xref, Sexps -> Expressions.
Richard M. Stallman <rms@gnu.org>
parents:
37887
diff
changeset
|
237 Kill the following balanced expression (@code{kill-sexp}). @xref{Expressions}. |
25829 | 238 @item M-z @var{char} |
239 Kill through the next occurrence of @var{char} (@code{zap-to-char}). | |
240 @end table | |
241 | |
242 A kill command which is very general is @kbd{C-w} | |
243 (@code{kill-region}), which kills everything between point and the | |
244 mark. With this command, you can kill any contiguous sequence of | |
245 characters, if you first set the region around them. | |
246 | |
247 @kindex M-z | |
248 @findex zap-to-char | |
249 A convenient way of killing is combined with searching: @kbd{M-z} | |
250 (@code{zap-to-char}) reads a character and kills from point up to (and | |
251 including) the next occurrence of that character in the buffer. A | |
252 numeric argument acts as a repeat count. A negative argument means to | |
253 search backward and kill text before point. | |
254 | |
38206
b13ab91e3dd8
Say "expression" instead of "sexp". Update xref, Sexps -> Expressions.
Richard M. Stallman <rms@gnu.org>
parents:
37887
diff
changeset
|
255 Other syntactic units can be killed: words, with @kbd{M-@key{DEL}} |
b13ab91e3dd8
Say "expression" instead of "sexp". Update xref, Sexps -> Expressions.
Richard M. Stallman <rms@gnu.org>
parents:
37887
diff
changeset
|
256 and @kbd{M-d} (@pxref{Words}); balanced expressions, with @kbd{C-M-k} |
b13ab91e3dd8
Say "expression" instead of "sexp". Update xref, Sexps -> Expressions.
Richard M. Stallman <rms@gnu.org>
parents:
37887
diff
changeset
|
257 (@pxref{Expressions}); and sentences, with @kbd{C-x @key{DEL}} and |
b13ab91e3dd8
Say "expression" instead of "sexp". Update xref, Sexps -> Expressions.
Richard M. Stallman <rms@gnu.org>
parents:
37887
diff
changeset
|
258 @kbd{M-k} (@pxref{Sentences}).@refill |
25829 | 259 |
260 You can use kill commands in read-only buffers. They don't actually | |
261 change the buffer, and they beep to warn you of that, but they do copy | |
262 the text you tried to kill into the kill ring, so you can yank it into | |
263 other buffers. Most of the kill commands move point across the text | |
264 they copy in this way, so that successive kill commands build up a | |
265 single kill ring entry as usual. | |
266 | |
267 @node Yanking, Accumulating Text, Killing, Top | |
268 @section Yanking | |
269 @cindex moving text | |
270 @cindex copying text | |
271 @cindex kill ring | |
272 @cindex yanking | |
273 @cindex pasting | |
274 | |
275 @dfn{Yanking} means reinserting text previously killed. This is what | |
276 some systems call ``pasting.'' The usual way to move or copy text is to | |
277 kill it and then yank it elsewhere one or more times. | |
278 | |
279 @table @kbd | |
280 @item C-y | |
281 Yank last killed text (@code{yank}). | |
282 @item M-y | |
283 Replace text just yanked with an earlier batch of killed text | |
284 (@code{yank-pop}). | |
285 @item M-w | |
286 Save region as last killed text without actually killing it | |
287 (@code{kill-ring-save}). | |
288 @item C-M-w | |
289 Append next kill to last batch of killed text (@code{append-next-kill}). | |
290 @end table | |
291 | |
46037
7af49c69e77b
Mention that kill commands communicate with other apps,
Richard M. Stallman <rms@gnu.org>
parents:
39264
diff
changeset
|
292 On window systems, if there is a current selection in some other |
7af49c69e77b
Mention that kill commands communicate with other apps,
Richard M. Stallman <rms@gnu.org>
parents:
39264
diff
changeset
|
293 application, and you selected it more recently than you killed any |
7af49c69e77b
Mention that kill commands communicate with other apps,
Richard M. Stallman <rms@gnu.org>
parents:
39264
diff
changeset
|
294 text in Emacs, @kbd{C-y} copies the selection instead of text |
7af49c69e77b
Mention that kill commands communicate with other apps,
Richard M. Stallman <rms@gnu.org>
parents:
39264
diff
changeset
|
295 killed within Emacs. |
7af49c69e77b
Mention that kill commands communicate with other apps,
Richard M. Stallman <rms@gnu.org>
parents:
39264
diff
changeset
|
296 |
25829 | 297 @menu |
298 * Kill Ring:: Where killed text is stored. Basic yanking. | |
299 * Appending Kills:: Several kills in a row all yank together. | |
300 * Earlier Kills:: Yanking something killed some time ago. | |
301 @end menu | |
302 | |
303 @node Kill Ring | |
304 @subsection The Kill Ring | |
305 | |
306 All killed text is recorded in the @dfn{kill ring}, a list of blocks of | |
307 text that have been killed. There is only one kill ring, shared by all | |
308 buffers, so you can kill text in one buffer and yank it in another buffer. | |
309 This is the usual way to move text from one file to another. | |
310 (@xref{Accumulating Text}, for some other ways.) | |
311 | |
312 @kindex C-y | |
313 @findex yank | |
314 The command @kbd{C-y} (@code{yank}) reinserts the text of the most recent | |
315 kill. It leaves the cursor at the end of the text. It sets the mark at | |
316 the beginning of the text. @xref{Mark}. | |
317 | |
318 @kbd{C-u C-y} leaves the cursor in front of the text, and sets the | |
319 mark after it. This happens only if the argument is specified with just | |
320 a @kbd{C-u}, precisely. Any other sort of argument, including @kbd{C-u} | |
321 and digits, specifies an earlier kill to yank (@pxref{Earlier Kills}). | |
322 | |
46241
0ed85ef15043
Describe yank-excluded-properties.
Richard M. Stallman <rms@gnu.org>
parents:
46037
diff
changeset
|
323 @cindex yanking and text properties |
0ed85ef15043
Describe yank-excluded-properties.
Richard M. Stallman <rms@gnu.org>
parents:
46037
diff
changeset
|
324 @vindex yank-excluded-properties |
0ed85ef15043
Describe yank-excluded-properties.
Richard M. Stallman <rms@gnu.org>
parents:
46037
diff
changeset
|
325 The yank commands discard certain text properties from the text that |
47200 | 326 is yanked, those that might lead to annoying results. For instance, |
46241
0ed85ef15043
Describe yank-excluded-properties.
Richard M. Stallman <rms@gnu.org>
parents:
46037
diff
changeset
|
327 they discard text properties that respond to the mouse or specify key |
0ed85ef15043
Describe yank-excluded-properties.
Richard M. Stallman <rms@gnu.org>
parents:
46037
diff
changeset
|
328 bindings. The variable @code{yank-excluded-properties} specifies the |
0ed85ef15043
Describe yank-excluded-properties.
Richard M. Stallman <rms@gnu.org>
parents:
46037
diff
changeset
|
329 properties to discard. Yanking of register contents and rectangles |
0ed85ef15043
Describe yank-excluded-properties.
Richard M. Stallman <rms@gnu.org>
parents:
46037
diff
changeset
|
330 also discard these properties. |
0ed85ef15043
Describe yank-excluded-properties.
Richard M. Stallman <rms@gnu.org>
parents:
46037
diff
changeset
|
331 |
25829 | 332 @kindex M-w |
333 @findex kill-ring-save | |
334 To copy a block of text, you can use @kbd{M-w} | |
335 (@code{kill-ring-save}), which copies the region into the kill ring | |
336 without removing it from the buffer. This is approximately equivalent | |
337 to @kbd{C-w} followed by @kbd{C-x u}, except that @kbd{M-w} does not | |
338 alter the undo history and does not temporarily change the screen. | |
339 | |
340 @node Appending Kills | |
341 @subsection Appending Kills | |
342 | |
343 @cindex appending kills in the ring | |
344 @cindex television | |
345 Normally, each kill command pushes a new entry onto the kill ring. | |
346 However, two or more kill commands in a row combine their text into a | |
347 single entry, so that a single @kbd{C-y} yanks all the text as a unit, | |
348 just as it was before it was killed. | |
349 | |
350 Thus, if you want to yank text as a unit, you need not kill all of it | |
351 with one command; you can keep killing line after line, or word after | |
352 word, until you have killed it all, and you can still get it all back at | |
353 once. | |
354 | |
355 Commands that kill forward from point add onto the end of the previous | |
356 killed text. Commands that kill backward from point add text onto the | |
357 beginning. This way, any sequence of mixed forward and backward kill | |
358 commands puts all the killed text into one entry without rearrangement. | |
359 Numeric arguments do not break the sequence of appending kills. For | |
360 example, suppose the buffer contains this text: | |
361 | |
362 @example | |
363 This is a line @point{}of sample text. | |
364 @end example | |
365 | |
366 @noindent | |
367 with point shown by @point{}. If you type @kbd{M-d M-@key{DEL} M-d | |
368 M-@key{DEL}}, killing alternately forward and backward, you end up with | |
369 @samp{a line of sample} as one entry in the kill ring, and @samp{This | |
38461
23f63206a867
Proofreading fixes from Chris Green <chris_e_green@yahoo.com>.
Eli Zaretskii <eliz@gnu.org>
parents:
38415
diff
changeset
|
370 is@ @ text.} in the buffer. (Note the double space between @samp{is} |
23f63206a867
Proofreading fixes from Chris Green <chris_e_green@yahoo.com>.
Eli Zaretskii <eliz@gnu.org>
parents:
38415
diff
changeset
|
371 and @samp{text}, which you can clean up with @kbd{M-@key{SPC}} or |
23f63206a867
Proofreading fixes from Chris Green <chris_e_green@yahoo.com>.
Eli Zaretskii <eliz@gnu.org>
parents:
38415
diff
changeset
|
372 @kbd{M-q}.) |
25829 | 373 |
374 Another way to kill the same text is to move back two words with | |
375 @kbd{M-b M-b}, then kill all four words forward with @kbd{C-u M-d}. | |
376 This produces exactly the same results in the buffer and in the kill | |
377 ring. @kbd{M-f M-f C-u M-@key{DEL}} kills the same text, all going | |
378 backward; once again, the result is the same. The text in the kill ring | |
379 entry always has the same order that it had in the buffer before you | |
380 killed it. | |
381 | |
382 @kindex C-M-w | |
383 @findex append-next-kill | |
384 If a kill command is separated from the last kill command by other | |
385 commands (not just numeric arguments), it starts a new entry on the kill | |
386 ring. But you can force it to append by first typing the command | |
387 @kbd{C-M-w} (@code{append-next-kill}) right before it. The @kbd{C-M-w} | |
388 tells the following command, if it is a kill command, to append the text | |
389 it kills to the last killed text, instead of starting a new entry. With | |
390 @kbd{C-M-w}, you can kill several separated pieces of text and | |
391 accumulate them to be yanked back in one place.@refill | |
392 | |
393 A kill command following @kbd{M-w} does not append to the text that | |
394 @kbd{M-w} copied into the kill ring. | |
395 | |
396 @node Earlier Kills | |
397 @subsection Yanking Earlier Kills | |
398 | |
399 @cindex yanking previous kills | |
400 @kindex M-y | |
401 @findex yank-pop | |
402 To recover killed text that is no longer the most recent kill, use the | |
403 @kbd{M-y} command (@code{yank-pop}). It takes the text previously | |
404 yanked and replaces it with the text from an earlier kill. So, to | |
405 recover the text of the next-to-the-last kill, first use @kbd{C-y} to | |
406 yank the last kill, and then use @kbd{M-y} to replace it with the | |
407 previous kill. @kbd{M-y} is allowed only after a @kbd{C-y} or another | |
408 @kbd{M-y}. | |
409 | |
410 You can understand @kbd{M-y} in terms of a ``last yank'' pointer which | |
411 points at an entry in the kill ring. Each time you kill, the ``last | |
412 yank'' pointer moves to the newly made entry at the front of the ring. | |
413 @kbd{C-y} yanks the entry which the ``last yank'' pointer points to. | |
414 @kbd{M-y} moves the ``last yank'' pointer to a different entry, and the | |
415 text in the buffer changes to match. Enough @kbd{M-y} commands can move | |
416 the pointer to any entry in the ring, so you can get any entry into the | |
417 buffer. Eventually the pointer reaches the end of the ring; the next | |
38461
23f63206a867
Proofreading fixes from Chris Green <chris_e_green@yahoo.com>.
Eli Zaretskii <eliz@gnu.org>
parents:
38415
diff
changeset
|
418 @kbd{M-y} loops back around to the first entry again. |
25829 | 419 |
420 @kbd{M-y} moves the ``last yank'' pointer around the ring, but it does | |
421 not change the order of the entries in the ring, which always runs from | |
422 the most recent kill at the front to the oldest one still remembered. | |
423 | |
424 @kbd{M-y} can take a numeric argument, which tells it how many entries | |
425 to advance the ``last yank'' pointer by. A negative argument moves the | |
426 pointer toward the front of the ring; from the front of the ring, it | |
427 moves ``around'' to the last entry and continues forward from there. | |
428 | |
429 Once the text you are looking for is brought into the buffer, you can | |
430 stop doing @kbd{M-y} commands and it will stay there. It's just a copy | |
431 of the kill ring entry, so editing it in the buffer does not change | |
432 what's in the ring. As long as no new killing is done, the ``last | |
433 yank'' pointer remains at the same place in the kill ring, so repeating | |
434 @kbd{C-y} will yank another copy of the same previous kill. | |
435 | |
38745 | 436 If you know how many @kbd{M-y} commands it would take to find the |
437 text you want, you can yank that text in one step using @kbd{C-y} with | |
438 a numeric argument. @kbd{C-y} with an argument restores the text from | |
439 the specified kill ring entry, counting back from the most recent as | |
440 1. Thus, @kbd{C-u 2 C-y} gets the next-to-the-last block of killed | |
441 text---it is equivalent to @kbd{C-y M-y}. @kbd{C-y} with a numeric | |
442 argument starts counting from the ``last yank'' pointer, and sets the | |
443 ``last yank'' pointer to the entry that it yanks. | |
25829 | 444 |
445 @vindex kill-ring-max | |
446 The length of the kill ring is controlled by the variable | |
447 @code{kill-ring-max}; no more than that many blocks of killed text are | |
448 saved. | |
449 | |
450 @vindex kill-ring | |
451 The actual contents of the kill ring are stored in a variable named | |
452 @code{kill-ring}; you can view the entire contents of the kill ring with | |
453 the command @kbd{C-h v kill-ring}. | |
454 | |
455 @node Accumulating Text, Rectangles, Yanking, Top | |
456 @section Accumulating Text | |
457 @findex append-to-buffer | |
458 @findex prepend-to-buffer | |
459 @findex copy-to-buffer | |
460 @findex append-to-file | |
461 | |
462 @cindex accumulating scattered text | |
463 Usually we copy or move text by killing it and yanking it, but there | |
464 are other methods convenient for copying one block of text in many | |
465 places, or for copying many scattered blocks of text into one place. To | |
466 copy one block to many places, store it in a register | |
467 (@pxref{Registers}). Here we describe the commands to accumulate | |
468 scattered pieces of text into a buffer or into a file. | |
469 | |
470 @table @kbd | |
471 @item M-x append-to-buffer | |
38745 | 472 Append region to the contents of a specified buffer. |
25829 | 473 @item M-x prepend-to-buffer |
38745 | 474 Prepend region to the contents of a specified buffer. |
25829 | 475 @item M-x copy-to-buffer |
38461
23f63206a867
Proofreading fixes from Chris Green <chris_e_green@yahoo.com>.
Eli Zaretskii <eliz@gnu.org>
parents:
38415
diff
changeset
|
476 Copy region into a specified buffer, deleting that buffer's old contents. |
25829 | 477 @item M-x insert-buffer |
38745 | 478 Insert the contents of a specified buffer into current buffer at point. |
25829 | 479 @item M-x append-to-file |
38745 | 480 Append region to the contents of a specified file, at the end. |
25829 | 481 @end table |
482 | |
483 To accumulate text into a buffer, use @kbd{M-x append-to-buffer}. | |
484 This reads a buffer name, then inserts a copy of the region into the | |
485 buffer specified. If you specify a nonexistent buffer, | |
486 @code{append-to-buffer} creates the buffer. The text is inserted | |
487 wherever point is in that buffer. If you have been using the buffer for | |
488 editing, the copied text goes into the middle of the text of the buffer, | |
38461
23f63206a867
Proofreading fixes from Chris Green <chris_e_green@yahoo.com>.
Eli Zaretskii <eliz@gnu.org>
parents:
38415
diff
changeset
|
489 starting from wherever point happens to be at that moment. |
25829 | 490 |
491 Point in that buffer is left at the end of the copied text, so | |
492 successive uses of @code{append-to-buffer} accumulate the text in the | |
493 specified buffer in the same order as they were copied. Strictly | |
494 speaking, @code{append-to-buffer} does not always append to the text | |
495 already in the buffer---it appends only if point in that buffer is at the end. | |
496 However, if @code{append-to-buffer} is the only command you use to alter | |
497 a buffer, then point is always at the end. | |
498 | |
499 @kbd{M-x prepend-to-buffer} is just like @code{append-to-buffer} | |
500 except that point in the other buffer is left before the copied text, so | |
501 successive prependings add text in reverse order. @kbd{M-x | |
38461
23f63206a867
Proofreading fixes from Chris Green <chris_e_green@yahoo.com>.
Eli Zaretskii <eliz@gnu.org>
parents:
38415
diff
changeset
|
502 copy-to-buffer} is similar, except that any existing text in the other |
25829 | 503 buffer is deleted, so the buffer is left containing just the text newly |
504 copied into it. | |
505 | |
38415
80b960104fbd
Minor clarification about insert-buffer.
Richard M. Stallman <rms@gnu.org>
parents:
38206
diff
changeset
|
506 To retrieve the accumulated text from another buffer, use the |
80b960104fbd
Minor clarification about insert-buffer.
Richard M. Stallman <rms@gnu.org>
parents:
38206
diff
changeset
|
507 command @kbd{M-x insert-buffer}; this too takes @var{buffername} as an |
80b960104fbd
Minor clarification about insert-buffer.
Richard M. Stallman <rms@gnu.org>
parents:
38206
diff
changeset
|
508 argument. It inserts a copy of the whole text in buffer |
38745 | 509 @var{buffername} into the current buffer at point, and sets the mark |
38415
80b960104fbd
Minor clarification about insert-buffer.
Richard M. Stallman <rms@gnu.org>
parents:
38206
diff
changeset
|
510 after the inserted text. Alternatively, you can select the other |
80b960104fbd
Minor clarification about insert-buffer.
Richard M. Stallman <rms@gnu.org>
parents:
38206
diff
changeset
|
511 buffer for editing, then copy text from it by killing. |
80b960104fbd
Minor clarification about insert-buffer.
Richard M. Stallman <rms@gnu.org>
parents:
38206
diff
changeset
|
512 @xref{Buffers}, for background information on buffers. |
25829 | 513 |
514 Instead of accumulating text within Emacs, in a buffer, you can append | |
515 text directly into a file with @kbd{M-x append-to-file}, which takes | |
516 @var{filename} as an argument. It adds the text of the region to the end | |
517 of the specified file. The file is changed immediately on disk. | |
518 | |
519 You should use @code{append-to-file} only with files that are | |
520 @emph{not} being visited in Emacs. Using it on a file that you are | |
521 editing in Emacs would change the file behind Emacs's back, which | |
522 can lead to losing some of your editing. | |
523 | |
524 @node Rectangles, Registers, Accumulating Text, Top | |
525 @section Rectangles | |
526 @cindex rectangle | |
527 @cindex columns (and rectangles) | |
528 @cindex killing rectangular areas of text | |
529 | |
530 The rectangle commands operate on rectangular areas of the text: all | |
531 the characters between a certain pair of columns, in a certain range of | |
532 lines. Commands are provided to kill rectangles, yank killed rectangles, | |
533 clear them out, fill them with blanks or text, or delete them. Rectangle | |
534 commands are useful with text in multicolumn formats, and for changing | |
535 text into or out of such formats. | |
536 | |
537 When you must specify a rectangle for a command to work on, you do it | |
538 by putting the mark at one corner and point at the opposite corner. The | |
539 rectangle thus specified is called the @dfn{region-rectangle} because | |
38461
23f63206a867
Proofreading fixes from Chris Green <chris_e_green@yahoo.com>.
Eli Zaretskii <eliz@gnu.org>
parents:
38415
diff
changeset
|
540 you control it in much the same way as the region is controlled. But |
25829 | 541 remember that a given combination of point and mark values can be |
542 interpreted either as a region or as a rectangle, depending on the | |
543 command that uses them. | |
544 | |
545 If point and the mark are in the same column, the rectangle they | |
546 delimit is empty. If they are in the same line, the rectangle is one | |
547 line high. This asymmetry between lines and columns comes about | |
548 because point (and likewise the mark) is between two columns, but within | |
549 a line. | |
550 | |
551 @table @kbd | |
552 @item C-x r k | |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49330
diff
changeset
|
553 Kill the text of the region-rectangle, saving its contents as the |
25829 | 554 ``last killed rectangle'' (@code{kill-rectangle}). |
555 @item C-x r d | |
556 Delete the text of the region-rectangle (@code{delete-rectangle}). | |
557 @item C-x r y | |
558 Yank the last killed rectangle with its upper left corner at point | |
559 (@code{yank-rectangle}). | |
560 @item C-x r o | |
561 Insert blank space to fill the space of the region-rectangle | |
562 (@code{open-rectangle}). This pushes the previous contents of the | |
563 region-rectangle rightward. | |
49330
99f721b3f74e
(Rectangles): Document C-x c r.
Richard M. Stallman <rms@gnu.org>
parents:
47200
diff
changeset
|
564 @item C-x r c |
99f721b3f74e
(Rectangles): Document C-x c r.
Richard M. Stallman <rms@gnu.org>
parents:
47200
diff
changeset
|
565 Clear the region-rectangle by replacing its contents with spaces |
99f721b3f74e
(Rectangles): Document C-x c r.
Richard M. Stallman <rms@gnu.org>
parents:
47200
diff
changeset
|
566 (@code{clear-rectangle}). |
25829 | 567 @item M-x delete-whitespace-rectangle |
568 Delete whitespace in each of the lines on the specified rectangle, | |
569 starting from the left edge column of the rectangle. | |
27749 | 570 @item C-x r t @var{string} @key{RET} |
37447
0bc52782144f
Adapt to the change of string-rectangle back to 20.x behaviour.
Gerd Moellmann <gerd@gnu.org>
parents:
37357
diff
changeset
|
571 Replace rectangle contents with @var{string} on each line. |
25829 | 572 (@code{string-rectangle}). |
37447
0bc52782144f
Adapt to the change of string-rectangle back to 20.x behaviour.
Gerd Moellmann <gerd@gnu.org>
parents:
37357
diff
changeset
|
573 @item M-x string-insert-rectangle @key{RET} @var{string} @key{RET} |
37572
956f7346b171
(Rectangles): Remove redundant and erroneous name of replace-rectangle
Eli Zaretskii <eliz@gnu.org>
parents:
37486
diff
changeset
|
574 Insert @var{string} on each line of the rectangle. |
25829 | 575 @end table |
576 | |
38461
23f63206a867
Proofreading fixes from Chris Green <chris_e_green@yahoo.com>.
Eli Zaretskii <eliz@gnu.org>
parents:
38415
diff
changeset
|
577 The rectangle operations fall into two classes: commands for |
23f63206a867
Proofreading fixes from Chris Green <chris_e_green@yahoo.com>.
Eli Zaretskii <eliz@gnu.org>
parents:
38415
diff
changeset
|
578 deleting and inserting rectangles, and commands for blank rectangles. |
25829 | 579 |
580 @kindex C-x r k | |
581 @kindex C-x r d | |
582 @findex kill-rectangle | |
583 @findex delete-rectangle | |
584 There are two ways to get rid of the text in a rectangle: you can | |
585 discard the text (delete it) or save it as the ``last killed'' | |
586 rectangle. The commands for these two ways are @kbd{C-x r d} | |
587 (@code{delete-rectangle}) and @kbd{C-x r k} (@code{kill-rectangle}). In | |
588 either case, the portion of each line that falls inside the rectangle's | |
38461
23f63206a867
Proofreading fixes from Chris Green <chris_e_green@yahoo.com>.
Eli Zaretskii <eliz@gnu.org>
parents:
38415
diff
changeset
|
589 boundaries is deleted, causing any following text on the line to |
25829 | 590 move left into the gap. |
591 | |
592 Note that ``killing'' a rectangle is not killing in the usual sense; the | |
593 rectangle is not stored in the kill ring, but in a special place that | |
594 can only record the most recent rectangle killed. This is because yanking | |
595 a rectangle is so different from yanking linear text that different yank | |
596 commands have to be used and yank-popping is hard to make sense of. | |
597 | |
598 @kindex C-x r y | |
599 @findex yank-rectangle | |
600 To yank the last killed rectangle, type @kbd{C-x r y} | |
601 (@code{yank-rectangle}). Yanking a rectangle is the opposite of killing | |
602 one. Point specifies where to put the rectangle's upper left corner. | |
603 The rectangle's first line is inserted there, the rectangle's second | |
38481 | 604 line is inserted at the same horizontal position, but one line |
605 vertically down, and so on. The number of lines affected is determined | |
606 by the height of the saved rectangle. | |
25829 | 607 |
608 You can convert single-column lists into double-column lists using | |
609 rectangle killing and yanking; kill the second half of the list as a | |
610 rectangle and then yank it beside the first line of the list. | |
611 @xref{Two-Column}, for another way to edit multi-column text. | |
612 | |
613 You can also copy rectangles into and out of registers with @kbd{C-x r | |
614 r @var{r}} and @kbd{C-x r i @var{r}}. @xref{RegRect,,Rectangle | |
615 Registers}. | |
616 | |
617 @kindex C-x r o | |
618 @findex open-rectangle | |
49330
99f721b3f74e
(Rectangles): Document C-x c r.
Richard M. Stallman <rms@gnu.org>
parents:
47200
diff
changeset
|
619 @kindex C-x r c |
25829 | 620 @findex clear-rectangle |
621 There are two commands you can use for making blank rectangles: | |
49330
99f721b3f74e
(Rectangles): Document C-x c r.
Richard M. Stallman <rms@gnu.org>
parents:
47200
diff
changeset
|
622 @kbd{C-x r c} (@code{clear-rectangle}) which blanks out existing text, |
99f721b3f74e
(Rectangles): Document C-x c r.
Richard M. Stallman <rms@gnu.org>
parents:
47200
diff
changeset
|
623 and @kbd{C-x r o} (@code{open-rectangle}) which inserts a blank |
99f721b3f74e
(Rectangles): Document C-x c r.
Richard M. Stallman <rms@gnu.org>
parents:
47200
diff
changeset
|
624 rectangle. Clearing a rectangle is equivalent to deleting it and then |
99f721b3f74e
(Rectangles): Document C-x c r.
Richard M. Stallman <rms@gnu.org>
parents:
47200
diff
changeset
|
625 inserting a blank rectangle of the same size. |
25829 | 626 |
627 @findex delete-whitespace-rectangle | |
628 The command @kbd{M-x delete-whitespace-rectangle} deletes horizontal | |
629 whitespace starting from a particular column. This applies to each of | |
630 the lines in the rectangle, and the column is specified by the left | |
631 edge of the rectangle. The right edge of the rectangle does not make | |
632 any difference to this command. | |
633 | |
634 @kindex C-x r t | |
635 @findex string-rectangle | |
37585
d44c87635f6e
(Rectangles): Remove the description of replace-rectangle.
Eli Zaretskii <eliz@gnu.org>
parents:
37572
diff
changeset
|
636 The command @kbd{C-x r t} (@code{string-rectangle}) replaces the |
37447
0bc52782144f
Adapt to the change of string-rectangle back to 20.x behaviour.
Gerd Moellmann <gerd@gnu.org>
parents:
37357
diff
changeset
|
637 contents of a region-rectangle with a string on each line. The |
0bc52782144f
Adapt to the change of string-rectangle back to 20.x behaviour.
Gerd Moellmann <gerd@gnu.org>
parents:
37357
diff
changeset
|
638 string's width need not be the same as the width of the rectangle. If |
0bc52782144f
Adapt to the change of string-rectangle back to 20.x behaviour.
Gerd Moellmann <gerd@gnu.org>
parents:
37357
diff
changeset
|
639 the string's width is less, the text after the rectangle shifts left; |
0bc52782144f
Adapt to the change of string-rectangle back to 20.x behaviour.
Gerd Moellmann <gerd@gnu.org>
parents:
37357
diff
changeset
|
640 if the string is wider than the rectangle, the text after the |
0bc52782144f
Adapt to the change of string-rectangle back to 20.x behaviour.
Gerd Moellmann <gerd@gnu.org>
parents:
37357
diff
changeset
|
641 rectangle shifts right. |
33805 | 642 |
37447
0bc52782144f
Adapt to the change of string-rectangle back to 20.x behaviour.
Gerd Moellmann <gerd@gnu.org>
parents:
37357
diff
changeset
|
643 @findex string-insert-rectangle |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49330
diff
changeset
|
644 The command @kbd{M-x string-insert-rectangle} is similar to |
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49330
diff
changeset
|
645 @code{string-rectangle}, but inserts the string on each line, |
37447
0bc52782144f
Adapt to the change of string-rectangle back to 20.x behaviour.
Gerd Moellmann <gerd@gnu.org>
parents:
37357
diff
changeset
|
646 shifting the original text to the right. |