前言
工欲善其事,必先利其器,配置一个好用顺手的编辑器对开发体验的影响很大。市面上常见的编辑器或 IDE(如 VS Code、IDEA 等),不是捆绑了许多附加组件,就是在后台替你做了太多事情,很多细节无法完全掌控。这样固然上手方便,但一旦出现预期之外的行为,排查和修改都很困难;尤其在做偏底层的开发时,现成环境有时连基础的语法分析都配不顺,这时候自己动手配置一套完全受控的编辑器就是不错的选择。
安装并配置 Neovim 本体
安装 Neovim
在 macOS 上可以直接使用包管理器 Homebrew 进行安装:
brew install neovim提示
其他安装方式 可以阅读官方文档进行安装。
Neovim 基础配置
Neovim 配置文件默认位于 ~/.config/nvim/init.lua(如果没有可以自行创建)。
打开配置文件,先写入以下基础配置:
-- 设置领导键
vim.g.mapleader = " "
vim.g.maplocalleader = " "
-- 显示行号
vim.opt.number = true
-- 当前行显示绝对行号,其他行显示相对行号
vim.opt.relativenumber = true
-- Tab 宽度
vim.opt.tabstop = 4
vim.opt.softtabstop = 4
vim.opt.shiftwidth = 4
-- Tab 转为空格
vim.opt.expandtab = true
-- 自动缩进
vim.opt.autoindent = true
-- 启用鼠标
vim.opt.mouse = 'a'
-- 高亮当前行
vim.opt.cursorline = true
-- 显示当前模式
vim.opt.showmode = false
-- 总是显示状态栏
-- vim.opt.laststatus = 2
-- 状态栏
-- vim.opt.statusline = '%f %m %r %= [%{&filetype}] [%{&fileformat}] [Ln %l/%L, Col %v] [%p%%]'
-- 快捷键(macOS)
vim.keymap.set('i', 'jj', '<Esc>')
vim.keymap.set('n', '<Esc>b', 'b')
vim.keymap.set('n', '<Esc>f', 'w')
vim.keymap.set('i', '<Esc>b', '<C-O>b')
vim.keymap.set('i', '<Esc>f', '<C-O>w')
-- 不显示文件信息
vim.opt.shortmess:append('F')
-- 不显示启动画面
vim.opt.shortmess:append('I')
-- 关闭交换文件
vim.opt.swapfile = false
-- 开启持久化撤销
vim.opt.undofile = true
-- Neovim 撤销文件目录
local undo_dir = vim.env.HOME .. "/.nvim/undo"
vim.opt.undodir = undo_dir
-- 自动创建撤销目录
if vim.fn.isdirectory(undo_dir) == 0 then
vim.fn.mkdir(undo_dir, "p", 448)
end安装插件加载器
插件管理这里直接借用了 LazyVim 的基础启动模板(底层使用 lazy.nvim 加载插件)。安装方式非常简单,使用 Git 拉取官方模板仓库即可:
git clone https://github.com/LazyVim/starter ~/.config/nvim提示
提示 克隆完成后可以删掉其中的
.git目录,方便后续建立自己 Neovim 配置的 Git 仓库。
之后打开 nvim 输入 :Lazy 即可打开插件管理界面。
安装主题和常用插件
安装 Gruvbox 主题
安装主题很简单,只需要在 ~/.config/nvim/lua/plugins/ 目录下创建一个 Lua 文件(这里命名为 gruvbox.lua),写入如下配置:
return {
{
"ellisonleao/gruvbox.nvim",
priority = 1000,
lazy = false,
config = function()
vim.o.background = "dark"
vim.cmd.colorscheme("gruvbox")
end,
},
}重启后即可完成安装。
安装常用插件
lualine
lualine 是一个基于 Lua 配置 Neovim 状态栏的插件,可以让状态栏更加美观。安装过程与安装主题类似,在 ~/.config/nvim/lua/plugins/ 下创建 lualine.lua 文件并写入如下内容:
return {
"nvim-lualine/lualine.nvim",
dependencies = {
"nvim-tree/nvim-web-devicons",
},
opts = {
options = {
theme = "auto",
icons_enabled = true,
component_separators = "",
section_separators = "",
globalstatus = true,
},
},
}
同样保存退出即可完成配置。
undotree
undotree 是一个撤销历史记录树插件,可以直观地查看和回退修改记录。在 ~/.config/nvim/lua/plugins/ 下创建 undotree.lua 文件并写入如下内容:
return {
"mbbill/undotree",
keys = {
{
"<F5>",
"<cmd>UndotreeToggle<CR>",
desc = "Toggle Undotree",
},
},
}这里绑定了 <F5> 作为快捷键来开关撤销历史树面板。
