Ich verwende Emacs und M-xterm
als Terminal. Mein typischer Workflow sieht folgendermaßen aus:
- Code bearbeiten
- C-x ozum Terminalpuffer (oder C-x b
term[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 F4
ausgefü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 unterF3
F4
.emacs
EmacsWikiUndEmacs-Handbuch.
Antwort2
Erlaubt es einem nicht, M-x compile
etwas Ä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_cmd
könnte funktionieren).
Sie können sich also zumindest compile
den Quellcode ansehen, um zu erfahren, wie Puffer für ein solches Szenario verwaltet und Befehle ausgeführt werden.