2010-05-27 11 views
5

Tengo dos operaciones que hago todo el tiempo en Emacs:Emacs simples combinaciones de teclas

  1. crean un nuevo buffer y pegar en el portapapeles. C-S-n
  2. Cierre el búfer actual. C-S-w
  3. Cambie al último búfer visto. C-TAB

me siento como un acróbata del teclado al hacer las dos primeras operaciones. Creo que valdría la pena intentar algunas combinaciones de teclas personalizadas y macros.

algunas preguntas acerca de esta personalización:

  1. ¿Cómo puedo hacer una macro para # 1?
  2. ¿Son estas buenas fijaciones de teclas? (Sé que esto es un poco subjetivo, pero que podrían ser utilizados por algo popular que no uso.)
  3. Alguien ha encontrado una C-TAB macro que actuará como Alt +Tab en Linux/Windows? Específicamente, quiero tener una pila de búferes de acuerdo con la última marca de tiempo vista (la más reciente en la parte superior). Quiero continuar recorriendo la pila hasta que suelte la tecla Ctrl. Cuando se lanza la clave Ctrl, quiero que el búfer en uso obtenga una posición actualizada en la pila.

Respuesta

1
  1. inicio invocando puesta en kbd-macro, por terminar con extremo-kbd-macro. Después, puede probar inmediatamente la nueva macro con call-last-kbd-macro. Si está satisfecho con el resultado, puede querer save the macro.
  2. Emacs generalmente no usa combinaciones de teclas C-S y son fáciles de usar, así que los llamaría buenos. Podrían causar problemas si está usando la versión terminal de Emacs, pero supongo que ese no es el caso.
  3. utilizo este sencillo fragmento:

    (--clave conjunto global (KBD "< C-pestaña >") 'enterrar-buffer)

enterrar-buffer, básicamente, hace que el búfer el último en la lista de almacenamiento intermedio, por lo que podrá realizar un ciclo de almacenamientos intermedios en un orden predecible.

1
  1. No crearía una macro para eso pero escribiría una función como otra persona publicada en esta página. En lugar de (cua-paste nil) también puede usar (yank). No estoy seguro de cuál es mejor y por qué.
  2. No me gustan tanto. Para las cosas que utilizo a menudo, me gustaría hacer acrobacias con tan poco dedo como sea posible, eso significaría modificador + tecla en lugar de modificador1 + modificador2 + tecla ... o usar una tecla de función si no te sientes atado al jonrón .
  3. ningún comentario
4

¿Ha intentado utilizar ventanas divididas vertical u horizontalmente para este (a través de C-x 3 o C-x 2)? Parece que le daría menos pasos, incluso si implementa algo de lo que está hablando.

Me parece que las ventanas divididas realmente aceleran las operaciones de copia y pegado. Utilizo las teclas de flecha en mi teclado numérico para alternar entre las ventanas (windmove-left/-right/-up/-down), así que solo tiene que presionar una tecla y acceder a la ventana que desea.

Supongo que esto es un poco diferente de lo que estás pidiendo, pero parece que podría acelerar un poco las cosas.

C-x izquierda y C-x derecha ciclo a través de tampones, pero usted tiene que golpear varias veces, no se puede simplemente mantener la tecla pulsada.


Para crear una macro para # 1, que acaba de iniciar una macro, presiona las teclas que suele hacer para crear un nuevo buffer, y detener la macro.

por lo que sería algo así como:

Cx (Cx bNEWRETCx)

continuación, puede guardar en un archivo NEW vez que haya terminado de pegar, para que pueda usar la macro nuevamente para crear un nuevo buffer. C-x e para probar la macro. Si funciona, puede guardarlo en su archivo init.el. Esto se hace con:

M-xname-last-kbd-macro

Entonces obtendrá una indicación para introducir el nombre de su elección. Esto solo es bueno para la sesión actual. Luego guarda la macro nombrada en su archivo de inicialización. Primero abre su archivo .emacs o init.el. A continuación se coloca el punto donde desea que la definición de la macro para ir, a continuación, se escribe:

M-xinsert-kbd-macro

Ahora se puede ejecutar la macro utilizando su nombre a través de M-x<macroname>.Puede enlazar su macro de teclas también (en su archivo .emacs o init.el):

(global-set-key (kbd "C-c a") '<macroname>) 

Por ejemplo, esta es la forma en que su init.el se vería después de crear una macro que abre un nuevo buffer llamado NEW que no está asociado con una presentar y vinculante esta macro para Cc n:

;; Creates a new unassociated buffer called NEW 
(fset 'new-buffer "\C-xbNEW\C-m"); 
;; Shortcut for new-buffer 
(global-set-key (kbd "C-c n") 'new-buffer) 

también puede tirar la pasta, buffer de cerca, y el tampón operaciones de conmutación. Supongo que tendrías que guardar el búfer en un archivo manualmente.

Algunos recursos

Cuestiones relacionadas