Come si esegue il comando precedente nella shell emacs?


47

Sono in modalità terminale su Ubuntu e sto eseguendo emacs con 2 buffer aperti, uno è un file ruby ​​e l'altro è una shell (aperta digitando Mx shell) e quando passo al buffer della shell, voglio per eseguire lo stesso comando che ho eseguito prima. Normalmente vorrei semplicemente premere la freccia su in una finestra del terminale, ma in emacs, posiziona semplicemente il cursore su una riga.

Qualcuno conosce la sequenza di tasti per eseguire il comando shell precedente all'interno di una shell emacs?

Risposte:


63

M-p fa il lavoro


Grazie! Ho cercato un po ', ma non sono riuscito a trovarlo.
Lidmith,

24

Inoltre M-p, puoi anche usare C-up, che trovo preferibile. I tasti complementari M-no C-downti daranno il comando successivo nella storia.


1
Ah, amico. Sembra più naturale.
Lidmith,

1
Anche se non è stato posto nella domanda iniziale, devo ammettere che [C-up] e [C-down] non funzionano in Emacs tramite terminale (PuTTY).
av

1
Inoltre non sembra funzionare sul mio Mac; C-up è associato a una funzione specifica per Mac.
amo

Anche per me C-upè mappato expose. E mi M-psembra più naturale.
Indradhanush Gupta,

5

Puoi anche aggiungere questo al tuo file init di emacs:

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

2

la soluzione thiagowfx è preferibile per me, poiché di solito cerco di evitare la dipendenza dal contesto. Tuttavia, per funzionare, ho dovuto aggiungere prima il caricamento della modalità Comint:

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

0

La risposta di DeLorean88 ha funzionato per me, ma solo con una seconda parentesi di chiusura sulla riga "progn":

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

Controlla di nuovo il tuo file. La seconda chiave di definizione dovrebbe causare un errore di sintassi poiché l'ultima parentesi quadra di chiusura non corrisponde a una prima.
vfclists il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.