Comment lancez-vous la commande précédente dans le shell emacs?


47

Je suis en mode terminal sur Ubuntu et j'utilise emacs avec 2 mémoires tampons ouvertes, l'une est un fichier ruby, et l'autre est un shell (ouvert en tapant Mx shell), et lorsque je passe au tampon shell, je souhaite pour exécuter la même commande que j'ai exécutée auparavant. Normalement, je clique simplement sur la flèche vers le haut dans une fenêtre de terminal, mais dans emacs, le curseur se place tout simplement vers le haut d’une ligne.

Est-ce que quelqu'un sait que vous devez appuyer sur une touche pour exécuter la commande précédente à partir d'un shell emacs?

Réponses:


63

M-p Fait le travail


Merci! J'ai cherché un peu, mais je ne l'ai pas trouvé.
Lidmith

24

En plus de M-p, vous pouvez également utiliser C-up, ce que je trouve préférable. Les touches complémentaires M-nou C-downvous obtiendrez la prochaine commande de l’histoire.


1
Ah, ty. Cela semble plus naturel.
Lidmith

1
Même si cela n’a pas été posé dans la question initiale, je dois admettre que [C-up] et [C-down] ne fonctionnent pas dans Emacs via un terminal (PuTTY).
AVP

1
Cela ne semble pas non plus fonctionner sur mon Mac; C-up est associé à une fonction spécifique à Mac.
amo

Pour moi aussi C-upest mappé sur expose. Et M-pme semble plus naturel.
Indradhanush Gupta

5

Vous pouvez également ajouter ceci à votre fichier init emacs:

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

2

La solution thiagowfx m’est préférable, car j’essaie généralement d’éviter la dépendance au contexte. Cependant, pour que cela fonctionne, je devais d'abord ajouter le mode de chargement:

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

0

La réponse de DeLorean88 a fonctionné pour moi, mais uniquement avec un deuxième crochet de fermeture 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))

Vérifiez votre dossier à nouveau. La seconde define-key devrait provoquer une erreur de syntaxe car le dernier crochet de fermeture ne correspond pas à un premier.
vfclists
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.