Neovim/LazyVim 使用指南
在 2020 年时间我就接触了 Neovim,在这一段时间,我一直使用的是 coc.nvim,coc.nvim 陪我度过了我成长的时期。也许是因为换回了 windows 系统,并且 windows 系统下的 terminal 真的很不好用,所以这几年就没有怎么用过 Vim 了。我很喜欢 Vim 哲学和 Vim 的键盘体验 也很喜欢 VsCode。
在这几年之间我也陆续看到类似于 NvChad、LunarVim、AstroNvim、LazyVim 等 Neovim distros,本文作为重返 Neovim 的记录。
重拾配置
我的 GitHub 仓库中一直保留着我的 Neovim 配置,当时使用的配置如下:
" 插件设置
call plug#begin('~/AppData/Local/nvim/plugged')
Plug 'neoclide/coc.nvim', {'branch': 'release'}
Plug 'luochen1990/rainbow'
Plug 'Yggdroot/indentLine'
Plug 'junegunn/fzf', { 'do': { -> fzf#install() } }
Plug 'vim-airline/vim-airline'
Plug 'vim-airline/vim-airline-themes'
Plug 'connorholyday/vim-snazzy'
call plug#end()
" coc.nvim 配置
let g:coc_global_extensions = [
\ 'coc-json',
\ 'coc-marketplace',
\ 'coc-spell-checker',
\ 'coc-html',
\ 'coc-pairs',
\ 'coc-emmet',
\ 'coc-css',
\ 'coc-eslint',
\ 'coc-vetur',
\ 'coc-tsserver',
\ 'coc-explorer',
\ 'coc-lists',
\ 'coc-vimlsp']
其中最核心的插件是 coc.nvim,它也相当于一个插件系统(用插件管理器安装插件管理器),coc.nvim 的目标是 Make your Vim/Neovim as smart as VS Code 。
随着 Neovim 社区的发展,有很多懒人包被开发了出来,像是 23 年出来的 LazyVim 的涨星速度比同类的开源项目都要快。于是我尝试了一下 LazyVim 果断抛弃了 coc.nvim。
为什么不继续使用 coc.nvim 了?
- coc.nvim 需要 Node.js 依赖。
- coc.nvim 不够懒,没有针对 coc.nvim 所开发的 Neovim distros。
- nvim 的插件系统已经可以完全替代 coc.nvim 了。
LazyVim 的安装
直接将懒人模板克隆到 nvim 配置目录就可以了。
git clone https://github.com/LazyVim/starter ~/.config/nvimLazyVim 的使用

打开 Neovim,输入 :Lazy 就可以进入 LazyVim 的管理面板,这里可以看到已经安装好的插件、插件是否有更新等等。
LazyVim starter template(懒人模板)默认帮你安装了这些插件。注意不要被 Keymaps 所误导,Keymaps 是 LazyVim 提供的所有插件的快捷键速览(包括非默认安装的插件,也就是 LazyVim Extras 扩展插件等)。
编程语言支持
LazyVim starter template 还提供了扩展配置(LazyVim Extras),LazyVim Extras 其实是一组插件的集合(这和 VsCode 中的 Extension Pack 是一样的),这其中包括了依赖管理、提供了默认配置等功能。
比如我需要安装 Python 环境的支持, 输入 :LazyExtras 然后找到 lang.python 就可以一键安装 Python 开发所需要的一系列扩展。具体的实现可以查看 LazyVim Extras 的源码。
自定义配置
Plugins
通过 LazyExtras 安装 Python 语言支持,发现 venv-selector 无法找到 miniconda 的虚拟环境。
{
"linux-cultist/venv-selector.nvim",
branch = "regexp", -- Use this branch for the new version
cmd = "VenvSelect",
enabled = function()
return LazyVim.has("telescope.nvim")
end,
opts = {
settings = {
options = {
notify_user_on_venv_activation = true,
},
},
},
-- Call config for python files and load the cached venv automatically
ft = "python",
keys = { { "<leader>cv", "<cmd>:VenvSelect<cr>", desc = "Select VirtualEnv", ft = "python" } },
},查看源码我们可以发现,LazyVim 默认使用的是 venv-selector.nvim 中的 regexp 分支。于是我们到 Github 查看这个分支看到了 My venvs dont show up - how can i create my own search? ,根据 README 在 ~/.config/nvim/lua/plugins 下面新建一个 venv-selector 的配置即可,LazyVim 会自动的将配置文件 Merge,所以不用担心你会修改到 LazyVim 的默认配置!

按键映射

修改按键映射也很简单,在 ~/.config/nvim/lua/config/keymaps.lua 添加自己的配置即可。
继续探索吧
想要更好的使用 Neovim 当然还需要熟悉 LazyVim 帮你安装的各类默认插件是干嘛的,了解 Vim/Neovim 圈子的生态等等,这都是值得花一番时间去学习的。

