48 votes

Comment exécuter la commande précédente dans emacs Shell ?

Je suis en mode terminal sur Ubuntu, et je lance emacs avec 2 buffers ouverts, l'un est un fichier ruby, et l'autre est un Shell (ouvert en tapant M-x Shell ), et quand je passe au buffer Shell, je veux exécuter la même commande que celle que j'ai exécutée avant. Je devrais normalement appuyer sur la flèche vers le haut dans une fenêtre de terminal, mais dans emacs, cela fait simplement remonter le curseur d'une ligne.

Quelqu'un connaît-il une touche permettant d'exécuter la commande Shell précédente à partir d'un Shell emacs ?

64voto

vava Points 5738

M-p fait le travail

26voto

Sato Points 41

En plus de M-p Vous pouvez également utiliser C-up ce que je préfère. Les clés complémentaires M-n o C-down vous permettra d'accéder à la commande suivante dans l'histoire.

5voto

JMB1304 Points 21

Vous pouvez également ajouter ceci au fichier d'initialisation d'emacs :

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

2voto

DeLorean88 Points 141

thiagowfx est préférable pour moi, car j'essaie généralement d'éviter la dépendance à l'égard du contexte. Cependant, pour que cela fonctionne, je devais d'abord ajouter le mode de chargement comint :

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

0voto

Kevin Bartlett Points 1

La réponse de DeLorean88 a fonctionné pour moi, mais seulement avec une deuxième parenthèse fermante sur la ligne "progn" :

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

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X