Como você executa o comando anterior no shell do emacs?

42

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?

    
por Lidmith 11.05.2010 / 07:14

5 respostas

58

M-p faz o trabalho

    
por 11.05.2010 / 07:30
23

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.

    
por 12.05.2010 / 05:48
5

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)
    
por 26.08.2014 / 02:30
2
A solução

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))
    
por 21.01.2015 / 15:02
0

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))
    
por 30.11.2016 / 00:09