Como executar um comando anterior em um shell Emacs?

9

É claro que quando estou no Terminal e pressiono a tecla de seta para cima, ele passa para o comando anterior. No entanto, quando eu clico nas M-xteclas e digito, shellum shell integrado aparece no Emacs:

Shell no Emacs

No entanto, se eu digitar um comando e pressionar, isso acontece:

Quando pressiono o botão para cima no Shell Emacs

Como faço para voltar ao último comando digitado?

Luke Shimkus
fonte
Você também pode subir com as teclas de navegação até a linha com o comando que deseja executar e pressionar RET. Claro que C-upé muito mais fácil.
Giordano

Respostas:

19

A função que retrocede no histórico de entrada, salvando a entrada. écomint-previous-input

Ele é obrigado a C-up, M-p.

caisah
fonte
4

Você pode usar helm-eshell-history para a seleção interativa do histórico e substituir o 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

Tu Do
fonte
3

Meus comandos favoritos para percorrer o histórico de comandos do shell são comint-previous-matching-input-from-inpute comint-next-matching-input-from-input. Se o prompt estiver vazio, eles se comportarão exatamente como comint-previous-inpute comint-next-inputpercorrerão todos os itens do histórico. Embora se você tiver digitado rake, por exemplo, eles percorrerão o histórico de comandos do shell, começando com rake.

Por padrão, eles estão vinculados C-c M-re C-c M-srespectivamente, mas acho que não são ideais. Eu pessoalmente estou lhes ligação a M-TABe <M-S-tab>.

waymondo
fonte
1

Outra possibilidade, se você usar Sincelos : Use C-c TAB(comando icicle-comint-command) para escolher um comando digitado anteriormente com conclusão (ou ciclo).

Desenhou
fonte
Sincelos não se aproximam do nível de consistência e suporte do leme.
RichieHH 13/01
0

As coisas mudaram um pouco em Eshell, então aqui está minha solução de trabalho atualizada 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)
                 ))
RichieHH
fonte