从零开始配置nvim

前言

nvim(neovim),一个一款基于Vim的文本编辑器,你可以理解为lua版的vim,因为nvim可以使用lua语言来配置,支持lua让nvim的启动速度变得更快,所以现在主流都是选择nvim来作为文本编辑器,那么本篇博文我将会教你如何配置nvim和安装插件,如果你连vim怎么退出都不会我建议你先看看官方文档(-:

安装nvim

archlinux直接使用包管理pacman安装:
sudo pacman -S neovim

新建配置文件

nvim我建议是不要把所以配置都写在一个文件下,不然在时间一长绝对会乱死,在.config目录下新建nvim文件夹:
mkdir .config/nvim

在nvim目录下新建init.lua文件(类似于vimrc)
touch init.lua

在安装插件之前我们需要先配置一些nvim本身,所以先不创建lua文件夹,因为那是插件管理器和插件的文件夹,那么我们打开init.lua
为了方便所以把vim.opt(类似:set)局部变量opt
local opt = vim.opt

行号在敲代码的时候十分重要所以我们需要开启
开启绝对行号
opt.number = true
开启相对行号
opt.relativenumber = true

在敲代码时如果代码被包裹(折行)了,也就是在当前行没有显示的内容自动到下一行了,如果是阅读文章这没有什么关系,但如果是敲代码的这就会破坏结构,所以如果不是阅读文章一般是关闭的
opt.wrap = false

在使用编辑器的时候我们可以高亮光标(高亮当前行或列)来更快清楚当前行数
开启高亮显示当前行
opt.cursorcolumn = true
开启高亮显示当前列(两个一起形成十字架,来驱除报错(-:)
opt.cursorline = true

在搜索的时候,为了方便所以建议是关闭大小写敏感的
opt.ignorecase = true
opt.smartcase = true

在默认的nvim中的剪贴板是不同步系统剪贴板的,所以我们需要设置同步
opt.clipboard:append("unnamedplus")

完整代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
local opt = vim.opt
--行号
opt.relativenumber = true
opt.number = true
--防止包裹
opt.wrap = false
--十字架光标
opt.cursorline = true
opt.cursorcolumn = true
--启用鼠标
opt.mouse:append("a")
--搜索
opt.ignorecase = true
opt.smartcase = true
-- 系统剪贴板
opt.clipboard:append("unnamedplus")

安装插件管理器

虽然现在nvim有原生的插件管理器,但是我还是更习惯使用Packer或Lazy,不过Packer已经过时了,现在主流选择都是Lazy,使用我已Lazy为例,那么首先我们需要新建文件夹lua再在里面新建config文件夹来存放Lazy的文件
mkdir lua && mkdir lua/config

在lua/config目录下新建lazy.lua文件后打开写入:

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
33
34
35
36
-- Bootstrap lazy.nvim
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not (vim.uv or vim.loop).fs_stat(lazypath) then
local lazyrepo = "https://github.com/folke/lazy.nvim.git"
local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath })
if vim.v.shell_error ~= 0 then
vim.api.nvim_echo({
{ "Failed to clone lazy.nvim:\n", "ErrorMsg" },
{ out, "WarningMsg" },
{ "\nPress any key to exit..." },
}, true, {})
vim.fn.getchar()
os.exit(1)
end
end
vim.opt.rtp:prepend(lazypath)

-- Make sure to setup `mapleader` and `maplocalleader` before
-- loading lazy.nvim so that mappings are correct.
-- This is also a good place to setup other settings (vim.opt)
vim.g.mapleader = " "
vim.g.maplocalleader = "\\"

-- Setup lazy.nvim
require("lazy").setup({
spec = {
-- import your plugins
{ import = "plugins" },
},
-- Configure any other settings here. See the documentation for more details.
-- colorscheme that will be used when installing plugins.
install = { colorscheme = { "habamax" } },
-- automatically check for plugin updates
checker = { enabled = true },
})

再回到lua目录下新建plugins文件夹后在里面新建core.lua,用来指定需要安装的插件(作者名/插件名)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
return {
--主题
{ "ellisonleao/gruvbox.nvim" },
--插件管理器(必须)
{ "folke/lazy.nvim" },
--状态栏
{
'nvim-lualine/lualine.nvim',
dependencies = { 'nvim-tree/nvim-web-devicons' }
},
--提供缩进参考线
{
"lukas-reineke/indent-blankline.nvim",
main = "ibl",
---@module "ibl"
---@type ibl.config
opts = {},
}


}

之后再回到init.lua引用lua目录下的文件,在init.lua添加:

1
2
3
4
5
6
7
8
9
10
11
12
require("config.lazy")
require("plugins.core")
require("ibl").setup()

require('lualine').setup({
options = {
theme = 'gruvbox',
component_separators = { left = '|', right = '|' },
section_separators = { left = '', right = '' },
globalstatus = true,
},
})

保存之后在进入就会黑屏一会,因为这个时候nvim在下载插件管理器,之后就会弹出一个lazy的窗口来下载安装插件,安装好就可以使用了

不过还有一个主题没有启用,我们在init.lua文件添加:

1
2
3
4
5
--外观
opt.termguicolors = true
vim.o.background = "dark" -- or "light" for light mode
vim.cmd([[colorscheme gruvbox]])

这样nvim就基本配置好了

参考资料

lazy官方文档:
https://lazy.folke.io/
nvim官方文档:
https://neovim.io/doc/
B站技术蛋老师的视频:【全程讲解】Neovim从零配置成属于你的个人编辑器
https://www.bilibili.com/video/BV1Td4y1578E/?spm_id_from=333.337.search-card.all.click&vd_source=df8b0e10736531b80015676e74f67bc7