aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChong Yidong2008-07-15 14:12:18 +0000
committerChong Yidong2008-07-15 14:12:18 +0000
commit9bb75d26827d70107f5a820bf887bcec9a90acfd (patch)
treeee7bdcadfb95bedae55a44e0ef431f6d3d8ae043
parent9f30aa7371d6020eefa1d3997c43c4f844d3d0fe (diff)
downloademacs-9bb75d26827d70107f5a820bf887bcec9a90acfd.tar.gz
emacs-9bb75d26827d70107f5a820bf887bcec9a90acfd.zip
(User Input): Rewrite. Describe Emacs' behavior
directly, rather than in the context of ASCII. Move description of special properties of modifier key to new Modifier Keys node. (Keys): Copyedit. (Text Characters): Delete node. Multibyte is the default nowadays, and the node contents are obsolete.
-rw-r--r--doc/emacs/commands.texi291
1 files changed, 99 insertions, 192 deletions
diff --git a/doc/emacs/commands.texi b/doc/emacs/commands.texi
index 717a87b419b..249be21923b 100644
--- a/doc/emacs/commands.texi
+++ b/doc/emacs/commands.texi
@@ -6,9 +6,9 @@
6@chapter Characters, Keys and Commands 6@chapter Characters, Keys and Commands
7 7
8 This chapter explains the character sets used by Emacs for input 8 This chapter explains the character sets used by Emacs for input
9commands and for the contents of files, and the fundamental concepts of 9commands, and the fundamental concepts of @dfn{keys} and
10@dfn{keys} and @dfn{commands}, whereby Emacs interprets your keyboard 10@dfn{commands}, whereby Emacs interprets your keyboard and mouse
11and mouse input. 11input.
12@end iftex 12@end iftex
13 13
14@ifnottex 14@ifnottex
@@ -25,120 +25,65 @@ and mouse input.
25@cindex Control 25@cindex Control
26@cindex control characters 26@cindex control characters
27 27
28 GNU Emacs is designed for use with keyboard commands because that is 28 GNU Emacs is primarily designed for use with the keyboard. While it
29the most efficient way to edit. You can do editing with the mouse, as 29is possible to use the mouse to issue editing commands through the
30in other editors, and you can give commands with the menu bar and tool 30menu bar and tool bar, that is not as efficient as using the keyboard.
31bar, and scroll with the scroll bar. But if you keep on editing that 31Therefore, this manual mainly documents how to edit with the keyboard.
32way, you won't get the benefits of Emacs. Therefore, this manual 32
33documents primarily how to edit with the keyboard. You can force 33 Keyboard input into Emacs is based on a heavily-extended version of
34yourself to practice using the keyboard by using the shell command 34@acronym{ASCII}. The simplest characters that you can input into
35@samp{emacs -nw} to start Emacs, so that the mouse won't work. 35Emacs correspond to graphic symbols such as @samp{a}, @samp{B},
36 36@samp{3}, @samp{=}, the space character (conventionally denoted as
37 Emacs uses an extension of the @acronym{ASCII} character set for 37@key{SPC}), and so on. Entering these using the keyboard is
38keyboard input; it also accepts non-character input events including 38straightforward. Certain characters found on non-English keyboards
39function keys and mouse button actions. 39also fall into this category (@pxref{International}).
40 40
41 @acronym{ASCII} consists of 128 character codes. Some of these codes are 41 In addition to these simple characters, Emacs recognizes
42assigned graphic symbols such as @samp{a} and @samp{=}; the rest are 42@dfn{control characters} such as @key{RET}, @key{TAB}, @key{DEL},
43control characters, such as @kbd{Control-a} (usually written @kbd{C-a} 43@key{ESC}, @key{F1}, @key{Home}, @key{left}, etc. Most keyboards have
44for short). @kbd{C-a} gets its name from the fact that you type it by 44special keys for entering these.
45holding down the @key{CTRL} key while pressing @kbd{a}. 45
46 46@cindex modifier keys
47 Some @acronym{ASCII} control characters have special names, and most 47@cindex Control
48terminals have special keys you can type them with: for example, 48@cindex C-
49@key{RET}, @key{TAB}, @key{DEL} and @key{ESC}. The space character is
50usually known as @key{SPC}, even though strictly speaking it is a
51graphic character that is blank.
52
53 Emacs extends the @acronym{ASCII} character set with thousands more printing
54characters (@pxref{International}), additional control characters, and a
55few more modifiers that can be combined with any character.
56
57 On @acronym{ASCII} terminals, there are only 32 possible control characters.
58These are the control variants of letters and @samp{@@[]\^_}. In
59addition, the shift key is meaningless with control characters:
60@kbd{C-a} and @kbd{C-A} are the same character, and Emacs cannot
61distinguish them.
62
63 The Emacs character set has room for control variants of all
64printing characters, and distinguishes @kbd{C-A} from @kbd{C-a}.
65Graphical terminals make it possible to enter all these characters.
66For example, @kbd{C--} (that's Control-Minus) and @kbd{C-5} are
67meaningful Emacs commands on a graphical terminal.
68
69 Another Emacs character-set extension is additional modifier bits.
70Only one modifier bit is commonly used; it is called Meta. Every
71character has a Meta variant; examples include @kbd{Meta-a} (normally
72written @kbd{M-a}, for short), @kbd{M-A} (different from @kbd{M-a},
73but they are normally equivalent in Emacs), @kbd{M-@key{RET}}, and
74@kbd{M-C-a}. That last means @kbd{a} with both the @key{CTRL} and
75@key{META} modifiers. We usually write it as @kbd{C-M-a} rather than
76@kbd{M-C-a}, for reasons of tradition.
77
78@cindex Meta 49@cindex Meta
79@cindex M- 50@cindex M-
80@cindex @key{ESC} replacing @key{META} key 51 Emacs also recognizes control characters that are entered using
81 Some terminals have a @key{META} key, and allow you to type Meta 52@dfn{modifier keys}. Two commonly-used modifier keys are
82characters by holding this key down. Thus, you can type @kbd{Meta-a} 53@key{Control} (which is usually labelled as @key{Ctrl}), and
83by holding down @key{META} and pressing @kbd{a}. The @key{META} key 54@key{Meta} (which is usually labeled as @key{Alt})@footnote{We refer
84works much like the @key{SHIFT} key. In fact, this key is more often 55to @key{Alt} as @key{Meta} for historical reasons.}. For example,
85labeled @key{ALT} or @key{EDIT}, instead of @key{META}; on a Sun 56@kbd{Control-a} is entered by holding down the @key{Ctrl} key while
86keyboard, it may have a diamond on it. 57pressing @kbd{a}; we will refer to this as @kbd{C-a} for short.
87 58Similarly @kbd{Meta-a}, or @kbd{M-a} for short, is entered by holding
88 If there is no @key{META} key, you can still type Meta characters 59down the @key{Alt} key and pressing @kbd{a}.
89using two-character sequences starting with @key{ESC}. Thus, you can 60
90enter @kbd{M-a} by typing @kbd{@key{ESC} a}. You can enter 61@cindex @key{ESC} replacing @key{Meta} key
91@kbd{C-M-a} by typing @kbd{@key{ESC} C-a}. Unlike @key{META}, which 62 You can also type Meta characters using two-character sequences
92modifies other characters, @key{ESC} is a separate character. You 63starting with @key{ESC}. Thus, you can enter @kbd{M-a} by typing
93don't hold down @key{ESC} while typing the next character; instead, 64@kbd{@key{ESC} a}. You can enter @kbd{C-M-a} by typing @kbd{@key{ESC}
94you press it and release it, then you enter the next character. 65C-a}. Unlike @key{Meta}, @key{ESC} is entered as a separate
95@key{ESC} is allowed on terminals with @key{META} keys, too, in case 66character. You don't hold down @key{ESC} while typing the next
96you have formed a habit of using it. 67character; instead, press @key{ESC} and release it, then enter the
97 68next character. This feature is useful on certain text-only terminals
98 Emacs defines several other modifier keys that can be applied to any 69where the @key{Meta} key does not function reliably.
99input character. These are called @key{SUPER}, @key{HYPER} and 70
100@key{ALT}. We write @samp{s-}, @samp{H-} and @samp{A-} to say that a 71 Modifier keys can apply not only to alphanumerical characters, but
101character uses these modifiers. Thus, @kbd{s-H-C-x} is short for 72also to special input characters, such as the arrow keys and mouse
102@kbd{Super-Hyper-Control-x}. Not all graphical terminals actually 73buttons.
103provide keys for these modifier flags---in fact, many terminals have a
104key labeled @key{ALT} which is really a @key{META} key. The standard
105key bindings of Emacs do not include any characters with these
106modifiers. But you can assign them meanings of your own by
107customizing Emacs.
108
109 If your keyboard lacks one of these modifier keys, you can enter it
110using @kbd{C-x @@}: @kbd{C-x @@ h} adds the ``hyper'' flag to the next
111character, @kbd{C-x @@ s} adds the ``super'' flag, and @kbd{C-x @@ a}
112adds the ``alt'' flag. For instance, @kbd{C-x @@ h C-a} is a way to
113enter @kbd{Hyper-Control-a}. (Unfortunately there is no way to add
114two modifiers by using @kbd{C-x @@} twice for the same character,
115because the first one goes to work on the @kbd{C-x}.)
116
117 Keyboard input includes keyboard keys that are not characters at
118all, such as function keys and arrow keys. Mouse buttons are also not
119characters. However, you can modify these events with the modifier
120keys @key{CTRL}, @key{META}, @key{SUPER}, @key{HYPER} and @key{ALT},
121just like keyboard characters.
122 74
123@cindex input event 75@cindex input event
124 Input characters and non-character inputs are collectively called 76 @xref{Input Events,,, elisp, The Emacs Lisp Reference Manual}, for
125@dfn{input events}. @xref{Input Events,,, elisp, The Emacs Lisp 77the full Lisp-level details about keyboard and mouse input, which are
126Reference Manual}, for the full Lisp-level details. If you are not 78collectively referred to as @dfn{input events}. If you are not doing
127doing Lisp programming, but simply want to redefine the meaning of 79Lisp programming, but simply want to redefine the meaning of some
128some characters or non-character events, see @ref{Customization}. 80characters or non-character events, see @ref{Customization}.
129
130 @acronym{ASCII} terminals cannot really send anything to the computer except
131@acronym{ASCII} characters. These terminals use a sequence of characters to
132represent each function key. But that is invisible to the Emacs user,
133because the keyboard input routines catch these special sequences
134and convert them to function key events before any other part of Emacs
135gets to see them.
136 81
137@cindex keys stolen by window manager 82@cindex keys stolen by window manager
138@cindex window manager, keys stolen by 83@cindex window manager, keys stolen by
139 On graphical displays, the window manager is likely to block the 84 On graphical displays, the window manager is likely to block the
140character @kbd{Meta-@key{TAB}} before Emacs can see it. It may also 85character @kbd{M-@key{TAB}} before Emacs can see it. It may also
141block @kbd{Meta-@key{SPC}}, @kbd{C-M-d} and @kbd{C-M-l}. If you have 86block @kbd{M-@key{SPC}}, @kbd{C-M-d} and @kbd{C-M-l}. If you have
142these problems, we recommend that you customize your window manager to 87these problems, we recommend that you customize your window manager to
143turn off those commands, or put them on key combinations that Emacs 88turn off those commands, or put them on key combinations that Emacs
144does not use. 89does not use.
@@ -146,65 +91,58 @@ does not use.
146@node Keys, Commands, User Input, Top 91@node Keys, Commands, User Input, Top
147@section Keys 92@section Keys
148 93
149@cindex key sequence 94 Some Emacs commands are invoked by just one input event; for
150@cindex key 95example, @kbd{C-f} moves forward one character in the buffer. But
151 A @dfn{key sequence} (@dfn{key}, for short) is a sequence of input 96Emacs also has commands that take two or more input events to invoke,
152events that is meaningful as a unit---a ``single command.'' Some 97such as @kbd{C-x C-f} and @kbd{C-x 4 C-f}.
153Emacs command sequences are invoked by just one character or one
154event; for example, just @kbd{C-f} moves forward one character in the
155buffer. But Emacs also has commands that take two or more events to
156invoke.
157 98
99@cindex key
100@cindex key sequence
158@cindex complete key 101@cindex complete key
159@cindex prefix key 102@cindex prefix key
160 If a sequence of events is enough to invoke a command, it is a 103 A @dfn{key sequence}, or @dfn{key} for short, is a sequence of one
161@dfn{complete key}. Examples of complete keys include @kbd{C-a}, 104or more input events that is meaningful as a unit. If a key sequence
162@kbd{X}, @key{RET}, @key{NEXT} (a function key), @key{DOWN} (an arrow 105invokes a command, we call it a @dfn{complete key}; for example,
163key), @kbd{C-x C-f}, and @kbd{C-x 4 C-f}. If it isn't long enough to be 106@kbd{C-f}, @kbd{C-x C-f} and @kbd{C-x 4 C-f} are all complete keys.
164complete, we call it a @dfn{prefix key}. The above examples show that 107If a key sequence isn't long enough to invoke a command, we call it a
165@kbd{C-x} and @kbd{C-x 4} are prefix keys. Every key sequence is either 108@dfn{prefix key}; from the preceding example, we see that @kbd{C-x}
166a complete key or a prefix key. 109and @kbd{C-x 4} are prefix keys. Every key is either a complete key
167 110or a prefix key.
168 Most single characters constitute complete keys in the standard Emacs 111
169command bindings. A few of them are prefix keys. A prefix key combines 112 A prefix key combines with the following input event to make a
170with the following input event to make a longer key sequence, which may 113longer key sequence, which may itself be complete or a prefix. For
171itself be complete or a prefix. For example, @kbd{C-x} is a prefix key, 114example, @kbd{C-x} is a prefix key, so @kbd{C-x} and the next input
172so @kbd{C-x} and the next input event combine to make a two-event 115event combine to make a two-event key sequence. This two-event key
173key sequence. Most of these key sequences are complete keys, including 116sequence could itself be a prefix key (such as @kbd{C-x 4}), or a
174@kbd{C-x C-f} and @kbd{C-x b}. A few, such as @kbd{C-x 4} and @kbd{C-x 117complete key (such as @kbd{C-x C-f}). There is no limit to the length
175r}, are themselves prefix keys that lead to three-event key 118of a key sequence, but in practice people rarely use sequences longer
176sequences. There's no limit to the length of a key sequence, but in 119than three or four input events.
177practice people rarely use sequences longer than four events.
178 120
179 You can't add input events onto a complete key. For example, the 121 You can't add input events onto a complete key. For example, the
180two-event sequence @kbd{C-f C-k} is not a key, because the @kbd{C-f} 122two-event sequence @kbd{C-f C-k} is not a key, because the @kbd{C-f}
181is a complete key in itself. It's impossible to give @kbd{C-f C-k} an 123is a complete key in itself, so @kbd{C-f C-k} cannot have an
182independent meaning as a command. @kbd{C-f C-k} is two key sequences, 124independent meaning as a command. @kbd{C-f C-k} is two key sequences,
183not one.@refill 125not one.@refill
184 126
185 All told, the prefix keys in Emacs are @kbd{C-c}, @kbd{C-h}, 127 By default, the prefix keys in Emacs are @kbd{C-c}, @kbd{C-h},
186@kbd{C-x}, @kbd{C-x @key{RET}}, @kbd{C-x @@}, @kbd{C-x a}, @kbd{C-x 128@kbd{C-x}, @kbd{C-x @key{RET}}, @kbd{C-x @@}, @kbd{C-x a}, @kbd{C-x
187n}, @w{@kbd{C-x r}}, @kbd{C-x v}, @kbd{C-x 4}, @kbd{C-x 5}, @kbd{C-x 129n}, @kbd{C-x r}, @kbd{C-x v}, @kbd{C-x 4}, @kbd{C-x 5}, @kbd{C-x 6},
1886}, @key{ESC}, @kbd{M-g}, and @kbd{M-o}. (@key{F1} and @key{F2} are 130@key{ESC}, @kbd{M-g}, and @kbd{M-o}. (@key{F1} and @key{F2} are
189aliases for @kbd{C-h} and @kbd{C-x 6}.) This list is not cast in stone; 131aliases for @kbd{C-h} and @kbd{C-x 6}.) This list is not cast in
190it describes the standard key bindings. If you customize Emacs, you can make 132stone; if you customize Emacs, you can make new prefix keys. You
191new prefix keys, or eliminate some of the standard ones (not 133could even eliminate some of the standard ones, though this is not
192recommended for most users). @xref{Key Bindings}. 134recommended for most users; for example, if you remove the prefix
193 135definition of @kbd{C-x 4}, then @kbd{C-x 4 @var{anything}} would
194 If you make or eliminate prefix keys, that changes the set of 136become an invalid key sequence. @xref{Key Bindings}.
195possible key sequences. For example, if you redefine @kbd{C-f} as a
196prefix, @kbd{C-f C-k} automatically becomes a key (complete, unless
197you define that too as a prefix). Conversely, if you remove the
198prefix definition of @kbd{C-x 4}, then @kbd{C-x 4 f} and @kbd{C-x 4
199@var{anything}} are no longer keys.
200 137
201 Typing the help character (@kbd{C-h} or @key{F1}) after a prefix key 138 Typing the help character (@kbd{C-h} or @key{F1}) after a prefix key
202displays a list of the commands starting with that prefix. There are 139displays a list of the commands starting with that prefix. The sole
203a few prefix keys after which @kbd{C-h} does not work---for historical 140exception to this rule is @key{ESC}: @kbd{@key{ESC}C-h} is equivalent
204reasons, they define other meanings for @kbd{C-h} which are painful to 141to @kbd{C-M-h}, which does something else entirely. You can, however,
205change. @key{F1} works after all prefix keys. 142use @key{F1} to displays a list of the commands starting with
143@key{ESC}.
206 144
207@node Commands, Text Characters, Keys, Top 145@node Commands, Entering Emacs, Keys, Top
208@section Keys and Commands 146@section Keys and Commands
209 147
210@cindex binding 148@cindex binding
@@ -219,11 +157,11 @@ their meanings by @dfn{binding} them to commands.
219usually made of a few English words separated by dashes; for example, 157usually made of a few English words separated by dashes; for example,
220@code{next-line} or @code{forward-word}. A command also has a 158@code{next-line} or @code{forward-word}. A command also has a
221@dfn{function definition} which is a Lisp program; this is how the 159@dfn{function definition} which is a Lisp program; this is how the
222command does its work. In Emacs Lisp, a command is a Lisp function with 160command does its work. In Emacs Lisp, a command is a Lisp function
223special options to read arguments and for interactive use. For more 161with special properties that make it suitable for interactive use.
224information on commands and functions, see @ref{What Is a Function,, 162For more information on commands and functions, see @ref{What Is a
225What Is a Function, elisp, The Emacs Lisp Reference Manual}. (The 163Function,, What Is a Function, elisp, The Emacs Lisp Reference
226definition here is simplified slightly.) 164Manual}.
227 165
228 The bindings between keys and commands are recorded in tables called 166 The bindings between keys and commands are recorded in tables called
229@dfn{keymaps}. @xref{Keymaps}. 167@dfn{keymaps}. @xref{Keymaps}.
@@ -234,10 +172,8 @@ but vital for Emacs customization. The command @code{next-line} does
234a vertical move downward. @kbd{C-n} has this effect @emph{because} it 172a vertical move downward. @kbd{C-n} has this effect @emph{because} it
235is bound to @code{next-line}. If you rebind @kbd{C-n} to the command 173is bound to @code{next-line}. If you rebind @kbd{C-n} to the command
236@code{forward-word}, @kbd{C-n} will move forward one word instead. 174@code{forward-word}, @kbd{C-n} will move forward one word instead.
237Rebinding keys is an important method of customization.
238 175
239 In the rest of this manual, we usually ignore this distinction to 176 In this manual, we will often speak of keys like @kbd{C-n} as
240keep things simple. We will often speak of keys like @kbd{C-n} as
241commands, even though strictly speaking the key is bound to a command. 177commands, even though strictly speaking the key is bound to a command.
242Usually we state the name of the command which really does the work in 178Usually we state the name of the command which really does the work in
243parentheses after mentioning the key that runs it. For example, we 179parentheses after mentioning the key that runs it. For example, we
@@ -256,35 +192,6 @@ until you are interested in customizing them. Then read the basic
256information on variables (@pxref{Variables}) and the information about 192information on variables (@pxref{Variables}) and the information about
257specific variables will make sense. 193specific variables will make sense.
258 194
259@node Text Characters, Entering Emacs, Commands, Top
260@section Character Set for Text
261@cindex characters (in text)
262
263 Text in Emacs buffers is a sequence of characters. In the simplest
264case, these are @acronym{ASCII} characters, each stored in one 8-bit
265byte. Both @acronym{ASCII} control characters (octal codes 000
266through 037, and 0177) and @acronym{ASCII} printing characters (codes
267040 through 0176) are allowed. The other modifier flags used in
268keyboard input, such as Meta, are not allowed in buffers.
269
270 Non-@acronym{ASCII} printing characters can also appear in buffers,
271when multibyte characters are enabled. They have character codes
272starting at 256, octal 0400, and each one is represented as a sequence
273of two or more bytes. @xref{International}. Single-byte characters
274with codes 128 through 255 can also appear in multibyte buffers.
275However, non-@acronym{ASCII} control characters cannot appear in a
276buffer.
277
278 Some @acronym{ASCII} control characters serve special purposes in text, and have
279special names. For example, the newline character (octal code 012) is
280used in the buffer to end a line, and the tab character (octal code 011)
281is used for indenting to the next tab stop column (normally every 8
282columns). @xref{Text Display}.
283
284 If you disable multibyte characters, then you can use only one
285alphabet of non-@acronym{ASCII} characters, which all fit in one byte.
286They use octal codes 0200 through 0377. @xref{Unibyte Mode}.
287
288@ifnottex 195@ifnottex
289@lowersections 196@lowersections
290@end ifnottex 197@end ifnottex