Difference between revisions of "Key Bindings"

From WikEmacs
Jump to navigation Jump to search
 
(6 intermediate revisions by 6 users not shown)
Line 1: Line 1:
In Emacs, almost any keystroke, optionally combined with one or more [[#modifierKeys|modifier keys]], or any sequence of such keystrokes, can be "bound" to any [[command]].
+
In Emacs, almost any keystroke, optionally combined with one or more modifier keys, or any sequence of such keystrokes, can be "bound" to any [[command]].
  
== <span id="modifierKeys">Modifier keys naming convention</span> ==
+
== Modifier keys naming convention ==
  
 
{| class="wikitable"
 
{| class="wikitable"
Line 48: Line 48:
 
| Super
 
| Super
 
| s
 
| s
| Often not mapped to any key by default, or to <tt>Window</tt> or <tt>Menu</tt> if present
+
| On OS X this is the Command ⌘ key.
 +
On other systems often not mapped to any key by default, or to <tt>Window</tt> or <tt>Menu</tt> if present
 
| s-x
 
| s-x
 
| Type "x" while holding down super
 
| Type "x" while holding down super
Line 61: Line 62:
  
 
== Change key bindings ==
 
== Change key bindings ==
You can add, remove and change key bindings for any command.  
+
 
 +
You can add, remove and change key bindings for any command by using the Emacs Lisp function <code>global-set-key</code> or <code>local-set-key</code>.
  
 
; {{Command|global-set-key}} or {{Command|local-set-key}}
 
; {{Command|global-set-key}} or {{Command|local-set-key}}
 
: Hit the key sequence you want to bind
 
: Hit the key sequence you want to bind
 
: Type the command to bind to that key sequence
 
: Type the command to bind to that key sequence
: Type {{Command|C-x ESC ESC|repeat-complex-command}. The output you see is the full lisp command which does the binding.  You can copy this to your {{EmacsConfigFile}}.
+
: Invoke {{Keys|C-x ESC ESC|repeat-complex-command}}. The output you see is the full lisp command which does the binding.  You can copy this to your {{EmacsConfigFile}}.
 +
 
 +
'''Notes:'''
 +
 
 +
* <code>global-set-key</code> bind keys globally (i.e. <code>global-mode-map</code>), which means other modes would override key bindings set by <code>global-set-key</code>.
 +
 
 +
* <code>local-set-key</code> bind keys in the current buffer [[major mode]], which affects all buffers sharing the mode.
  
 
== External Links ==
 
== External Links ==
Line 72: Line 80:
 
* [http://www.masteringemacs.org/articles/2011/02/08/mastering-key-bindings-emacs/ Mastering Keybindings in Emacs]
 
* [http://www.masteringemacs.org/articles/2011/02/08/mastering-key-bindings-emacs/ Mastering Keybindings in Emacs]
  
[[Category:Tweak Key Bindings]]
+
[[Category:Customization]]
 +
[[Category:Key Concepts]]

Latest revision as of 04:00, 11 May 2012

In Emacs, almost any keystroke, optionally combined with one or more modifier keys, or any sequence of such keystrokes, can be "bound" to any command.

Modifier keys naming convention

Modifier key Abbr. Remarks Example Action
Alt A Relatively seldom used in Emacs, because Meta is often "logically" mapped to the "physical" Alt key. A-x Type "x" while holding down the (non-Meta) Alt key
Control C C-x C-f While holding down Ctrl, type first "x" then "f". (This runs the command find-file).
Hyper h Often not mapped to any key (by default). h-x Type "x" while holding down hyper
Meta M Often mapped to Alt on your keyboard M-x find-file RET Either:
  • type "x" while holding down Meta, or
  • type "Esc" then "x"

(M-x activates the minibuffer)

Then type "find-file" in the minibuffer, then Return.

Shift S S-x Type "x" while holding down Shift
Super s On OS X this is the Command ⌘ key.

On other systems often not mapped to any key by default, or to Window or Menu if present

s-x Type "x" while holding down super

By convention, when multiple modifiers are specified, they go in alphabetical order: [C-M-x] not [M-C-x].

Printable cheat sheet for popular modes

Emacs ships with cheat sheets of common and useful key bindings. The pdf files are located in the refcards/ subdirectory of data-directory.

Change key bindings

You can add, remove and change key bindings for any command by using the Emacs Lisp function global-set-key or local-set-key.

M-x global-set-key or M-x local-set-key
Hit the key sequence you want to bind
Type the command to bind to that key sequence
Invoke [C-x ESC ESC]. The output you see is the full lisp command which does the binding. You can copy this to your Emacs configuration file.

Notes:

  • global-set-key bind keys globally (i.e. global-mode-map), which means other modes would override key bindings set by global-set-key.
  • local-set-key bind keys in the current buffer major mode, which affects all buffers sharing the mode.

External Links