Como você executa o comando anterior no shell emacs?


47

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 Mx shell), e quando alterno para o buffer do shell, desejo para executar o mesmo comando que eu executei antes. Normalmente, eu apenas pressionava a seta para cima em uma janela do terminal, mas no emacs, ele simplesmente coloca o cursor em uma linha.

Alguém conhece o pressionamento de tecla para executar o comando shell anterior a partir de um shell emacs?

Respostas:


63

M-p faz o trabalho


Obrigado! Eu procurei um pouco, mas não consegui encontrá-lo.
Lidmith

24

Além disso M-p, você também pode usar o C-upque eu acho preferível. As teclas complementares M-nou C-downvocê obterá o próximo comando na história.


1
Ah, ty. Isso parece mais natural.
Lidmith

1
Mesmo que não tenha sido colocado na pergunta inicial, tenho que admitir que [C-up] e [C-down] não funcionam no Emacs via terminal (PuTTY).
avp

1
Também não parece funcionar no meu Mac; O C-up é mapeado para uma função específica do Mac.
amo

Para mim também C-upé mapeado para expose. E M-pparece mais natural para mim.
Indradhanush Gupta

5

Você também pode adicionar isso ao seu arquivo de inicialização do emacs:

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

2

A solução thiagowfx é preferível a mim, pois geralmente tento evitar a dependência de contexto. No entanto, para funcionar, tive que adicionar o modo de comint de carregamento primeiro:

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

0

A resposta de DeLorean88 funcionou para mim, mas apenas com um segundo colchete 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))

Verifique seu arquivo novamente. A segunda chave de definição deve causar um erro de sintaxe, pois o último colchete não é correspondido por um primeiro.
vfclists
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.