*nvim-tree.lua* A file explorer written in lua Minimum version of neovim: 0.4.0 Author: Yazdani Kiyan ============================================================================== INTRODUCTION *nvim-tree-introduction* This file explorer doesn't work on windows and requires neovim `nightly` ============================================================================== QUICK START *nvim-tree-quickstart* open the tree with :LuaTreeToggle > nnoremap :LuaTreeToggle lua require 'tree'.toggle() < ============================================================================== COMMANDS *nvim-tree-commands* |:LuaTreeOpen| *:LuaTreeOpen* opens the tree |:LuaTreeClose| *:LuaTreeClose* closes the tree |:LuaTreeToggle| *:LuaTreeToggle* open or close the tree |:LuaTreeRefresh| *:LuaTreeRefresh* refresh the tree |:LuaTreeFindFile| *:LuaTreeFindFile* The command will change the cursor in the tree for the current bufname. It will also open the leafs of the tree leading to the file in the buffer (if you opened a file with something else than the LuaTree, like `fzf` or `:split`) |:LuaTreeClipboard| *:LuaTreeClipboard* Print clipboard content for both cut and copy ============================================================================== OPTIONS *nvim-tree-options* |g:lua_tree_width| *g:lua_tree_width* width of the window (default to 30) |g:lua_tree_side| *g:lua_tree_side* where the window will open (default to 'left') - 'left' or 'right' |g:lua_tree_ignore| *g:lua_tree_ignore* An array of strings that the tree won't load and display. useful to hide large data/cache folders. > example: let g:lua_tree_ignore = [ '.git', 'node_modules' ] |g:lua_tree_show_icons| *g:lua_tree_show_icons* Dictionnary, if your terminal or font doesn't support certain unicode character, the tree UI might be messed up. The following configuration can disable icons per type: > let g:lua_tree_show_icons = { \ 'git': 1, \ 'folders': 1, \ 'icons': 1 \} Can be one of `1` and `0` for each key. By default the tree will try to render the icons. The `icons` key can only work if `nvim-web-devicons` is installed and in your |runtimepath| (https://github.com/kyazdani42/nvim-web-devicons) |g:lua_tree_icons| *g:lua_tree_icons* You can set icons for: - The git status. - The default icon that shows when no icon is found for a file or if you are not using icons. - Symlinks. If an icon is not provided, the `default` icon is used. > let g:lua_tree_icons = { \ 'default': '', \ 'symlink': '', \ 'git': { \ 'unstaged': "✗", \ 'staged': "✓", \ 'unmerged': "", \ 'renamed': "➜", \ 'untracked': "★" \ }, \ 'folder': { \ 'default': "", \ 'open': "" \ } \ } |g:lua_tree_git_hl| *g:lua_tree_git_hl* You can enable file highlight for git attributes by setting this property. This can be used with or without the icons. |g:lua_tree_follow| *g:lua_tree_follow* Can be `0` or `1`. When `1`, will update the cursor to update to the correct location in the tree on |BufEnter|. Default is 0 |g:lua_tree_auto_open| *g:lua_tree_auto_open* Can be `0` or `1`. When `1`, will bind |VimEnter| to automatically open tree on startup if no files are specified. Default is 0 |g:lua_tree_auto_close| *g:lua_tree_auto_close* Can be `0` or `1`. When `1`, will bind |BufEnter| to automatically close the tree if it's the last window. Default is 0 |g:lua_tree_disable_keybindings| *g:lua_tree_disable_keybindings* Can be `0` or `1`. When `1`, will disable all keybindings by the plugin. |g:lua_tree_bindings| as well as default bindings will not take effect. Default is 0 |g:lua_tree_indent_markers| *g:lua_tree_indent_markers* Can be `0` or `1`. When `1`, will display indent markers when folders are open Default is 0 |g:lua_tree_hide_dotfiles| *g:lua_tree_hide_dotfiles* Can be `0` or `1`. When `1`, will hide dotfiles, files or folders which start with the `.` character. Default is 0 |g:lua_tree_root_folder_modifier| *g:lua_tree_root_folder_modifier* In what format to show root folder. See `:help filename-modifiers` for available options. Default is `:~` |g:lua_tree_tab_open| *g:lua_tree_tab_open* Can be 0 or 1. When 1, will open the tree when entering a new tab if the tree was previously open. Default is 0 ============================================================================== INFORMATIONS *nvim-tree-info* |KeyBindings| *nvim-tree-keybindings* - move around like in any vim buffer - '' on '..' will cd in the above directory - typing '' will cd in the directory under the cursor - type 'a' to add a file - type 'r' to rename a file - type 'x' to add/remove file/directory to cut clipboard - type 'c' to add/remove file/directory to copy clipboard - type 'p' to paste from clipboard. Cut clipboard has precedence over copy (will prompt for confirmation) - type 'd' to delete a file (will prompt for confirmation) - type ']c' to go to next git item - type '[c' to go to prev git item - if the file is a directory, '' will open the directory - otherwise it will open the file in the buffer near the tree - if the file is a symlink, '' will follow the symlink - '' will open the file in a vertical split - '' will open the file in a horizontal split - '' will open the file in a new tab - '' will open the file as a preview (keeps the cursor in the tree) - 'I' will toggle visibility of folders hidden via |g:lua_tree_ignore| - 'R' will refresh the tree - 'gx' opens the file with the `open` command on macos and `xdg-open` on linux. - Double left click acts like '' - Double right click acts like '' |g:lua_tree_bindings| *g:lua_tree_bindings* you can change default keybindings by defining this variable. default keybindings will be applied to undefined keys. > let g:lua_tree_bindings = { \ edit: ['', 'o'], // Multiple keys provided via list \ edit_vsplit: '', \ edit_split: '', \ edit_tab: '', \ cd: '', \ preview: '', \ create: 'a', \ remove: 'd', \ rename: 'r', \ cut: 'x', \ copy: 'c', \ paste: 'p', \ prev_git_item: '[c', \ next_git_item: ']c', \ } |Features| *nvim-tree-features* File icons with vim-devicons. Uses other type of icons so a good font support is recommended. If the tree renders weird glyphs, install the correct fonts. Syntax highlighting uses g:terminal_color_ from colorschemes, fallbacks to ugly colors otherwise. Git integration tells when a file is: - ✗ unstaged or folder is dirty - ✓ staged - ★ new file - ✓ ✗ partially staged - ✓ ★ new file staged - ✓ ★ ✗ new file staged and has unstaged modifications - ═ merging - ➜ renamed Mouse support defined in |KeyBindings| ============================================================================== HIGHLIGHT GROUPS *nvim-tree-highlight* |lua_tree_highlight| *lua_tree_highlight* All the following highlight groups can be configured by hand. It is not advised to colorize the background of these groups. Example (in your `init.vim`): > highlight LuaTreeSymlink guifg=blue gui=bold,underline < You should have 'termguicolors' enabled, otherwise, colors will not be applied. LuaTreeSymlink LuaTreeFolderName LuaTreeRootFolder LuaTreeFolderIcon LuaTreeExecFile LuaTreeSpecialFile LuaTreeImageFile LuaTreeMarkdownFile LuaTreeIndentMarker LuaTreeLicenseIcon LuaTreeYamlIcon LuaTreeTomlIcon LuaTreeGitignoreIcon LuaTreeJsonIcon LuaTreeLuaIcon LuaTreePythonIcon LuaTreeShellIcon LuaTreeJavascriptIcon LuaTreeCIcon LuaTreeReactIcon LuaTreeHtmlIcon LuaTreeRustIcon LuaTreeVimIcon LuaTreeTypescriptIcon LuaTreeGitDirty LuaTreeGitStaged LuaTreeGitMerge LuaTreeGitRenamed LuaTreeGitNew There are also links to normal bindings to style the tree itself. Normal EndOfBuffer CursorLine VertSplit CursorColumn There are also links for file highlight with git properties These all link to there Git equivalent LuaTreeFileDirty LuaTreeFileStaged LuaTreeFileMerge LuaTreeFileNew LuaTreeFileRenamed vim:tw=78:ts=8:noet:ft=help:norl: