[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
57.4.6 Rebinding Keys in Your Init File
If you have a set of key bindings that you like to use all the time, you can specify them in your ‘.emacs’ file by using their Lisp syntax. (See section The Init File, ‘~/.emacs’.)
The simplest method for doing this works for ASCII characters and
Meta-modified ASCII characters only. This method uses a string to
represent the key sequence you want to rebind. For example, here's how
to bind C-z to shell
:
(global-set-key "\C-z" 'shell) |
This example uses a string constant containing one character,
C-z. (‘\C-’ is string syntax for a control character.) The
single-quote before the command name, shell
, marks it as a
constant symbol rather than a variable. If you omit the quote, Emacs
would try to evaluate shell
immediately as a variable. This
probably causes an error; it certainly isn't what you want.
Here is another example that binds the key sequence C-x M-l:
(global-set-key "\C-x\M-l" 'make-symbolic-link) |
To put <TAB>, <RET>, <ESC>, or <DEL> in the string, you can use the Emacs Lisp escape sequences, ‘\t’, ‘\r’, ‘\e’, and ‘\d’. Here is an example which binds C-x <TAB>:
(global-set-key "\C-x\t" 'indent-rigidly) |
These examples show how to write some other special ASCII characters in strings for key bindings:
(global-set-key "\r" 'newline) ;; <RET> (global-set-key "\d" 'delete-backward-char) ;; <DEL> (global-set-key "\C-x\e\e" 'repeat-complex-command) ;; <ESC> |
When the key sequence includes function keys or mouse button events,
or non-ASCII characters such as C-=
or H-a
, you must use
the more general method of rebinding, which uses a vector to specify the
key sequence.
The way to write a vector in Emacs Lisp is with square brackets around the vector elements. Use spaces to separate the elements. If an element is a symbol, simply write the symbol's name—no other delimiters or punctuation are needed. If a vector element is a character, write it as a Lisp character constant: ‘?’ followed by the character as it would appear in a string.
Here are examples of using vectors to rebind C-= (a control character not in ASCII), C-M-= (not in ASCII because C-= is not), H-a (a Hyper character; ASCII doesn't have Hyper at all), <F7> (a function key), and C-Mouse-1 (a keyboard-modified mouse button):
(global-set-key [?\C-=] 'make-symbolic-link) (global-set-key [?\M-\C-=] 'make-symbolic-link) (global-set-key [?\H-a] 'make-symbolic-link) (global-set-key [f7] 'make-symbolic-link) (global-set-key [C-mouse-1] 'make-symbolic-link) |
You can use a vector for the simple cases too. Here's how to rewrite the first six examples above to use vectors:
(global-set-key [?\C-z] 'shell) (global-set-key [?\C-x ?l] 'make-symbolic-link) (global-set-key [?\C-x ?\t] 'indent-rigidly) (global-set-key [?\r] 'newline) (global-set-key [?\d] 'delete-backward-char) (global-set-key [?\C-x ?\e ?\e] 'repeat-complex-command) |
As you see, you represent a multi-character key sequence with a vector by listing all of the characters, in order, within the square brackets that delimit the vector.
Language and coding systems can cause problems with key bindings for non-ASCII characters. See section Non-ASCII Characters in Init Files.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |