Estoy usando Emacs y M-xterm
para una terminal. Dado que mi flujo de trabajo típico se ve así:
- editar algún código
- C-x oal buffer del terminal (o C-x b
term[Enter]
algo así) - presione Upla tecla para usar el último comando
- presione Enterpara ejecutarlo
- C-x ovolver
Quiero vincular todos estos (excepto el primer paso... tal vez) a un comando, creo que Emacs es lo suficientemente increíble como para hacerlo :-)
Entonces, un comando debe:
- vaya al búfer con la terminal (tal vez no debería cambiar ninguna ventana, tal vez debería dividir la ventana verticalmente (si aún no estaba dividida) y usar el lado derecho)
- ejecutar un último comando que se ha ejecutado allí
- volver al último buffer/parte de la pantalla
¡Gracias! Realmente no estoy acostumbrado al sistema de secuencias de comandos de Emacs y espero que alguien me ayude y alguien más pueda usar la respuesta para mejorar su flujo de trabajo, ya que creo que es bastante común.
Ejemplos de comandos:
python manage.py test
python manage.py test stats
python solve.py # for project-euler puzzles :-)
el primero y el segundo se ejecutan a veces en ssh (en una terminal) (me gusta desarrollar con vagrant
)
Entiendo que es fácil vincular el primero y el tercero, pero el segundo cambia con demasiada frecuencia; solo me gustaría "ejecutar el último comando".
Respuesta1
Rápido y sucio: define una macro:
F3
C-x b term RET
UP RET
C-x b RET
F4
Ahora al presionar F4
nuevamente se repetirán las acciones que has realizado entre el último F3
/ F4
par. Puede hacer mucho más con las macros, incluso tener más de una macro, editar macros, guardar macros en .emacs
, etc. Para obtener más información, consulteEmacsWikiymanual de emacs.
Respuesta2
¿No M-x compile
permite hacer algo similar? Le permite escribir un comando personalizado y ejecutarlo, luego repetirlo la próxima vez...
Bueno, probablemente habrá problemas con los comandos interactivos (por eso le gustaría usar un término), y quizás también con una conexión ssh reutilizable persistente (pero TRAMP podría ayudar aquí: cd REMOTELOCATION; your_cmd
podría funcionar).
Entonces, al menos, puede consultar compile
el código fuente de para aprender cómo se administran los buffers para tal escenario y cómo se ejecutan los comandos.