Wie führt man den vorherigen Befehl in der Emacs-Shell aus?

47

Ich bin im Terminal-Modus auf Ubuntu und starte Emacs mit 2 offenen Puffern, einer ist eine Ruby-Datei und der andere ist eine Shell (geöffnet durch Eingabe von Mx-Shell), und wenn ich zum Shell-Puffer wechsle, möchte ich den gleichen Befehl ausführen, den ich zuvor ausgeführt habe. Normalerweise drücke ich in einem Terminalfenster einfach den Aufwärtspfeil, aber in Emacs wird der Cursor einfach um eine Zeile nach oben bewegt.

Kennt jemand Tastenanschläge, um den vorherigen Shell-Befehl in einer Emacs-Shell auszuführen?

Lidmith
quelle

Antworten:

63

M-p macht den Job

vava
quelle
Vielen Dank! Ich suchte ein bisschen, konnte es aber nicht finden.
Lidmith
24

Darüber hinaus M-pkönnen Sie auch verwenden C-up, was ich vorzuziehen finde. Mit den Zusatztasten M-noder C-downerhalten Sie den nächsten Befehl in der Geschichte.

Prakash K
quelle
1
Ah, ty. Das scheint natürlicher.
Lidmith
1
Auch wenn es nicht in der ersten Frage gestellt wurde, muss ich zugeben, dass [C-up] und [C-down] in Emacs nicht über Terminal (PuTTY) funktionieren.
Avp
1
Es scheint auch nicht auf meinem Mac zu funktionieren; C-up ist einer Mac-spezifischen Funktion zugeordnet.
Amo
Auch für mich C-upist gemappt expose. Und M-pfühlt sich für mich natürlicher an.
Indradhanush Gupta
5

Sie können dies auch zu Ihrer emacs init-Datei hinzufügen:

(define-key comint-mode-map (kbd "<up>") 'comint-previous-input)
(define-key comint-mode-map (kbd "<down>") 'comint-next-input)
thiagowfx
quelle
2

Die Lösung von thiagowfx ist mir vorzuziehen, da ich normalerweise versuche, Kontextabhängigkeiten zu vermeiden. Damit dies jedoch funktioniert, musste ich zuerst den Lademodus hinzufügen:

(progn(require 'comint)
(define-key comint-mode-map (kbd "<up>") 'comint-previous-input)
(define-key comint-mode-map (kbd "<down>") 'comint-next-input))
DeLorean88
quelle
0

Die Antwort von DeLorean88 hat bei mir funktioniert, jedoch nur mit einer zweiten schließenden Klammer in der Zeile "progn":

(progn(require 'comint))
(define-key comint-mode-map (kbd "<up>") 'comint-previous-input)
(define-key comint-mode-map (kbd "<down>") 'comint-next-input))
Kevin Bartlett
quelle
Überprüfen Sie Ihre Datei erneut. Der zweite Schlüssel sollte einen Syntaxfehler verursachen, da die letzte schließende Klammer nicht mit der ersten übereinstimmt.
Vfclists