emacs, escribiendo comandos personalizados que usan term-mode

emacs, escribiendo comandos personalizados que usan term-mode

Estoy usando Emacs y M-xtermpara 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 bterm[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 F4nuevamente se repetirán las acciones que has realizado entre el último F3/ F4par. 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 compilepermite 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_cmdpodría funcionar).

Entonces, al menos, puede consultar compileel código fuente de para aprender cómo se administran los buffers para tal escenario y cómo se ejecutan los comandos.

información relacionada