2022 年的 neovim 配置方案
Last updated: 2023/09/04 Published at: 2022/05/17
2023-10-17 更新 新文章
2023-09-04 更新
这篇文章已经过时,最近插件管理器 packer 作者弃坑,我也顺势转到了 lazy.nvim. 因此文章也许要作出相应的更新,之后会更新一篇更新的 neovim 配置方案,不过 repo 中的配置是实时更新的, 读者可以直接参考, 配置思路和这篇文章是类似, 主要变化就是迁移了插件管理器,并增删了一些插件.
2022-10-24 (更新分支 no-lsp)
在前不久,我把我的 nvim
配置从 vimscript
全部迁移到了 lua
。故在此记录一下我的 neovim
配置方案。
大致目录结构
1# ~/.config/nvim
2.
3├── init.lua
4├── lua
5│ ├── basic.lua
6│ ├── colorscheme.lua
7│ ├── keybindings.lua
8│ ├── lsp
9│ │ ├── go.lua
10│ │ ├── haskell.lua
11│ │ ├── lua.lua
12│ │ ├── null-ls.lua
13│ │ ├── nvim-cmp.lua
14│ │ ├── python.lua
15│ │ ├── setup.lua
16│ │ └── ultisnips.lua
17│ ├── plugin-config
18│ │ ├── bufferline.lua
19│ │ ├── dashboard.lua
20│ │ ├── indent-blankline.lua
21│ │ ├── mundo.lua
22│ │ ├── nvim-tree.lua
23│ │ ├── transparent.lua
24│ │ ├── treesitter.lua
25│ │ └── vista.lua
26│ └── plugins.lua
27├── python-nvim
28└── README.md
init.lua
作为配置的入口lua
文件夹是所有配置存放的地方basic.lua
基础配置colorscheme.lua
主题相关keybindings.lua
快捷键设置plugins.lua
插件相关lsp
存放所有和 LSP 相关的配置plugin-config
存放每个插件的非默认设置
python-nvim
文件夹是给nvim
专门配置的python
解释器目录
插件
我用的插件不是很多,这次变更是一次重大变化,几乎全部插件都改用了使用 lua 编写的,插件管理器用的是大家的主流选择 Packer。
简要说明下一些非常有意思的插件:
null-ls 一个非常有创意的 LSP,其官方介绍是:
Use Neovim as a language server to inject LSP diagnostics,code actions,and more via Lua。
nvim-treesitter 现代化的代码高亮,基于 syntax tree 的语法高亮,而且功能不止语法高亮,可以用来配置折叠等等。
nvim-lspconfig neovim 官方出品的 lsp 集成插件。
nvim-lsp-installer 帮助自动化的安装和管理 lsp server。
nvim-cmp 新一代代码补全引擎。
LSP 与代码补全
lsp
和代码补全的配置估计是我折腾 neovim
插件的最复杂的地方,不过在 neovim
官方出品了 lsp
的集成插件以及有了非常强大 nvim-cmp
的之后,在我的更新配置体验中,没有特别复杂的部分,根据文档即可完成配置。
LSP 的各种设置都放在了 lsp 文件夹中,入口文件是 setup.lua,没有什么特别的配置,有兴趣的直接可以参考我的 nvim 配置。
我的 nvim
配置放在了 github,应该会随着我的使用更新,不保证会和写下此文时一致。
NO-LSP 版本
发现了新的需求,在一些不需要编辑代码、只需要修改部分配置文件,或者配置非常差的机器上不需要 lsp 的支持,故而新建了 no-lsp
分支删去了部分和 lsp 有关的插件,性能更强,速度更快。