¿Cómo ejecutar un comando anterior en un shell de Emacs?


9

Por supuesto, cuando estoy en la Terminal y presiono la tecla de flecha hacia arriba, va al comando anterior. Sin embargo, cuando presiono las M-xteclas y shellescribo, aparece un shell integrado en Emacs:

Shell en Emacs

Sin embargo, si escribo un comando y presiono hacia arriba, esto sucede:

Cuando presiono el botón arriba en Shell Emacs

¿Cómo vuelvo al último comando que escribí?


También puede subir con las teclas de navegación a la línea con el comando que desea ejecutar y presionar RET. Por supuesto C-upes mucho más fácil.
giordano

Respuestas:


19

La función que retrocede a través del historial de entrada, guardando la entrada. escomint-previous-input

Se ve obligada a C-up, M-p.



4

Puede usar helm-eshell-history para la selección interactiva del historial y reemplazar el original C-c C-l:

(require 'helm-eshell)

(add-hook 'eshell-mode-hook
          #'(lambda ()
              (define-key eshell-mode-map (kbd "M-l")  'helm-eshell-history)))

;; for shell-mode
(define-key shell-mode-map (kbd "C-c C-l") 'helm-comint-input-ring)

helm-eshell-history


3

Mis comandos favoritos para recorrer el historial de comandos de shell son comint-previous-matching-input-from-inputy comint-next-matching-input-from-input. Si el mensaje está vacío, se comportarán exactamente igual comint-previous-inputy comint-next-inputrecorrerán todos los elementos del historial. Sin embargo, si ha ingresado rake, por ejemplo, recorrerán su historial de comandos de shell desde los comandos que comienzan con rake.

Por defecto, estos están vinculados a C-c M-ry C-c M-srespectivamente, pero encuentro que no son ideales. Los estoy vinculando personalmente a M-TABy <M-S-tab>.


1

Otra posibilidad, si usa Icicles : Use C-c TAB(comando icicle-comint-command) para elegir un comando ingresado previamente con finalización (o ciclo).


Los carámbanos no se acercan a la consistencia y al nivel de soporte del timón.
RichieHH

0

Las cosas han cambiado un poco en Eshell, así que aquí está mi solución de trabajo actualizada para usar helm-eshell-history

   (use-package eshell
     :config
     (require 'em-hist)      
     (use-package eshell-git-prompt
       :config
       ;; the powerline prompt is best but I've no idea how to shorten it to the last directory.
       (eshell-git-prompt-use-theme 'powerline)
       (define-advice eshell-git-prompt-powerline-dir (:override () short)
         "Show only last directory."
         (file-name-nondirectory (directory-file-name default-directory))))
     :bind (:map eshell-hist-mode-map
                 ;; ("<down>" . 'next-line)
                 ;; ("<up>" . 'previous-line)
                 ;; ([remap eshell-previous-matching-input-from-input] . helm-eshell-history)
                 ([remap eshell-list-history] . helm-eshell-history)
                 ))
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.