設定
(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したときだけツリーを隠す…という動作です。