emacs, escrevendo comandos personalizados que usam o modo term

emacs, escrevendo comandos personalizados que usam o modo term

Estou usando o Emacs e M-xtermcomo terminal. Já que meu fluxo de trabalho típico é assim:

  • editar algum código
  • C-x opara o buffer do terminal (ou C-x bterm[Enter]algo assim)
  • pressione Upa tecla para usar o último comando
  • pressione Enterpara executá-lo
  • C-x ovoltar

Quero vincular tudo isso (exceto o primeiro passo... talvez) a um comando, acredito que o Emacs é incrível o suficiente para fazer isso :-)

Portanto, um comando deve:

  • vá para o buffer com o terminal (talvez não deva alterar nenhuma janela, talvez deva dividir a janela verticalmente (se já não estiver dividida) e usar o lado direito)
  • execute um último comando que foi executado lá
  • volte para o último buffer/parte da tela

Obrigado! Não estou muito acostumado com o sistema de scripts Emacs e espero que alguém me ajude e que outra pessoa possa usar a resposta para melhorar seu fluxo de trabalho, pois acredito que este seja bastante comum


Exemplos de comandos:

python manage.py test
python manage.py test stats
python solve.py # for project-euler puzzles :-)

o primeiro e o segundo às vezes rodam em um ssh (em um terminal) (gosto de desenvolver com vagrant)

Entendo que é fácil vincular o primeiro e o terceiro, mas o segundo muda com muita frequência - gostaria apenas de "executar o último comando"

Responder1

Rápido e sujo - defina uma macro:

F3
C-x b term RET
UP RET
C-x b RET
F4

Agora, pressionar F4novamente irá repetir as ações que você fez entre o último par F3/ . F4Você pode fazer muito mais com macros, incluindo ter mais de uma macro, editar macros, salvar macros em .emacs, etc.Wiki EmacseManual do Emacs.

Responder2

Não M-x compilepermite fazer algo semelhante? Ele permite que você digite um comando personalizado e execute-o e repita na próxima vez...

Bem, provavelmente haverá problemas com comandos interativos (é por isso que você gostaria de usar um termo), e talvez também com uma conexão ssh reutilizável persistente (mas TRAMP poderia ajudar aqui: cd REMOTELOCATION; your_cmdpoderia funcionar).

Portanto, pelo menos, você pode consultar compileo código-fonte do para saber como os buffers são gerenciados para tal cenário e como os comandos são executados.

informação relacionada