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?

Antworten:


63

M-p macht den Job


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.


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)

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))

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))

Ü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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.