Jak uruchomić poprzednie polecenie w powłoce emacsa?

47

Jestem w trybie terminalowym na Ubuntu i uruchamiam emacsa z 2 otwartymi buforami, jeden to plik ruby, a drugi to powłoka (otwarta przez wpisanie powłoki Mx), a kiedy przejdę do bufora powłoki, chcę aby uruchomić to samo polecenie, które wcześniej uruchomiłem. Zwykle po prostu uderzałbym strzałkę w górę w oknie terminala, ale w emacs po prostu ustawia kursor w górę o jedną linię.

Czy ktoś wie o naciśnięciu klawisza, aby uruchomić poprzednie polecenie powłoki z poziomu powłoki Emacsa?

Lidmith
źródło

Odpowiedzi:

63

M-p wykonuje pracę

vava
źródło
Dzięki! Trochę szukałem, ale nie mogłem go znaleźć.
Lidmith,
24

Oprócz tego M-pmożesz także użyć C-up, co uważam za lepsze. Uzupełniające się klucze M-nlub C-downdostaną następne polecenie w historii.

Prakash K
źródło
1
Ach, ty. To wydaje się bardziej naturalne.
Lidmith,
1
Chociaż nie zostało to postawione w początkowym pytaniu, muszę przyznać, że [C-up] i [C-down] nie działają w Emacsie przez terminal (PuTTY).
avp
1
Wydaje się również, że nie działa na moim komputerze Mac; C-up jest mapowany na funkcję specyficzną dla komputerów Mac.
amo
Dla mnie też C-upjest mapowany expose. I M-pwydaje mi się bardziej naturalny.
Indradhanush Gupta
5

Możesz również dodać to do pliku inicjującego emacs:

(define-key comint-mode-map (kbd "<up>") 'comint-previous-input)
(define-key comint-mode-map (kbd "<down>") 'comint-next-input)
thiagowfx
źródło
2

rozwiązanie thiagowfx jest dla mnie lepsze, ponieważ zwykle staram się unikać zależności kontekstowej. Aby jednak zadziałało, najpierw musiałem dodać tryb komend ładowania:

(progn(require 'comint)
(define-key comint-mode-map (kbd "<up>") 'comint-previous-input)
(define-key comint-mode-map (kbd "<down>") 'comint-next-input))
DeLorean88
źródło
0

Odpowiedź DeLorean88 zadziałała dla mnie, ale tylko z drugim zamkiem zamykającym w linii „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
źródło
Sprawdź ponownie swój plik. Drugi klucz definiujący powinien powodować błąd składniowy, ponieważ ostatni nawias zamykający nie jest dopasowywany przez pierwszy.
vfclists