Introduction
This layer sets up a file navigation and project explorer side-window via Treemacs.
Features
A detailed overview of the features of Treemacs is available in the Treemacs readme. In short, Treemacs offers:
- Simple and powerful navigation and ability to detail exactly how and where a file should be opened.
- Good looking icons.
- Display of multiple file trees organized as projects residing in a workspace.
- Ability to show tags contained in files. Tags are provided by Imenu, so nearly every filetype is supported.
- Mouse interface for single and double left clicks in line with modern GUI standards (clicking on an icon will also display the file’s tags).
- Location awareness: commands like find-file or magit-status will use the location of the node at point (with $HOME as fallback).
- Optional fontifying of files based on their git status.
- Optional collapsing of single-dir-child directories into one.
- Doing both asynchronously for an imperceptible performance cost.
- Optional follow-mode to automatically focus the currently selected file or tag.
- Optional filewatch-mode to automatically refresh the view after (and only after) changes to the shown filesystem.
Install
To use this layer, add treemacs to dotspacemacs-configuration-layers in your dotspacemacs file.
Key bindings
Global
Key binding | Description |
---|---|
M-0 | Selected the treemacs window. Actually selects window #10, which is always assigned to treemacs. |
SPC 0 | Open treemacs in the current directory. When not visiting a file use $HOME as fallback. With a prefix arg manually select the root instead. |
SPC f B | Find and select a bookmark. If it cannot be found rebuild view with the bookmark’s location as root. Also open the bookmark with a prefix arg. |
SPC f t | Hide/show existing treemacs buffer. Create one for the current directory if no buffer exists. |
SPC f T | Manually focus the treemacs view on the currently selected file. Not needed when treemacs-follow-mode is enabled. |
SPC f M-t | Manually focus the treemacs view on the currently selected file and tag. |
SPC p t | Hide/show existing treemacs buffer. Add the current project to treemacs if not already added. |
Inside Treemacs
Key binding | Description |
---|---|
? | Summon the helpful hydra to show you the treemacs keymap. |
M-j/M-n | Select next node at the same depth as currently selected node, if possible. |
j/n | Goto next line. |
k/p | Goto previous line. |
M-J/N | Go to the next line in next-window. |
M-K/P | Go to the previous line in next-window.. |
M-j/M-n | select next node at the same depth as currently selected node, if possible. |
M-k/M-p | Select previous node at the same depth as currently selected node, if possible. |
C-c C-p a | Select a new project to add to the treemacs workspace. |
C-c C-p p | Select a projectile project to add to the workspace. |
C-c C-p d | Remove project at point from the workspace. |
C-c C-p r | Rename project at point. |
w | Set a new value for the width of the treemacs window. |
TAB | Do what I mean (as defined in treemacs-TAB-actions-config). Prefers expanding nodes by default. |
RET | Do what I mean (as defined in treemacs-RET-actions-config). Prefers visiting nodes by default. |
mouse1 | Move point to clicked line |
2x mouse1 | Do what I mean (as defined in treemacs-doubleclick-actions-config). Behaves like RET by default. |
g/r/gr | Refresh and rebuild the treemacs buffer. |
d | Delete node at point. A delete action must always be confirmed. Directories are deleted recursively. |
cf | Create a file. |
cd | Create a directory. |
R | Rename the currently selected node. Reload buffers visiting renamed files or files in renamed directories. |
u | Select parent of selected node, if possible. |
q | Hide/show an existing treemacs buffer. |
Q | Kill the treemacs buffer. |
ov | Open current file or tag by vertically splitting next-window. |
oh | Open current file or tag by horizontally splitting next-window. |
oo | Open current file or tag, performing no split and using next-window directly. |
oaa | Open current file or tag, using ace-window to decide which window to open the file in. |
oah | Open current file or tag by horizontally splitting a window selected by ace-window. |
oav | Open current file or tag by vertically splitting a window selected by ace-window. |
ox | Open current file according to its mime type in an external application. Linux, Windows and macOS are supported. |
tf | Toggle treemacs-follow-mode. |
ta | Toggle treemacs-filewatch-mode. |
tg | Toggle git-mode. |
th | Toggle the hiding and displaying of dotfiles. |
tw | Toggle whether the treemacs buffer should have a fixed width. |
tv | Toggle the hiding and displaying of dotfiles. |
yr | Copy the absolute path of the nearest project node at point. |
yy | Copy the absolute path of the node at point. |