文章目录
GitHub仓库地址: https://github.com/minhanghuang/nvim
Vim 插件 文件树
https://github.com/kyazdani42/nvim-tree.lua
vim-plug
Plug 'kyazdani42/nvim-tree.lua'
添加.lua配置
midir -p ~/.config/nvim/lua/plugin
touch nvim-tree.lua
nvim-tree.lua
添加一下内容
-- following options are the default
local tree_cb = require'nvim-tree.config'.nvim_tree_callback
require'nvim-tree'.setup {
-- disables netrw completely
disable_netrw = false,
-- hijack netrw window on startup
hijack_netrw = true,
-- open the tree when running this setup function
open_on_setup = true,
-- will not open on setup if the filetype is in this list
ignore_ft_on_setup = {},
-- closes neovim automatically when the tree is the last **WINDOW** in the view
auto_close = true,
-- opens the tree when changing/opening a new tab if the tree wasn't previously opened
open_on_tab = true,
-- hijacks new directory buffers when they are opened.
update_to_buf_dir = {
-- enable the feature
enable = true,
-- allow to open the tree if it was previously closed
auto_open = true,
},
-- hijack the cursor in the tree to put it at the start of the filename
hijack_cursor = false,
-- updates the root directory of the tree on `DirChanged` (when your run `:cd` usually)
update_cwd = false,
-- show lsp diagnostics in the signcolumn
lsp_diagnostics = false,
-- update the focused file on `BufEnter`, un-collapses the folders recursively until it finds the file
update_focused_file = {
-- enables the feature
enable = false,
-- update the root directory of the tree to the one of the folder containing the file if the file is not under the current root directory
-- only relevant when `update_focused_file.enable` is true
update_cwd = false,
-- list of buffer names / filetypes that will not update the cwd if the file isn't found under the current root directory
-- only relevant when `update_focused_file.update_cwd` is true and `update_focused_file.enable` is true
ignore_list = {}
},
-- configuration options for the system open command (`s` in the tree by default)
system_open = {
-- the command to run this, leaving nil should work in most cases
cmd = nil,
-- the command arguments as a list
args = {}
},
git = {
enable = true,
-- 显示被git忽略的文件
ignore = false,
timeout = 500,
},
view = {
-- width of the window, can be either a number (columns) or a string in `%`, for left or right side placement
width = 30,
-- height of the window, can be either a number (columns) or a string in `%`, for top or bottom side placement
height = 30,
-- side of the tree, can be one of 'left' | 'right' | 'top' | 'bottom'
side = 'left',
-- if true the tree will resize itself after opening a file
auto_resize = true,
mappings = {
-- custom only false will merge the list with the default mappings
-- if true, it will only use your list to set the mappings
custom_only = true,
-- list of mappings to set on the tree manually
list = {
{ key = {"<CR>", "o", "<2-LeftMouse>","l"}, cb = tree_cb("edit") },
{ key = {"<2-RightMouse>", "<C-]>"}, cb = tree_cb("cd") },
{ key = "<C-v>", cb = tree_cb("vsplit") },
{ key = "<C-x>", cb = tree_cb("split") },
{ key = "<C-t>", cb = tree_cb("tabnew") },
{ key = "<", cb = tree_cb("prev_sibling") },
{ key = ">", cb = tree_cb("next_sibling") },
{ key = {"P"}, cb = tree_cb("parent_node") },
--{ key = "<BS>", cb = tree_cb("close_node") },
{ key = "<S-CR>", cb = tree_cb("close_node") },
{ key = "<Tab>", cb = tree_cb("preview") },
{ key = "K", cb = tree_cb("first_sibling") },
{ key = "J", cb = tree_cb("last_sibling") },
{ key = "I", cb = tree_cb("toggle_ignored") },
{ key = {"H","<BS>"}, cb = tree_cb("toggle_dotfiles") },
{ key = "R", cb = tree_cb("refresh") },
{ key = "a", cb = tree_cb("create") },
{ key = "d", cb = tree_cb("remove") },
{ key = "r", cb = tree_cb("rename") },
{ key = "<C-r>", cb = tree_cb("full_rename") },
{ key = "x", cb = tree_cb("cut") },
{ key = "c", cb = tree_cb("copy") },
{ key = "p", cb = tree_cb("paste") },
{ key = "y", cb = tree_cb("copy_name") },
{ key = "Y", cb = tree_cb("copy_path") },
{ key = "gy", cb = tree_cb("copy_absolute_path") },
{ key = "[c", cb = tree_cb("prev_git_item") },
{ key = "]c", cb = tree_cb("next_git_item") },
{ key = {"-","h"}, cb = tree_cb("dir_up") },
--{ key = "s", cb = tree_cb("system_open") },
--{ key = "s", cb = tree_cb("close") },
{ key = {"q"}, cb = tree_cb("close") },
{ key = "g?", cb = tree_cb("toggle_help") },
}
}
}
}
添加maps
// init.vim
lua require("plugin/nvim-tree")
nmap <silent> <Leader>o :NvimTreeToggle<CR>
切换窗口: Ctrl+ww
文件树默认不显示被git
忽略的文件,设置显示背git
忽略的文件
// nvim-tree.lua
git = {
enable = true,
-- 显示被git忽略的文件
ignore = false,
timeout = 500,
},
文件
icon
不显示?
- 解决:
不显示icon
的原因是当前字体没有icon
,这里提到的字体是当前终端的字体,不是系统的字体,举个例子:我使用Mac
远程登录这台机器,那么字体就是当前Mac
的终端字体,需要对Mac
终端配置有icon
的字体; 如果是在Ubuntu
内打开的终端,就需要对Ubuntu
的终端配置合适的字体
字体下载链接: https://github.com/ryanoasis/nerd-fonts
我这里使用的是DroidSansMono
字体(https://github.com/ryanoasis/nerd-fonts/tree/master/patched-fonts/DroidSansMono/complete),Mac
默认的Monaco
字体不显示icon