Vim 插件(一) 文件树

2022-05-09 12:42:09 浏览数 (1)

文章目录

  • Vim 插件 文件树

GitHub仓库地址: https://github.com/minhanghuang/nvim

Vim 插件 文件树

代码语言:javascript复制
https://github.com/kyazdani42/nvim-tree.lua

vim-plug

代码语言:javascript复制
Plug 'kyazdani42/nvim-tree.lua'

添加.lua配置

代码语言:javascript复制
midir -p ~/.config/nvim/lua/plugin
touch nvim-tree.lua

nvim-tree.lua添加一下内容

代码语言:javascript复制
-- 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

代码语言:javascript复制
// init.vim 
lua require("plugin/nvim-tree")
nmap <silent> <Leader>o :NvimTreeToggle<CR>

切换窗口: Ctrl ww

文件树默认不显示被git忽略的文件,设置显示背git忽略的文件

代码语言:javascript复制
// 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

0 人点赞