327 lines
9.3 KiB
Plaintext
327 lines
9.3 KiB
Plaintext
*nvim-tree.lua* A file explorer written in lua
|
|
|
|
Minimum version of neovim: 0.4.0
|
|
|
|
Author: Yazdani Kiyan <yazdani.kiyan@protonmail.com>
|
|
|
|
==============================================================================
|
|
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 :NvimTreeToggle
|
|
>
|
|
nnoremap <C-n> :NvimTreeToggle<CR>
|
|
lua require 'nvim-tree'.toggle()
|
|
<
|
|
|
|
==============================================================================
|
|
COMMANDS *nvim-tree-commands*
|
|
|
|
|:NvimTreeOpen| *:NvimTreeOpen*
|
|
|
|
opens the tree
|
|
|
|
|:NvimTreeClose| *:NvimTreeClose*
|
|
|
|
closes the tree
|
|
|
|
|:NvimTreeToggle| *:NvimTreeToggle*
|
|
|
|
open or close the tree
|
|
|
|
|:NvimTreeRefresh| *:NvimTreeRefresh*
|
|
|
|
refresh the tree
|
|
|
|
|:NvimTreeFindFile| *:NvimTreeFindFile*
|
|
|
|
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 NvimTree, like `fzf` or
|
|
`:split`)
|
|
|
|
|:NvimTreeClipboard| *:NvimTreeClipboard*
|
|
|
|
Print clipboard content for both cut and copy
|
|
|
|
==============================================================================
|
|
OPTIONS *nvim-tree-options*
|
|
|
|
|g:nvim_tree_width| *g:nvim_tree_width*
|
|
|
|
width of the window (default to 30)
|
|
|
|
|g:nvim_tree_side| *g:nvim_tree_side*
|
|
|
|
where the window will open (default to 'left')
|
|
- 'left' or 'right'
|
|
|
|
|g:nvim_tree_ignore| *g:nvim_tree_ignore*
|
|
|
|
An array of strings that the tree won't load and display.
|
|
useful to hide large data/cache folders.
|
|
>
|
|
example: let g:nvim_tree_ignore = [ '.git', 'node_modules' ]
|
|
|
|
|g:nvim_tree_show_icons| *g:nvim_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:nvim_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:nvim_tree_icons| *g:nvim_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:nvim_tree_icons = {
|
|
\ 'default': '',
|
|
\ 'symlink': '',
|
|
\ 'git': {
|
|
\ 'unstaged': "✗",
|
|
\ 'staged': "✓",
|
|
\ 'unmerged': "",
|
|
\ 'renamed': "➜",
|
|
\ 'untracked': "★"
|
|
\ },
|
|
\ 'folder': {
|
|
\ 'default': "",
|
|
\ 'open': "",
|
|
\ 'symlink': "",
|
|
\ }
|
|
\ }
|
|
|
|
|g:nvim_tree_git_hl| *g:nvim_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:nvim_tree_follow| *g:nvim_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:nvim_tree_auto_open| *g:nvim_tree_auto_open*
|
|
|
|
Can be `0` or `1`. When `1`, will open the tree when the package is loaded.
|
|
It's not relying on VimEnter anymore.
|
|
Default is 0
|
|
|
|
|g:nvim_tree_auto_close| *g:nvim_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:nvim_tree_quit_on_open| *g:nvim_tree_quit_on_open*
|
|
|
|
Can be `0` or `1`. When `1`, will close the tree when a file is opened.
|
|
Applies to: `preview`, `edit`, `edit_vsplit`, `edit_split`, `edit_tab`.
|
|
Default is 0
|
|
|
|
|g:nvim_tree_disable_keybindings| *g:nvim_tree_disable_keybindings*
|
|
|
|
Can be `0` or `1`. When `1`, will disable all keybindings by the plugin.
|
|
|g:nvim_tree_bindings| as well as default bindings will not take effect.
|
|
Default is 0
|
|
|
|
|g:nvim_tree_indent_markers| *g:nvim_tree_indent_markers*
|
|
|
|
Can be `0` or `1`. When `1`, will display indent markers when folders are open
|
|
Default is 0
|
|
|
|
|g:nvim_tree_hide_dotfiles| *g:nvim_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:nvim_tree_root_folder_modifier| *g:nvim_tree_root_folder_modifier*
|
|
|
|
In what format to show root folder. See `:help filename-modifiers` for
|
|
available options.
|
|
Default is `:~`
|
|
|
|
|g:nvim_tree_tab_open| *g:nvim_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
|
|
|
|
|g:nvim_tree_width_allow_resize| *g:nvim_tree_width_allow_resize*
|
|
|
|
Can be 0 or 1. When 1, it will not resize the tree to it's original width
|
|
when opening a new file.
|
|
Default is 0
|
|
|
|
==============================================================================
|
|
INFORMATIONS *nvim-tree-info*
|
|
|
|
|KeyBindings| *nvim-tree-keybindings*
|
|
|
|
- move around like in any vim buffer
|
|
- '<CR>' on '..' will cd in the above directory
|
|
- typing '<C-]>' will cd in the directory under the cursor
|
|
- typing '<BS>' will close current opened directory or parent
|
|
|
|
- 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
|
|
- type '-' to navigate up one directory
|
|
|
|
- if the file is a directory, '<CR>' will open the directory
|
|
- otherwise it will open the file in the buffer near the tree
|
|
- if the file is a symlink, '<CR>' will follow the symlink
|
|
- '<C-v>' will open the file in a vertical split
|
|
- '<C-x>' will open the file in a horizontal split
|
|
- '<C-t>' will open the file in a new tab
|
|
- '<Tab>' will open the file as a preview (keeps the cursor in the tree)
|
|
- 'I' will toggle visibility of folders hidden via |g:nvim_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 '<CR>'
|
|
- Double right click acts like '<C-]>'
|
|
|
|
|g:nvim_tree_bindings| *g:nvim_tree_bindings*
|
|
|
|
you can change default keybindings by defining this variable.
|
|
default keybindings will be applied to undefined keys.
|
|
>
|
|
let g:nvim_tree_bindings = {
|
|
\ edit: ['<cr>', 'o'], // Multiple keys provided via list
|
|
\ edit_vsplit: '<c-v>',
|
|
\ edit_split: '<c-x>',
|
|
\ edit_tab: '<c-t>',
|
|
\ close_node: ['<s-cr>', '<bs>'],
|
|
\ cd: '<c-]>',
|
|
\ preview: '<Tab>',
|
|
\ create: 'a',
|
|
\ remove: 'd',
|
|
\ rename: 'r',
|
|
\ cut: 'x',
|
|
\ copy: 'c',
|
|
\ paste: 'p',
|
|
\ prev_git_item: '[c',
|
|
\ next_git_item: ']c',
|
|
\ dir_up: '-',
|
|
\ }
|
|
|
|
|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*
|
|
|
|
|nvim_tree_highlight| *nvim_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 NvimTreeSymlink guifg=blue gui=bold,underline
|
|
<
|
|
You should have 'termguicolors' enabled, otherwise, colors will not be
|
|
applied.
|
|
|
|
NvimTreeSymlink
|
|
NvimTreeFolderName
|
|
NvimTreeRootFolder
|
|
NvimTreeFolderIcon
|
|
NvimTreeExecFile
|
|
NvimTreeSpecialFile
|
|
NvimTreeImageFile
|
|
NvimTreeMarkdownFile
|
|
NvimTreeIndentMarker
|
|
|
|
NvimTreeLicenseIcon
|
|
NvimTreeYamlIcon
|
|
NvimTreeTomlIcon
|
|
NvimTreeGitignoreIcon
|
|
NvimTreeJsonIcon
|
|
|
|
NvimTreeLuaIcon
|
|
NvimTreePythonIcon
|
|
NvimTreeShellIcon
|
|
NvimTreeJavascriptIcon
|
|
NvimTreeCIcon
|
|
NvimTreeReactIcon
|
|
NvimTreeHtmlIcon
|
|
NvimTreeRustIcon
|
|
NvimTreeVimIcon
|
|
NvimTreeTypescriptIcon
|
|
|
|
NvimTreeGitDirty
|
|
NvimTreeGitStaged
|
|
NvimTreeGitMerge
|
|
NvimTreeGitRenamed
|
|
NvimTreeGitNew
|
|
|
|
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
|
|
|
|
NvimTreeFileDirty
|
|
NvimTreeFileStaged
|
|
NvimTreeFileMerge
|
|
NvimTreeFileNew
|
|
NvimTreeFileRenamed
|
|
|
|
vim:tw=78:ts=8:noet:ft=help:norl:
|