Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

A file explorer tree for neovim written in lua

License

NotificationsYou must be signed in to change notification settings

robomillo/nvim-tree.lua

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CI

Notice

This plugin requiresneovim >=0.6.0.

If you have issues since the recent setup migration, check outthis guide

Install

Install withvim-plug:

" requiresPlug'kyazdani42/nvim-web-devicons'" for file iconsPlug'kyazdani42/nvim-tree.lua'

Install withpacker:

use {'kyazdani42/nvim-tree.lua',requires= {'kyazdani42/nvim-web-devicons',-- optional, for file icon    },config=function()require'nvim-tree'.setup {}end}

Setup

Options are currently being migrated into the setup function, you need to runrequire'nvim-tree'.setup() in your personal configurations.Setup should be run in a lua file or in a lua heredoc (:help lua-heredoc) if using in a vim file.Note that options under theg: command should be setBEFORE running the setup function.These are being migrated to the setup function incrementally, checkthis issue if you encounter any problems related to configs not working after update.

" vimrcletg:nvim_tree_indent_markers=1"0 by default, this option shows indent markers when folders are openletg:nvim_tree_git_hl=1"0 by default, will enable file highlight for git attributes (can be used without the icons).letg:nvim_tree_highlight_opened_files=1"0 by default, will enable folder and file icon highlight for opened files/directories.letg:nvim_tree_root_folder_modifier=':~'"This is the default. See :help filename-modifiers for more optionsletg:nvim_tree_add_trailing=1"0 by default, append a trailing slash to folder namesletg:nvim_tree_group_empty=1" 0 by default, compact folders that only contain a single folder into one node in the file treeletg:nvim_tree_icon_padding=''"one space by default, used for rendering the space between the icon and the filename. Use with caution, it could break rendering if you set an empty string depending on your font.letg:nvim_tree_symlink_arrow=' >>'" defaults to ' ➛ '. used as a separator between symlinks' source and target.letg:nvim_tree_respect_buf_cwd=1"0 by default, will change cwd of nvim-tree to that of new buffer's when opening nvim-tree.letg:nvim_tree_create_in_closed_folder=1"0 by default, When creating files, sets the path of a file when cursor is on a closed folder to the parent folder when 0, and inside the folder when 1.letg:nvim_tree_special_files= {'README.md':1,'Makefile':1,'MAKEFILE':1 }" List of filenames that gets highlighted with NvimTreeSpecialFileletg:nvim_tree_show_icons= {\'git':1,\'folders':0,\'files':0,\'folder_arrows':0,\}"If 0, do not show the icons for one of 'git' 'folder' and 'files'"1 by default, notice that if 'files' is 1, it will only display"if nvim-web-devicons is installed and on your runtimepath."if folder is 1, you can also tell folder_arrows 1 to show small arrows next to the folder icons."but this will not work when you set indent_markers (because of UI conflict)" default will show icon by default if no icon is provided" default shows no icon by defaultletg:nvim_tree_icons= {\'default':"",\'symlink':"",\'git': {\'unstaged':"",\'staged':"",\'unmerged':"",\'renamed':"",\'untracked':"",\'deleted':"",\'ignored':""\  },\'folder': {\'arrow_open':"",\'arrow_closed':"",\'default':"",\'open':"",\'empty':"",\'empty_open':"",\'symlink':"",\'symlink_open':"",\  }\}nnoremap<C-n>:NvimTreeToggle<CR>nnoremap<leader>r :NvimTreeRefresh<CR>nnoremap<leader>n :NvimTreeFindFile<CR>" More available functions:" NvimTreeOpen" NvimTreeClose" NvimTreeFocus" NvimTreeFindFileToggle" NvimTreeResize" NvimTreeCollapse" NvimTreeCollapseKeepBufferssettermguicolors" this variable must be enabled for colors to be applied properly" a list of groups can be found at `:help nvim_tree_highlight`highlight NvimTreeFolderIcon guibg=blue
-- init.lua-- empty setup using defaults: add your own optionsrequire'nvim-tree'.setup {}-- OR-- setup with all defaults-- each of these are documented in `:help nvim-tree.OPTION_NAME`require'nvim-tree'.setup {-- BEGIN_DEFAULT_OPTSauto_reload_on_write=true,disable_netrw=false,hide_root_folder=false,hijack_cursor=false,hijack_netrw=true,hijack_unnamed_buffer_when_opening=false,ignore_buffer_on_setup=false,open_on_setup=false,open_on_tab=false,sort_by="name",update_cwd=false,view= {width=30,height=30,side="left",preserve_window_proportions=false,number=false,relativenumber=false,signcolumn="yes",mappings= {custom_only=false,list= {-- user mappings go here      },    },  },hijack_directories= {enable=true,auto_open=true,  },update_focused_file= {enable=false,update_cwd=false,ignore_list= {},  },ignore_ft_on_setup= {},system_open= {cmd=nil,args= {},  },diagnostics= {enable=false,show_on_dirs=false,icons= {hint="",info="",warning="",error="",    },  },filters= {dotfiles=false,custom= {},exclude= {},  },git= {enable=true,ignore=true,timeout=400,  },actions= {change_dir= {enable=true,global=false,    },open_file= {quit_on_open=false,resize_window=false,window_picker= {enable=true,chars="ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890",exclude= {filetype= {"notify","packer","qf","diff","fugitive","fugitiveblame"},buftype= {"nofile","terminal","help"},        },      },    },  },trash= {cmd="trash",require_confirm=true,  },log= {enable=false,truncate=false,types= {all=false,config=false,copy_paste=false,git=false,profile=false,    },  },}-- END_DEFAULT_OPTS

KeyBindings

Default actions

  • <CR> oro on the root folder will cd in the above directory
  • <C-]> will cd in the directory under the cursor
  • <BS> will close current opened directory or parent
  • typea to add a file. Adding a directory requires leaving a leading/ at the end of the path.

    you can add multiple directories by doing foo/bar/baz/f and it will add foo bar and baz directories and f as a file

  • typer to rename a file
  • type<C-r> to rename a file and omit the filename on input
  • typex to add/remove file/directory to cut clipboard
  • typec to add/remove file/directory to copy clipboard
  • typey will copy name to system clipboard
  • typeY will copy relative path to system clipboard
  • typegy will copy absolute path to system clipboard
  • typep to paste from clipboard. Cut clipboard has precedence over copy (will prompt for confirmation)
  • typed to delete a file (will prompt for confirmation)
  • typeD to trash a file (configured in setup())
  • type]c to go to next git item
  • type[c to go to prev git item
  • type- to navigate up to the parent directory of the current file/directory
  • types to open a file with default system application or a folder with default file manager (if you want to change the command used to do it see:h nvim-tree.setup undersystem_open)
  • 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 (if the target is a file)
  • <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 hidden folders / files
  • H will toggle visibility of dotfiles (files/folders starting with a.)
  • R will refresh the tree
  • Double left click acts like<CR>
  • Double right click acts like<C-]>
  • W will collapse the whole tree
  • S will prompt the user to enter a path and then expands the tree to match the path
  • . will enter vim command mode with the file the cursor is on
  • C-k will toggle a popup with file infos about the file under the cursor

Settings

Thelist option inview.mappings.list is a table of

-- key can be either a string or a table of string (lhs)-- action is the name of the action, set to `""` to remove default action-- action_cb is the function that will be called, it receives the node as a parameter. Optional for default actions-- mode is normal by defaultlocaltree_cb=require'nvim-tree.config'.nvim_tree_callbacklocalfunctionprint_node_path(node) {print(node.absolute_path)}locallist= {  {key= {"<CR>","o"},action="edit",mode="n"},  {key="p",action="print_path",action_cb=print_node_path },  {key="s",cb=tree_cb("vsplit") },--tree_cb and the cb property are deprecated  {key="<2-RightMouse>",action=""},-- will remove default cd action}

These are the default bindings:

-- default mappingslocallist= {  {key= {"<CR>","o","<2-LeftMouse>"},action="edit"},  {key="<C-e>",action="edit_in_place"},  {key= {"O"},action="edit_no_picker"},  {key= {"<2-RightMouse>","<C-]>"},action="cd"},  {key="<C-v>",action="vsplit"},  {key="<C-x>",action="split"},  {key="<C-t>",action="tabnew"},  {key="<",action="prev_sibling"},  {key=">",action="next_sibling"},  {key="P",action="parent_node"},  {key="<BS>",action="close_node"},  {key="<Tab>",action="preview"},  {key="K",action="first_sibling"},  {key="J",action="last_sibling"},  {key="I",action="toggle_git_ignored"},  {key="H",action="toggle_dotfiles"},  {key="R",action="refresh"},  {key="a",action="create"},  {key="d",action="remove"},  {key="D",action="trash"},  {key="r",action="rename"},  {key="<C-r>",action="full_rename"},  {key="x",action="cut"},  {key="c",action="copy"},  {key="p",action="paste"},  {key="y",action="copy_name"},  {key="Y",action="copy_path"},  {key="gy",action="copy_absolute_path"},  {key="[c",action="prev_git_item"},  {key="]c",action="next_git_item"},  {key="-",action="dir_up"},  {key="s",action="system_open"},  {key="q",action="close"},  {key="g?",action="toggle_help"},  {key="W",action="collapse_all"},  {key="S",action="search_node"},  {key="<C-k>",action="toggle_file_info"},  {key=".",action="run_file_command"}}

You can toggle the help UI by pressingg?.

Tips & reminders

  1. You can add a directory by adding a/ at the end of the paths, entering multiple directoriesBASE/foo/bar/baz will add directory foo, then bar and add a file baz to it.
  2. You can update window options for the tree by settingrequire"nvim-tree.view".View.winopts.MY_OPTION = MY_OPTION_VALUE
  3. toggle has a second parameter which allows to toggle without focusing the explorer (require"nvim-tree".toggle(false, true)).
  4. You can allow nvim-tree to behave like vinegar (see:help nvim-tree-vinegar).
  5. If you:set nosplitright, the files will open on the left side of the tree, placing the tree window in the right side of the file you opened.
  6. You can automatically close the tab/vim when nvim-tree is the last window in the tab. WARNING: other plugins or automation may interfere with this:
autocmdBufEnter*++nestedifwinnr('$')==1&&bufname()=='NvimTree_' .tabpagenr() |quit |endif

Diagnostic Logging

You may enable diagnostic logging and a filenvim-tree.log will be created in$XDG_CACHE_HOME/nvim, usually~/.cache/nvim, containing logs from that nvim session. See:help nvim-tree.log.

The files may become large and numerous, so it is advised to turn on logging to diagnose an issue or while reporting a bug, then turn it off.

Performance Issues

If you are experiencing performance issues with nvim-tree.lua, you can enable profiling in the logs. It is advisable to enable git logging at the same time, as that can be a source of performance problems.

log= {enable=true,truncate=true,types= {git=true,profile=true,  },},

Please attach$XDG_CACHE_HOME/nvim/nvim-tree.log if you raise an issue.

Performance Tips:

  • If you are using fish as an editor shell (which might be fixed in the future), try setshell=/bin/bash in your vim config.

  • Try manually running the git command (see the logs) in your shell e.g.git --no-optional-locks status --porcelain=v1 --ignored=matching -u.

  • Huge git repositories may timeout after the defaultgit.timeout of 400ms. Try increasing that in your setup if you see[git] job timed out in the logs.

  • Try temporarily disabling git integration by settinggit.enable = false in your setup.

Screenshots

alt textalt textalt textalt text

About

A file explorer tree for neovim written in lua

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Lua99.5%
  • Shell0.5%

[8]ページ先頭

©2009-2025 Movatter.jp