M-p
faz o trabalho
Estou no modo terminal no Ubuntu, e estou executando o emacs com 2 buffers abertos, um é um arquivo ruby e o outro é um shell (aberto digitando shell Mx) e quando eu alterno para o buffer do shell , Eu quero executar o mesmo comando que eu corri antes. Eu normalmente apenas pressionava a seta para cima em uma janela de terminal, mas no emacs, simplesmente coloca o cursor em uma linha.
Alguém sabe do pressionamento de tecla para executar o comando shell anterior de dentro de um shell do emacs?
Além de M-p , você também pode usar C-up , o que eu acho preferível. As chaves complementares M-n ou C-down darão a você o próximo comando no histórico.
Você também pode adicionar isto ao seu arquivo init do emacs:
(define-key comint-mode-map (kbd "<up>") 'comint-previous-input)
(define-key comint-mode-map (kbd "<down>") 'comint-next-input)
thiagowfx é preferível a mim, já que eu geralmente tento evitar a dependência do contexto. No entanto, para que funcione, tive que adicionar primeiro o modo comint:
(progn(require 'comint)
(define-key comint-mode-map (kbd "<up>") 'comint-previous-input)
(define-key comint-mode-map (kbd "<down>") 'comint-next-input))
A resposta de DeLorean88 funcionou para mim, mas apenas com um segundo colchete de fechamento na linha "progn":
(progn(require 'comint))
(define-key comint-mode-map (kbd "<up>") 'comint-previous-input)
(define-key comint-mode-map (kbd "<down>") 'comint-next-input))