I am in terminal mode on Ubuntu, and I'm running emacs with 2 buffers open, one is a ruby file, and the other is a shell (opened by typing M-x shell ), and when I switch to the shell buffer, I want to run the same command that I ran before. I would normally just hit the up arrow in a terminal window, but in emacs, it simply puts the cursor up one line.

Does anyone know of keystroke to run the previous shell command from within an emacs shell?


M-p does the job

  • Thanks! I searched a bit, but couldn't find it. – Lidmith May 11 '10 at 5:35

In addition to M-p, you can also use C-up, which I find preferable. The complementary keys M-n or C-down will get you the next command in history.

  • 1
    Ah, ty. That seems more natural. – Lidmith May 12 '10 at 17:56
  • 1
    Even though it was not put in the initial question, I have to admit that [C-up] and [C-down] do not work in Emacs via terminal (PuTTY). – avp Jun 13 '14 at 9:01
  • 1
    It also doesn't seem to work on my Mac; C-up is mapped to a Mac-specific function. – amo Jul 22 '14 at 18:23
  • For me too C-up is mapped to expose. And M-p feels more natural to me. – Indradhanush Gupta Oct 8 '14 at 9:32

You might also add this to your emacs init file:

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

thiagowfx solution is preferable to me, since I usually try to avoid context-dependency. However, in order for it to work I had to add loading comint mode first:

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

DeLorean88's answer worked for me, but only with a second closing bracket on the "progn" line:

(progn(require 'comint))
(define-key comint-mode-map (kbd "<up>") 'comint-previous-input)
(define-key comint-mode-map (kbd "<down>") 'comint-next-input))
  • Check your file again. The second define-key should cause a syntax error as the last closing bracket is not matched by a first. – vfclists Aug 26 '17 at 7:16

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.