Ubuntu从0开始安装Neovim并完成基本配置

上学期上某节课的时候才折腾过Neovim的事,这学期竟然已经不会从头再配一次了,那就趁此机会记录下来吧。

本文所有操作都是在Windows 11下的WSL2中完成,Ubuntu版本为20.4 LTS

安装Neovim

不知道为什么Ubuntu上有两套包管理,一个snap一个apt,虽然这两者都有neovim发行,但是本文撰写之日,apt安装的neovim版本为0.4.x,snap安装的版本为0.9.x,而很多neovim的扩展都要求0.6.x甚至0.8.x以上,所以选择用snap安装neovim。安装命令如下。

$ sudo snap install --beta nvim --classic

(如果用apt安装,则是neovim而不是nvim,不知道为什么命名不统一)

安装包管理扩展

包管理扩展选择 lazy.nvim https://github.com/folke/lazy.nvim

另一个比较热门的包管理扩展是 packer.nvim, 之前我用的就是这个,但是packer.nvim需要手动编译扩展,而lazy.nvim不用,所以这次改用lazy.nvim试试。

lazy.nvim的github首页有安装教程,但不够详细,有以下几个问题:

  1. init.lua,以及nvim扩展的路径,可以有好几个选择,在nvim的帮助文档中可以找到(:help packages, :help init.lua),为了统一,我采用nvim帮助文档的示例路径,即init.lua位于~/.config/nvim/下,而包括lazy在内的扩展位于~/.local/share/nvim/

  2. require("lazy").setup(plugins, opts)中的opts为可选参数,可能是用来配置lazy本身的,小白就不用管了。
    plugins是一个"table",table是Lua中的一种数据结构,其底层可能较为复杂,它工作起来和Javascript里的array有点像。大部分Neovim扩展的安装教程都会提供一个默认的lazy配置,也是以一个table的形式给出的,我们在安装的时候需要把这个table放到参数plugins里。例如我在安装了lazy后,第一个想安装的插件是tokyonight主题,那么这句require就是这么写:

require("lazy").setup({
  {
    "folke/tokyonight.nvim",
    lazy = false,
    priority = 1000,
    opts = {},
  },
  -- other plugins
})

注意setup函数的参数只有一对花括号表示的table,tokyonight的配置table要放到外层table的内部,其他扩展的配置则以逗号分隔开。

  1. 如果是虚拟机上使用lazy官方的安装方式,注意网络问题,如果裸连github有问题的话,写好init.lua脚本后,打开nvim可能会遇到长时间的黑屏,让人以为是nvim噶了,实际上很可能是因为nvim在后台下载lazy过慢导致的。我由于懒,直接开全局代理搞定了,当然也可以为虚拟机单独配置代理。

让Neovim更好用

到目前为止我们的Neovim还只是装了一个包管理扩展,在其他方面依然是“崭新出厂”,并不算好用。
在init.lua中添加以下代码,让Neovim用起来更舒服

vim.opt.nu = true
vim.opt.rnu = true
vim.opt.ts = 4  -- Set tabstop
vim.opt.sw = 4  -- Set shiftwidth
vim.opt.et = true  -- Tab inserts spaces
vim.opt.so = 8 -- Set scrolloff

-- Set lua indentation
vim.cmd([[ autocmd FileType lua set ts=2 sw=2 ]])
posted @ 2023-09-20 16:42  波耶尔  阅读(453)  评论(0)    收藏  举报