以下は、節約cd
歴史とESHELLコマンドを提供b
し、f
その歴史をナビゲートします:
;;*--- track cd history ------------------------------------------------*/
(defvar-local eshell-hist-dirs nil)
(add-hook 'eshell-directory-change-hook
(defun eshell-update-hist-dir ()
(push (eshell/pwd) eshell-hist-dirs)
(setq eshell-hist-index 0)))
;;*--- navigate history ------------------------------------------------*/
(defvar-local eshell-hist-index 0)
(defun eshell-forward (n)
(unless eshell-hist-dirs
(user-error "eshell-hist-dirs is empty, cd a few times"))
(let ((dirs eshell-hist-dirs)
(index (+ eshell-hist-index n)))
(prog1 (eshell/cd (nth index dirs))
(setq eshell-hist-dirs dirs
eshell-hist-index index))))
(defun eshell/b ()
(eshell-forward 1))
(defun eshell/f ()
(eshell-forward -1))
ところで、eshellの組み込みcd
コマンドは、たとえば、cd -
最後のディレクトリ、cd -1
最後から2番目のディレクトリ、およびcd =tmp
を含む最後のディレクトリなど、履歴ディレクトリにジャンプするいくつかの方法をすでに提供していますtmp
。詳細については、(eshell)ビルトインを参照してください。