Definir atajos en Emacs

En emacs, tu puedes crear cualquier atajo de teclado para cualquier comando

Por ejemplo, si deseas [F7] para el calendario, coloca en tu archivo de configuracion de emacs

(global-set-key (kbd "<f7>") 'calendar)

Si estas experimentando y no deseas reiniciar emacs cada vez que intentas definir un nuevo atajo, puedes colocar el cursor al final del ultimo parantesis e invocar a (M-x) eval-last-sexp (comando ligado a C-x C-e). El atajo se activa de inmediato. Para salir del buffer calendario presiona q.

Si cometes algun error y necesitas iniciar emacs sin cargar el archivo de configuracion, puedes iniciar emacs desde el terminal con este comando:

emacs --no-init-file

sintaxis

La funcion para definir atajos es

(define-key map COMBINACION 'FUNCION)

donde map es un mapa de combinaciones, o por decirlo de alguna forma, un prefijo que precede a la combinacion en si

(global-set-key COMBINACION 'FUNCION)

La COMBINACION de teclas puede ser cualquiera de estas 3 formas

este es el nombre interno de algunas teclas

ejemplos

(global-set-key [s-left]  'windmove-left)
(global-set-key [s-right] 'windmove-right)
(global-set-key [s-up]    'windmove-up)
(global-set-key [s-down]  'windmove-down)

(global-set-key (kbd "C-c <left>")  'windmove-left)
(global-set-key (kbd "C-c <right>") 'windmove-right)
(global-set-key (kbd "C-c <up>")    'windmove-up)
(global-set-key (kbd "C-c <down>")  'windmove-down)

(global-set-key (kbd "C-c o") 'recentf-open-files)
(global-set-key (kbd "C-x C-b") 'ibuffer)

(global-set-key [return] 'backward-char)
(global-set-key (kbd "<return>") 'backward-char)
(global-set-key (kbd "<f7> <f8>") 'calendar)

Conocer el comando ligado a un atajo

Si invocamos a describe-key (C-h k) y, a continuacion, se presiona un atajo, emacs mostrara el comando al que esta ligado.

Por ejemplo, supongamos que deseamos conocer el comando ligado a C-M-g. Primero se llama a describe-key, luego se presiona la combinacion de teclado, entonces emacs imprimira C-M-g is undefined. Esto significa que puedes utilizar (kbd "C-M-g") para representar una combinacion de teclas en codigo lisp.

Combinaciones a evitar

Emacs tiene sus caprichos. Es mejor no definir las siguientes combinaciones, a menos que sepas lo que estas haciendo.

Buenas opciones

Emacs tiene unos siete mill comandos. De forma predeterminada, 800 de ellos tiene un atajo. Si defines tus propios atajos sin cuidado es posible que muchos modos primarios o secundarios anulen tus combinaciones, ya que estas tiene prioridad.

En la documentacion oficial de emacs, Las combinaciones libres para el usuario son de F5 a F9 y C-c letra.

Las siguientes combinaciones son buenos puntos de partida para tus propias definiciones, y no causan ningun problema en la practica

fuentes

buena parte del articulo es una pseudo-traduccion de

http://ergoemacs.org/emacs/keyboard_shortcuts.html

otra, es una invencion no contrastada con el manual