Emacsシェルで以前のコマンドを実行するにはどうすればよいですか?


9

もちろん、ターミナルにいるときに上矢印キーを押すと、前のコマンドに移動します。しかし、M-xキーを押してタイプshellすると、Emacsに統合シェルが表示されます。

Emacsのシェル

ただし、コマンドを入力して押し上げると、次のようになります。

Shell Emacsでupボタンを押すと

入力した最後のコマンドに戻るにはどうすればよいですか?


ナビゲーションキーを使用して、実行するコマンドを含む行に移動し、を押すこともできますRET。もちろんC-up、はるかに簡単です。
giordano 2014年

回答:


19

入力履歴を逆方向に循環して入力を保存する関数ですcomint-previous-input

それはにバインドされC-upM-p



4

helm-eshell-historyを使用してインタラクティブな履歴を選択し、オリジナルを置き換えることができます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

シェルコマンド履歴を循環するための私のお気に入りのコマンドはcomint-previous-matching-input-from-inputおよびcomint-next-matching-input-from-inputです。プロンプトが空の場合は、すべての履歴項目comint-previous-inputとまったく同じようにcomint-next-input循環します。rakeたとえば、を入力した場合でも、で始まるコマンドのシェルコマンド履歴を循環しますrake

デフォルトでは、これらはそれぞれにバインドされC-c M-rていC-c M-sますが、理想的ではないことがわかりました。私はそれらをM-TABとに個人的に拘束してい<M-S-tab>ます。


1

Iciclesを使用する場合の別の可能性:C-c TAB(command icicle-comint-command)を使用して、以前に入力されたコマンドを完了(または循環)で選択します。


つららは、ヘルムの一貫性とサポートレベルに近づきません。
RichieHH

0

Eshellで状況が少し変更されたので、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)
                 ))
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.