我自己正在使用的配置: Github

目前还没在新环境做测试,并且只在Arch Linux这一个发行版上使用,遇到的问题我都会补充在下面

动机

我的工作环境从windows迁移到linux有一段时间了,使用习惯逐渐向终端靠拢,正好尝试下neovim这类编辑器

安装

根据自己的喜好选择安装方式,系统包管理或者是从源码编译,等等,这里不再赘述

Arch Linux

$ sudo pacman -S neovim

插件管理

我使用的插件管理器是lazy.nvim

之前看到了一个视频,利用lazy.nvim的懒加载将nvim的启动速度提升到了20ms上下,非常的快,于是就有了我的nvim配置重构(之前用的是lazyvim发行版)

基本是直接照着博客的介绍抄的解决方案,但因为我的插件更多一些,所以遇到了一些问题

配置重构与遇到的问题

  • nvim-tree插件打开文件浏览器后lualine插件的状态栏被分成了两个

    设置vim.o.laststatus = 3即可解决,保证全局只有一个状态栏

  • bufferline插件,主题颜色不生效

    我懒得做其他处理了,直接设置bufferline的颜色来修改

    主题色

    local bufferline_theme = {
        normal = {
            bg = "#1e2030",
        },
        visible = {
            bg = "#0c253c",
        },
        selected = {
            bg = "#2A3458",
        },
    }
    

    在配置函数中自动设定颜色

    local highlights = {
        fill = {
            bg = "",
        },
        background = bufferline_theme.normal,
        indicator_visible = bufferline_theme.visible,
        separator = bufferline_theme.normal,
    }
    for _, v in ipairs({
        "buffer",
        "error",
        "numbers",
        "close_button",
        "diagnostic",
        "warning",
        "warning_diagnostic",
        "error",
        "error_diagnostic",
        "modified",
        "duplicate",
        "hint",
        "hint_diagnostic",
        "info",
        "info_diagnostic",
    }) do
        highlights[v] = bufferline_theme.normal
        highlights[v .. "_visible"] = bufferline_theme.visible
        highlights[v .. "_selected"] = bufferline_theme.selected
    end
    
    opts.highlights = highlights
    

配置结构

  • lua/config/ 用来存放nvim自身的配置
  • lua/lib/ 存放工具函数等多次重用的代码
  • lua/plugins/ 存放插件的配置

插件

像nvim-lspconfig,mason这类插件的基础配置网上很容易查到,这里说我自己的部分配置

lsp,treesitter之类的长一些的配置都在lua/plugins/conf.lua

Mason

比较核心的插件,用来安装一系列程序(formatter,lsp等)

LSP

我这里使用mason-lspconfig插件来自动安装lsp,这个插件可以自动将nvim-lspconfig插件的lsp名称翻译成mason package的名称进行安装

mason-lspconfig

opts = {
    ensure_installed = table.keys(config.lsp),
} -- 自动按lsp配置表的键名安装

Formatter

手动格式化代码太累,用过formatter就再也回不去了,不配不行

我这里使用的格式化插件是conform.nvim,formatter同样使用mason自动安装

轻量化,模块化

我设定了一个指令用于开关插件启用(TogglePluginsEnabled),默认是关闭的,执行指令后才会启用lazy.nvim和所有的插件

接下来还有把插件进行细分,之后可选安装的打算

成果

dashboard

cmp

telescope

究极电子积木,可自定义程度太高,对我来说不少场景已经可以代替vscode