Hoy aprendí algo re copado, definir macros con Emacs, me pregunto por qué no aprendí esta herramienta increiblemente útil, antes!
Imagen histórica no disponible. Stallman y la Iglesia de Emacs
Es muy sencillo definir una macro, tenés que hacer esto:
C-x (
Luego tipear todo lo que necesitemos que haga la macro y para terminar:
C-x )
Después podemos nombrar la macro con:
M-x name-last-kbd-macro
esto nos permite llamar nuestra macro directamente haciendo:
M-x el-nombre-de-tu-macro
Además podés guardar las macro para que sean persistentes entre sesión y sesión y esto lo podés hacer por ej, abriendo tu archivo .emacs y ejecutando:
M-x insert-kbd-macro
Acá les dejo una serie de macro útiles para ruby, donde además le seteo una combinación de teclas que paso a detallar:
C-c d -> inserta un debugger C-c D -> Borra todas las ocurrencias de debugger C-c r m -> inserta un bloque map C-c r e -> inserta un bloque each C-c r q -> inserta un bloque para una app Cuba, sí cuba! :)
Copien esto dentro de su .emacs
;; Macros copadas para ruby (fset 'ruby-insert-debugger "require 'debugger' ; debugger")(global-set-key (kbd "C-c d") 'ruby-insert-debugger)
(fset 'ruby-remove-debugger [escape ?x ?r ?e ?p ?l tab ?s tab tab return ?r ?e ?q ?u ?i ?r ?e ? ?\' ?d ?e ?u backspace ?b ?u ?g ?g ?e ?r ?\' ? ?\; ? ?d ?e ?u backspace ?b ?u ?g ?g ?e ?r return return]) (global-set-key (kbd "C-c D") 'ruby-remove-debugger)
(fset 'ruby-insert-map "map{|| }") (global-set-key (kbd "C-c r m") 'ruby-insert-map)
(fset 'ruby-insert-each "each{|| }") (global-set-key (kbd "C-c r e") 'ruby-insert-each)
(fset 'ruby-insert-class [?c ?l ?a ?s ?s return return ?e ?n ?d up up right right ? ])
(global-set-key (kbd "C-c r c") 'ruby-insert-class)
(fset 'ruby-insert-test [?t ?e ?s ?t ? ?\' ?\' ? ?d ?o ? return return ?e ?n ?d up up right right right]) (global-set-key (kbd "C-c r t") 'ruby-insert-test)
(fset 'ruby-insert-cuba-app [?\C-c ?r ?c ?< ? ?C ?u ?a backspace ?b ?a return return ? ? ?d ?e ?f ?i ?n ?e ? ?d ?o return return ? ? ?e ?n ?d up up up up right])
(global-set-key (kbd "C-c r q") 'ruby-insert-test)
No sé si los dije, pero soy fanático de hacer todo con el teclado, casi no uso el mouse.
Comentarios del archivo (2)
humitos · 12 de septiembre de 2013
¡Bienvenido al mundo de las macros!
Gastón Ramos · 13 de septiembre de 2013
C-x (
trabajar-por-mi
C-x )
:D