¿Cómo ejecutas el comando anterior en emacs shell?


47

Estoy en modo terminal en Ubuntu, y estoy ejecutando emacs con 2 buffers abiertos, uno es un archivo ruby ​​y el otro es un shell (abierto escribiendo Mx shell), y cuando cambio al buffer del shell, quiero para ejecutar el mismo comando que ejecuté antes. Normalmente presionaría la flecha hacia arriba en una ventana de terminal, pero en emacs, simplemente coloca el cursor en una línea.

¿Alguien sabe de la pulsación de tecla para ejecutar el comando de shell anterior desde un shell de emacs?

Respuestas:


63

M-p hace el trabajo


¡Gracias! Busqué un poco, pero no pude encontrarlo.
Lidmith

24

Además de M-p, también puede usar C-up, que me parece preferible. Las teclas complementarias M-no le C-downdarán el siguiente comando en la historia.


1
Ah, ty. Eso parece más natural.
Lidmith

1
Aunque no se incluyó en la pregunta inicial, debo admitir que [C-up] y [C-down] no funcionan en Emacs a través de la terminal (PuTTY).
avp

1
Tampoco parece funcionar en mi Mac; C-up se asigna a una función específica de Mac.
amo

Para mí también C-upestá asignado a expose. Y se M-psiente más natural para mí.
Indradhanush Gupta

5

También puede agregar esto a su archivo de inicio de emacs:

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

2

La solución thiagowfx es preferible para mí, ya que generalmente trato de evitar la dependencia del contexto. Sin embargo, para que funcione, primero tuve que agregar el modo de carga de comint:

(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 respuesta de DeLorean88 funcionó para mí, pero solo con un segundo corchete de cierre en la línea "progn":

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

Revise su archivo nuevamente. La segunda clave de definición debería causar un error de sintaxis ya que el último paréntesis de cierre no coincide con el primero.
vfclists
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.