回答:
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)
シェルコマンド履歴を循環するための私のお気に入りのコマンドは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>
ます。
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)
))
RET
。もちろんC-up
、はるかに簡単です。