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. |