emacs, Schreiben von benutzerdefinierten Befehlen, die den Term-Modus verwenden

emacs, Schreiben von benutzerdefinierten Befehlen, die den Term-Modus verwenden

Ich verwende Emacs und M-xtermals Terminal. Mein typischer Workflow sieht folgendermaßen aus:

  • Code bearbeiten
  • C-x ozum Terminalpuffer (oder C-x bterm[Enter]oder so)
  • Drücken Sie Updie Taste, um den letzten Befehl zu verwenden
  • drücken, Enterum es auszuführen
  • C-x ozurück zu gehen

Ich möchte all dies (außer dem ersten Schritt ... vielleicht) an einen Befehl binden, und ich glaube, Emacs ist dafür großartig genug :-)

Ein Befehl muss also:

  • gehe mit dem Terminal zum Puffer (vielleicht sollte es überhaupt keine Fenster ändern, vielleicht sollte es das Fenster vertikal teilen (falls es nicht bereits geteilt ist) und die rechte Seite verwenden)
  • Führen Sie einen letzten Befehl aus, der dort ausgeführt wurde
  • zurück zum letzten Puffer/Bildschirmteil

Vielen Dank! Ich bin nicht wirklich an das Emacs-Skriptsystem gewöhnt und hoffe, dass mir jemand hilft und dass jemand anderes die Antwort nutzen kann, um seinen Workflow zu verbessern, da ich glaube, dass dies ein ziemlich verbreitetes Problem ist.


Beispiele für Befehle:

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

das erste und das zweite läuft manchmal über SSH (in einem Terminal) (ich entwickle gern damit vagrant)

Ich verstehe, dass es einfach ist, den ersten und den dritten zu binden, aber der zweite ändert sich zu oft - ich möchte einfach nur "den letzten Befehl ausführen"

Antwort1

Quick & dirty – ein Makro definieren:

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

Wenn Sie jetzt erneut drücken, werden die Aktionen wiederholt, die Sie zwischen dem letzten / -Paar F4ausgeführt haben . Sie können mit Makros noch viel mehr tun, z. B. mehr als ein Makro haben, Makros bearbeiten, Makros in speichern usw. Weitere Informationen finden Sie unterF3F4.emacsEmacsWikiUndEmacs-Handbuch.

Antwort2

Erlaubt es einem nicht, M-x compileetwas Ähnliches zu tun? Es ermöglicht Ihnen, einen benutzerdefinierten Befehl einzugeben und auszuführen und dies dann beim nächsten Mal zu wiederholen ...

Nun, wahrscheinlich wird es Probleme mit interaktiven Befehlen geben (deshalb möchten Sie einen Begriff verwenden) und vielleicht auch mit einer dauerhaften wiederverwendbaren SSH-Verbindung (aber TRAMP könnte hier helfen: cd REMOTELOCATION; your_cmdkönnte funktionieren).

Sie können sich also zumindest compileden Quellcode ansehen, um zu erfahren, wie Puffer für ein solches Szenario verwaltet und Befehle ausgeführt werden.

verwandte Informationen