helm で eshell が便利

helm の readme にもありますが
eshell の補完で helm を使うと便利です。
anything にもあったかもしれません。


普段のコマンドとパスの補完は auto-complete でして、
こったコマンドの履歴や一覧から補完候補を選びたい時は helm を使います。


auto-complete を使う部分

;; eshell での補完に auto-complete.el を使う
(require 'pcomplete)
(add-to-list 'ac-modes 'eshell-mode)
(ac-define-source pcomplete
  '((candidates . pcomplete-completions)))
(defun my-ac-eshell-mode ()
  (setq ac-sources
        '(ac-source-pcomplete
          ac-source-filename
          ac-source-files-in-current-dir
          ac-source-words-in-buffer
          ac-source-dictionary)))
(add-hook 'eshell-mode-hook
          (lambda ()
            (my-ac-eshell-mode)
            (define-key eshell-mode-map (kbd "C-i") 'auto-complete)
            (define-key eshell-mode-map [(tab)] 'auto-complete)))


helm を使う部分

;; helm で履歴から入力
(add-hook 'eshell-mode-hook
          #'(lambda ()
              (define-key eshell-mode-map
                (kbd "M-p")
                'helm-eshell-history)))
;; helm で補完
(add-hook 'eshell-mode-hook
          #'(lambda ()
              (define-key eshell-mode-map
                (kbd "M-n")
                'helm-esh-pcomplete)))


普段の補完は TAB を使って auto-complete 、
途中まで入力して一覧から補完したい時は M-n で helm-esh-pcomplete 、
途中まで入力した内容から履歴をたどりたい時は M-p で helm-eshell-history 。


M-n と M-p は適当感あるので別のキーに変更したい。


eshell の face (色) が気にいらない人はテーマで

;; eshell
(eshell-ls-executable ((t (:background ,"#色" :foreground ,"#色"))))
(eshell-prompt ((t (:background ,"#色" :foreground ,"#色"))))

のように変更すると良いのではないでしょうか。


キャプチャも撮ったけど
なぜかはてなブログにアップロード完了しないのではれませんでした。。