emacsにneotreeを導入してみた


emacsにneotreeを導入してみたので紹介します。

設定

(use-package neotree
  :init
  (setq-default neo-keymap-style 'concise)
  :config
  (setq neo-smart-open t)
  (setq neo-create-file-auto-open t)
  (setq neo-theme (if (display-graphic-p) 'icons 'arrow))
  (bind-key [f8] 'neotree-toggle)
  (bind-key "RET" 'neotree-enter-hide neotree-mode-map)
  (bind-key "a" 'neotree-hidden-file-toggle neotree-mode-map)
  (bind-key "<left>" 'neotree-select-up-node neotree-mode-map)
  (bind-key "<right>" 'neotree-change-root neotree-mode-map))


;; Change neotree's font size
;; Tips from https://github.com/jaypei/emacs-neotree/issues/218
(defun neotree-text-scale ()
  "Text scale for neotree."
  (interactive)
  (text-scale-adjust 0)
  (text-scale-decrease 1)
  (message nil))
(add-hook 'neo-after-create-hook
      (lambda (_)
        (call-interactively 'neotree-text-scale)))

;; neotree enter hide
;; Tips from https://github.com/jaypei/emacs-neotree/issues/77
(defun neo-open-file-hide (full-path &optional arg)
  "Open file and hiding neotree.
The description of FULL-PATH & ARG is in `neotree-enter'."
  (neo-global--select-mru-window arg)
  (find-file full-path)
  (neotree-hide))

(defun neotree-enter-hide (&optional arg)
  "Neo-open-file-hide if file, Neo-open-dir if dir.
The description of ARG is in `neo-buffer--execute'."
  (interactive "P")
  (neo-buffer--execute arg 'neo-open-file-hide 'neo-open-dir))

アイコン対応にする

all-the-iconsをパッケージインストールして、(setq neo-theme (if (display-graphic-p) 'icons 'arrow)) を設定するだけで簡単に実現できました。

文字サイズを変更する

Githubのissuesボードの設定をそのままパクりました。
(text-scale-decrease 1) の数字を大きくするとより縮小サイズになります。

キーカスタマイズ

neotreeのデフォルトキーマップは、C-cをprefixとしていますが、(setq-default neo-keymap-style 'concise)を設定すると一部の機能がワンキー操作できるようになります。

key-bind コマンド
C neotree-change-root
c neotree-create-node
+ neotree-create-node
d neotree-delete-node
r neotree-rename-node
e neotree-enter

私の場合、diredの設定 と操作性を統一するために以下のキーバインドも追加設定しています。

  • a:隠しファイルの表示/非表示をトグル
  • left:一つ上のデレクトリへ移動
  • right:カーソル位置のデレクトリをルートとして再表示

ファイルを開くときはツリーを隠す

neotreeはSPCキーを押すことでカーソル上のファイルが別バッファーにプレビュー表示されます。また、RETキー押しすると表示された別バッファーがアクティブになり編集可能になります。

それぞれ使い分けて便利ですが、RET押しの場合には自動的にツリーが隠れてくれる方が私は好きなので、カスタマイズしてみました。と言ってもこれもパクリです。デレクトリ上でRETするとツリーを展開し、ファイル上でRETしたときだけツリーを隠す…という動作です。