一个用 Lua 编写的 Neovim 文件管理器
自动更新
文件类型图标
Git 集成
诊断集成:LSP 和 COC
(实时)过滤
重命名、删除、创建
本地及跨实例剪切、复制、粘贴
高度可定制
查看 wiki 以获取展示、技巧、食谱等更多内容。
问题及一般支持:Discussions
需求
Nvim >= 0.10。至少保证 n - 0.1 稳定版 Nvim 的兼容性。您可以使用 compat-nvim-0.X 标签来支持更早的 Nvim 版本,但这些版本将不会收到更新或支持。
nvim-web-devicons 是可选的,用于显示文件图标。它需要一个 打过补丁的字体。您的终端模拟器必须配置为使用该字体,通常是 "Hack Nerd Font"
安装
请通过您首选的包管理器进行安装。有关特定包管理器的说明,请参阅 安装。
可以通过标签指定主要版本或次要版本:v<MAJOR> 例如 v1 或 v<MAJOR>.<MINOR> 例如 v1.23
快速开始
通过您的包管理器安装插件:
"nvim-tree/nvim-tree.lua"
"nvim-tree/nvim-web-devicons"
强烈建议禁用 netrw,请参阅 :help nvim-tree-netrw
配置
在您的 init.lua 中配置该插件。
请参阅 :help nvim-tree-setup 和 :help nvim-tree-config-default
-- disable netrw at the very start of your init.lua
vim.g.loaded_netrw = 1
vim.g.loaded_netrwPlugin = 1
-- optionally enable 24-bit colour
vim.opt.termguicolors = true
-- empty setup using defaults
require("nvim-tree").setup()
-- OR setup with a config
---@type nvim_tree.config
local config = {
sort = {
sorter = "case_sensitive",
},
view = {
width = 30,
},
renderer = {
group_empty = true,
},
filters = {
dotfiles = true,
},
}
require("nvim-tree").setup(config)
帮助
打开树: :NvimTreeOpen
显示映射: g?
自定义映射
:help nvim-tree-mappings-default 默认应用,但您可以通过 :help nvim_tree.config {on_attach} 进行自定义,例如
local function my_on_attach(bufnr)
local api = require "nvim-tree.api"
local function opts(desc)
return { desc = "nvim-tree: " .. desc, buffer = bufnr, noremap = true, silent = true, nowait = true }
end
-- default mappings
api.map.on_attach.default(bufnr)
-- custom mappings
vim.keymap.set("n", "<C-t>", api.tree.change_root_to_parent, opts("Up"))
vim.keymap.set("n", "?", api.tree.toggle_help, opts("Help"))
end
-- pass to setup along with your other config
require("nvim-tree").setup({
---
on_attach = my_on_attach,
---
})
高亮组
参见 :help nvim-tree-highlight-groups
运行 :NvimTreeHiTest 以显示 nvim-tree 使用的所有高亮。
它们可以在 setup 调用之前或之后进行自定义,并会在运行时立即应用。例如
vim.cmd([[
:hi NvimTreeExecFile guifg=#ffa0a0
:hi NvimTreeSpecialFile guifg=#ff80ff gui=underline
:hi NvimTreeSymlink guifg=Yellow gui=italic
:hi link NvimTreeImageFile Title
]])
命令
某些命令可以附带感叹号 ! 执行,或接受一个 path 字符串参数。
所有命令均执行公共 API。
一些基本命令:
:NvimTreeFocus :help nvim_tree.api.tree.open()
require("nvim-tree.api").tree.open()
:NvimTreeToggle :help nvim_tree.api.tree.toggle()
require("nvim-tree.api").tree.toggle({
path = "<args>",
find_file = false,
update_root = false,
focus = true,
})
:NvimTreeFindFile :help nvim_tree.api.tree.find_file()
require("nvim-tree.api").tree.find_file({
open = true,
update_root = "<bang>",
focus = true,
})
:NvimTreeCollapse :help nvim_tree.api.tree.collapse_all()
require("nvim-tree.api").tree.collapse_all({
keep_buffers = false
})
路线图
nvim-tree 已趋于稳定,不会添加新的主要功能。重点在于现有用户体验。
鼓励用户通过公共 API 添加自己的自定义功能。
开发重点包括:
- 错误修复
- 性能
- 生活质量改进
- API / 事件
- 现有功能的增强
- 多实例能力
API
nvim-tree 暴露了一个公共 API。这是非破坏性的,会根据需要进行添加。参见 :help nvim-tree-api
参见 wiki Recipes 和 Tips 以获取想法和灵感。
如果 API 无法满足您的需求,请提出 功能请求。我们随时欢迎贡献,详见下文。
您还可以订阅 nvim-tree 在各种情况下会分发的各种事件,参见 :help nvim-tree-events
贡献
随时欢迎 PR。参见 CONTRIBUTING 和 wiki: Development 以开始。
如果您正在寻找一些工作以开始,请参见 bug 和 PR Please 问题。
截图
参见 Showcases wiki 页面,查看带有源代码的用户配置示例。
请添加您自己的!
团队
- @alex-courtis Arch Linux
- @gegoune macOS
- @Akmadan23 Linux
- @dependabot[bot] Ubuntu Linux