用 Lua 编写的 Neovim 一体化配置框架。易配置,可扩展。
-
用 Lua 管理 nvim 配置。所有配置项都可覆盖。详见配置章节。
-
充分使用 Neovim 功能:Native LSP、Float Window、Winbar。
-
支持的插件管理器:lazy.nvim, vim-plug, packer.nvim。详见插件管理器。
-
帅气的界面和配色。暗黑模式。支持真彩色、平滑滚动、滚动条、Dashboard。你可以修改任意配色。详见 颜色和高亮。
-
支持配置 github 代理,在中国大陆可加快插件下载速度。详见代理。
-
集成了 130 多个 Vim/Nvim 插件。增强插件的使用体验,并且修复了一些插件的缺点。
点击展开/折叠插件列表
- 插件管理器: lazy (默认) 或 vim-plug 或 packer
- Vim 选项: vim-options
- 工具函数: plenary 和 Penlight 和 nui
- 面板: alpha.nvim
- 大纲: aerial (默认) 或 majutsushi/tagbar
- 文件浏览器: neo-tree (默认) 或 nerdtree 或 nvim-tree
- 状态栏: lualine (默认) 或 airline
- Tab 栏: tabby
- Buffer 栏: barbar 或 bufferline (如果使用 Buffer 栏,你要禁用 Tab 栏插件)
- 光标栏高亮: beacon (默认) 或 specs.nvim
- 滚动条: nvim-scrollbar
- 平滑滚动: neoscroll.nvim
- 会话: persisted (默认) 或 possession 或 xolox/vim-session 或 rmagatti/auto-session
- 模糊查找: telescope 与 ctrlsf
- Diagnostics 窗口: trouble
- 撤销: vim-mundo
- 语法高亮: treesitter 与 nvim-ts-rainbow
- 单词高亮: vim-interestingwords
- 注释代码: Comment.nvim (默认) 或 nerdcommenter
- LSP: nvim-lspconfig 与 treesitter 与 null-ls 与 nlsp 与 goto-preview 与 lsp-toggle
- DAP: nvim-dap
- 格式化: lsp-format 与 editorconfig-vim
- Formatter, Linter, LSP, DAP 管理器: mason 与 mason-installer
- 补全: nvim-cmp
- Snippets: nvim-snippy
- Markdown: plasticboy/vim-markdown 与 markdown-preview 与 headlines.nvim 与 vim-MarkdownTOC
- 括号配对: nvim-surround 与 nvim-autopairs 与 nvim-ts-autotag 与 vim-matchup
- Git: gitsigns 与 lazygit 与 diffview.nvim
- 缩进基准线: indent-blankline
- 光标移动: flash.nvim 与 accelerated-jk 或 hop.nvim
- 窗口选择: nvim-window-picker (默认) 或 vim-choosewin
- 窗口大小调整: simeji/winresizer 与 windows.nvim
- Context: aerial (默认) 或 navic 与 nvim-treesitter-context
- 文本对齐: vim-easy-align
- 书签: vim-bookmarks
- 标记: marks.nvim
- 日历: mattn/calendar-vim
- Curl: rest.nvim
- Icons: devicons 与 icon-picker
- UI 增强: dressing 和 noice
- 跳出输入模式的快捷键: better-escape.nvim
- Increment: increment-activator
- Filetype: filetype.nvim
- Latex: nabla
- 通知: notify (默认) 或 notifier
- 性能调优: vim-startuptime
- Text-Objects: wildfire 与 nvim-treesitter-textobjects
- 表格: vim-table-mode
- 终端: neoterm
- 测试: nvim-test
- TODO 注释: todo-comments
- 尾空格: whitespace
- 复制粘贴: yanky
- 禅模式: twilight 与 zen-mode
- 笔记本: zk
- 实时命令: live-command
- 颜色着色: ccc.nvim (默认) 或 vim-hexokinase 或 nvim-colorizer
- 翻译: translate.nvim
- 游戏
- One.nvim 增强插件: one
点击展开/折叠
如果你不喜欢隐藏 cmdline,可以禁用 noice.nvim 插件,回归经典 UI。只要设置配置
require('one').setup { plugins = { 'noice', disable = true } }
按 <space>o
打开大纲。
按 <space>f
打开文件列表。
按 <space>k
打开快捷键列表。
按 <space>p
打开命令列表。
按 <space>d
或 <space>D
打开诊断列表。详见 Diagnostic 快捷键。
函数签名补全
你可以通过插件管理器更新 one.nvim。或命令 :OneUpdate one
或 :lua one.update('one')
也可更新。
如果更新后遇到问题请提交 issue。
require('one').setup {}
所有配置项都是可选的。你可以覆盖默认配置。 请看用户配置。
注意: one.nvim 会在启动时自动安装插件管理器。所以用户请勿用自己的插件管理器去安装 one.nvim。
选择你喜欢的插件管理器,目前提供 lazy
(默认),vim-plug
,packer
,local
。
require('one').setup {
config = {
pluginManager = { use = 'lazy' }, -- 'lazy' or 'vim-plug' or 'packer' or 'local'
},
}
lazy | vim-plug | packer | |
---|---|---|---|
插件目录 | {DATA_DIR}/plugins | {DATA_DIR}/plugins | {DATA_DIR}/site/pack/user/start/packer.nvim |
默认配置文件 | lua/one/config/lazy.lua | lua/one/config/vim-plug.lua | lua/one/config/packer.lua |
{DATA_DIR}
的值见 :lua print(vim.fn.stdpath('data'))
。
当你从 vim-plug 或者 lazy 切换到 packer,就需要重装插件。详见初始化流程。
当 config.pluginManager.use = 'local'
,插件管理器只能加载本地插件,无法从远端下载安装的插件。
所有插件都可以被关闭,覆盖默认配置项,或者替换成你喜欢的插件。自定义配置和扩展非常方便。
插件的定义和使用,详见./doc/plugin.md。
你甚至可以设置 onlyPlugins = {}
来一键禁用所有插件(不禁用插件管理器)。详见 Debug - Disable other plugins。
你可以调用 :OneShowPlugins
查看加载的和未加载的插件。
- Debug
- 快捷键
- 命令
- 颜色和高亮
- 代码片段 (Snippets)
- LSP
- 代码格式化
- Telescope 插件
- 窗口选择器
- 浮动命令栏
- 未加载的插件
- 扩展你自己的插件、高亮、命令等配置
- 全局变量
- 启动时间
- 代理
直接看代码。
.
├── doc/ // Documents
├── lua/
│ └── one/
│ ├── async.lua // async library
│ ├── config/ // Keymaps
│ │ ├── colors.lua // Default color config
│ │ ├── default.lua // Default config
│ │ ├── packer.lua // packer.nvim default config
│ │ ├── symbol.lua // symbols
│ │ └── vim-plug.lua // vim-plug default config
│ ├── config.lua // Config loader
│ ├── consts.lua // Constants
│ ├── filetype.lua // FileType autocmd
│ ├── one.lua // The one singleton
│ ├── init.lua // The lua required entry point
│ ├── plugins.lua // Plugin loading list
│ ├── util.lua // Utility functions
│ ├── util_spec.lua // Unit test for util.lua
│ ├── keymap/ // Keymaps
│ ├── plugins/ // Available plugins written in lua
│ │ └── themes/ // Color schemas
│ └── plugin-manager/
│ ├── init.lua // Plugin Manager
│ ├── lazy.lua // Wrapper for lazy.nvim
│ ├── local.lua // Only load local files
│ ├── vim-plug.lua // Wrapper for vim-plug
│ └── packer.lua // Wrapper for packer.nvim
└── scripts/ // scripts for building project
在创建新的 Issue/Discussion/PR,以及发表评论之前,请先阅读 ./CONTRIBUTING.zh.md。
Copyright 2016-2024 ADoyle (adoyle.h@gmail.com). Some Rights Reserved. The project is licensed under the BSD 3-clause License.
Read the LICENSE file for the specific language governing permissions and limitations under the License.
Read the NOTICE file distributed with this work for additional information regarding copyright ownership.
我创建的其他 nvim 项目。