Mac下Neovim和LazyVim的详细配置教程
Mac下Neovim和LazyVim的详细配置教程
本文是一篇详细的Neovim和LazyVim配置教程,适合对Vim有一定了解但对Neovim和LazyVim不熟悉的用户。文章从基础介绍到具体配置,再到开发环境的搭建,内容详实,步骤清晰,能够帮助读者快速上手使用Neovim进行开发工作。
1. Vim、Neovim 及区别
Vim是Linux下的一款高度可定制化的文本编辑器,想要在服务器上编辑文件离不开Vim。Vim起源于Vi,并以其模式化操作、丰富的快捷键和插件系统而闻名。它通过命令行界面运行,特别适合于在终端环境下使用,支持多种编程语言的语法高亮和代码补全。
Neovim是Vim的一个分支,于2014年推出,旨在解决Vim的一些限制并引入现代编辑器特性。它支持异步编程,使用Lua作为主要的脚本语言,提供了更高效的性能和更灵活的扩展性,同时保持与Vim的高度兼容性。Neovim的社区也很活跃,有很多优秀的插件让它变得更加高效便利。
Vim与Neovim的区别:虽然Neovim在很多方面与Vim相似,并且兼容大多数Vim的插件和配置,但Neovim通过采用现代架构和异步IO,提供了更好的性能和扩展性。Neovim的配置更加现代化,支持Lua脚本,而Vim主要使用VimScript,知道VimScript的朋友应该知道这门语言不太友好。
2. 安装 Neovim
第一步我们先安装Neovim:
brew install neovim
安装成功之后执行:
nvim
就可以看到Neovim的欢迎界面了。
3. 安装 LazyVim
Neovim有很多的发行版,每种发行版其实就是对应一套开箱即用的配置,可以免去我们重头开始自己配置所有的东西。比较优秀的发行版有NvChad、LunarVim、AstroNvim、SpaceVim等等。
我使用的是LazyVim,它是lazy.nvim的作者开源的一套配置,我觉得还是比较好用的,同样也适合新手入门。
lazy.nvim是Neovim下的插件管理工具,LazyVim当然也内置了lazy.nvim。
官网:https://github.com/folke/lazy.nvim
3.1. 安装依赖
- Neovim、Git已经安装过了。
- Nerd Font字体看过前面文章的小伙伴应该也有了。
- lazygit可选,给你在终端下提供一个Git的可视化界面,不知道的可以了解一下https://github.com/jesseduffield/lazygit
brew install jesseduffield/lazygit/lazygit
- 一个C编译器给nvim-treesitter使用,gcc就是一个C编译器,一般都是默认系统自带的,
gcc -v
可以查看一下对应的版本,treesitter是一个编程语言解析器,基于它可以做语言高亮、代码导航、代码格式化等等功能,在安装Neovim的时候已经安装了这个依赖。
- telescope.nvim搜索插件要安装一下,用起来非常方便,可以搜索文件、内容等,安装相关依赖。
brew install ripgrep
brew install fd
- 终端我们就用iterm2!
3.2. 安装 LazyVim
第一步:首先备份原来Neovim的配置文件,以后在使用别人的配置文件之前也要养成备份的好习惯,以免覆盖了自己的配置无法找回。
# required
mv ~/.config/nvim{,.bak}
# optional but recommended
mv ~/.local/share/nvim{,.bak}
mv ~/.local/state/nvim{,.bak}
mv ~/.cache/nvim{,.bak}
第二步:下载LazyVim的配置
git clone https://github.com/LazyVim/starter ~/.config/nvim
第三步:删除.git文件夹,可以关联到自己的远程仓库
rm -rf ~/.config/nvim/.git
第四步:启动Neovim可以看到LazyVim的配置正在初始化。
nvim
初始化配置成功之后的界面
按q可以回到欢迎界面
最后在Neovim里执行
:LazyHealth
查看插件的工作情况,针对报错的可以按照提示进行修复。
3.3. 问题修复
- 安装luarocks
brew install luarocks
- 安装wget
brew install wget
- 安装node环境
brew install node
用npm安装一下neovim
npm install -g neovim
OK,node环境非常重要,很多插件的工作都依赖node,当然如果你写前端的话也离不开node。
如果还有其他问题大家可以自行搜索解决了,其实基本上安装好之后就可以正常使用了,这里只不过给大家演示一下遇到如何解决遇到的错误提示。
4. 配置 LazyVim
4.1. 基础知识
键默认是空格
存放下载的插件的位置:
~/.local/share/nvim
目录结构
.
├── LICENSE
├── README.md
├── init.lua # 初始化配置,启动 lazy.nvim、自定义配置和插件
├── lazy-lock.json
├── lazyvim.json
├── lua
│ ├── config # 配置目录
│ │ ├── autocmds.lua # 每次打开 nvim 自动执行的命令
│ │ ├── keymaps.lua # 快捷键配置
│ │ ├── lazy.lua # lazy.nvim 的配置
│ │ └── options.lua # 个性化配置
│ └── plugins # 插件目录,每个插件对应一个 .lua 文件
│ └── example.lua
├── stylua.toml
└── test.txt
4.2. 内置快捷键
键是一个前置键,默认是空格,输入一个可以看到LazyVim的提示,根据提示操作
基础快捷键:
shift + h/l:左右切换Buffer
ctrl + hjlk:上下左右导航窗口
详细的快捷键使用,可以查看官方文档,建议跟着操作一下主要的快捷键,这东西就是熟能生巧。
快捷键:https://www.lazyvim.org/keymaps
4.3. 自定义快捷键
在lua/config/keymaps.lua文件中添加自定义的快捷键配置即可。
-- Keymaps are automatically loaded on the VeryLazy event
-- Default keymaps that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/keymaps.lua
-- Add any additional keymaps here
local keymap = vim.keymap
-- Genreral Keymaps
keymap.set("i", "ii", "<ESC>")
-- save file
keymap.set("n", "W", ":w<CR>")
-- exit all file
keymap.set("n", "Q", ":qa<CR>")
-- copy entire file
keymap.set("n", "Y", ":%y<CR>")
默认的快捷键配置可以在这里查看:https://www.lazyvim.org/configuration/general
4.4. 配置主题
在lua/config/colorscheme.lua文件中安装主题,设置LazyVim加载对应的主题,除了自带的tokyonight主题,再推荐两个比较好看好用的主题。
- 安装gruvbox主题
return {
-- add gruvbox
{ "ellisonleao/gruvbox.nvim" },
-- Configure LazyVim to load gruvbox
{
"LazyVim/LazyVim",
opts = {
colorscheme = "gruvbox",
},
},
}
- 安装everforest主题
return {
-- add everforest
{

"neanias/everforest-nvim",
version = false,
lazy = false,
priority = 1000, -- make sure to load this before all the other start plugins
-- Optional; default configuration will be used if setup isn't called.
config = function()
require("everforest").setup({
-- Your config here
})
end,
},
-- Configure LazyVim to load gruvbox
{
"LazyVim/LazyVim",
opts = {
colorscheme = "everforest",
},
},
}
- 安装catppuccin主题
return {
-- add catppuccin
{
"catppuccin/nvim",
lazy = true,
name = "catppuccin",
opts = {
integrations = {
aerial = true,
alpha = true,
cmp = true,
dashboard = true,
flash = true,
gitsigns = true,
headlines = true,
illuminate = true,
indent_blankline = { enabled = true },
leap = true,
lsp_trouble = true,
mason = true,
markdown = true,
mini = true,
native_lsp = {
enabled = true,
underlines = {
errors = { "undercurl" },
hints = { "undercurl" },
warnings = { "undercurl" },
information = { "undercurl" },
},
},
navic = { enabled = true, custom_bg = "lualine" },
neotest = true,
neotree = true,
noice = true,
notify = true,
semantic_tokens = true,
telescope = true,
treesitter = true,
treesitter_context = true,
which_key = true,
},
},
},
-- Configure LazyVim to load gruvbox
{
"LazyVim/LazyVim",
opts = {
colorscheme = "catppuccin",
},
},
}
4.5. 配置 C/C++ 环境
配置环境可以通过LazyVim Extras提供的开箱即用的功能进行配置,可以看到这些都是Extras提供的功能。
输入:LazyExtras进入配置界面,可以看到默认打开会给我们推荐可以安装的配置Recommended Languages。
找到我们C/C++运行环境clangd按x启用配置即可,再按一次关闭配置。
设置完成之后重启nvim相关的插件就会自动安装。
编写一个test.cpp的文件测试一下代码提示、代码补全、错误诊断、保存格式化等。
4.6. 配置 JSON 和 Markdown
找到json和markdown按x启用即可。
找一篇markdown文档leader + c + p:可以在浏览器预览
好了安装环境这部分大家需要什么环境自行安装就好了。
后面针对python环境的配置可能单独出一篇文章介绍,如果方便地管理python环境、在VSCode中如何配置等。
5. 最后
本篇介绍了Vim和Neovim,在使用Neovim前首先需要掌握Vim的使用,因为Vim是基础操作,Neovim只不过是一个可定制化的工具而已,关于Vim的使用我想出一个单独的系列好好讲讲。
还讲解了如何安装Neovim以及它的发行版LazyVim,搞清楚它的目录结构、内置快捷键、如何自定义快捷键、配置好看的主题,还有一步很关键的方便的配置开发环境(真的非常方便,网上很少有相关的文章教你这样安装),总之踩了很多的坑总结的经验都分享给大家了,希望大家可以愉快的使用Neovim Coding。
Neovim还有很多的插件,每一个插件的用途可以自行在GitHub搜索学习。
6. 参考资料
- LazyVim官网:https://www.lazyvim.org/
- LazyVim电子书(未完结):https://lazyvim-ambitious-devs.phillips.codes/
- Vim教程:https://www.acwing.com/blog/content/18141/