0%

Neovim/LazyVim 使用指南

在 2020 年时间我就接触了 Neovim,在这一段时间,我一直使用的是 coc.nvim,coc.nvim 陪我度过了我成长的时期。也许是因为换回了 windows 系统,并且 windows 系统下的 terminal 真的很不好用,所以这几年就没有怎么用过 Vim 了。我很喜欢 Vim 哲学和 Vim 的键盘体验 也很喜欢 VsCode

在这几年之间我也陆续看到类似于 NvChad、LunarVim、AstroNvimLazyVim 等 Neovim distros,本文作为重返 Neovim 的记录。

重拾配置

我的 GitHub 仓库中一直保留着我的 Neovim 配置,当时使用的配置如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
" 插件设置
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 了?

  1. coc.nvim 需要 Node.js 依赖。
  2. coc.nvim 不够懒,没有针对 coc.nvim 所开发的 Neovim distros。
  3. nvim 的插件系统已经可以完全替代 coc.nvim 了。

LazyVim 的安装

直接将懒人模板克隆到 nvim 配置目录就可以了。

1
git clone https://github.com/LazyVim/starter ~/.config/nvim

LazyVim 的使用

image

打开 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 的虚拟环境。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
{
"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 的默认配置!

image

按键映射

image

修改按键映射也很简单,在 ~/.config/nvim/lua/config/keymaps.lua 添加自己的配置即可。

继续探索吧

想要更好的使用 Neovim 当然还需要熟悉 LazyVim 帮你安装的各类默认插件是干嘛的,了解 Vim/Neovim 圈子的生态等等,这都是值得花一番时间去学习的。