Rebinding Key Bindings Function Keys
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.
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.
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 a key sequence two characters long:
(global-set-key "\C-xl" 'make-symbolic-link)
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 outside of ASCII), 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 [?\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 two examples, above, to use vectors:
(global-set-key [?\C-z] 'shell) (global-set-key [?\C-x ?l] 'make-symbolic-link)