我使用的是 Macbook pro M2Pro 版本,系统版本为 macOS 14.1。我的 版本信息如下
讯享网
在使用 一年多之后,我越发觉得 的配置麻烦,启动加载速度也不尽人意。我也很不喜欢 Vimscript 的写法,这导致我决定使用 。我决定重新配置 。为什么会想要重新配置而不是迁移配置呢?因为我想顺便趁着这个机会,重新审视我本来 的配置,以及将本来用到的的插件替换为现在的 SOTA(State-of-the-art)。我自从看完 MIT 的 Missing semester 的课配置了 之后就很长时间都没有再编辑 文件了
我认为在配置 的时候弄清楚每一个选项的意思是很有必要的,因此我在这篇博客中会尽量解释清楚每个选项的含义,同时将解释放在注释里面,即我尽量让我自己的配置文件是 self-contained 而且可读性强的
当然,这难免有疏漏。别忘了我们永远可以在 里面输入 来看到更为详细的解释
该篇博客假定你对 有基本了解
在配置 的时候,我会 尽可能 使用 Lua 语言编写配置文件,因此你有必要了解一下 Lua 的基本语法和语义。可以快速浏览一下 Learn Lua in Y minutes 了解大概
的配置目录在 下。在 Linux or macOS 系统上,Nvim 会默认读取 文件,理论上来说可以将所有配置的东西全部放在此文件中,但这样不是一个好的做法,因此需要划分不同的目录分管不同的配置
首先看下按照本篇教程 之后,目录结构看起来会是怎么样的 ↓
讯享网
解释如下:
- 为 配置的 Entry point,我们主要用来导入其他 文件
- 配置主题
- 配置按键映射
- 配置 LSP
- 配置选项
- 配置插件
- 用于存放各种插件自身的配置,文件名为插件的名字,这样比较好找。这里的 就是 插件的配置文件
- 目录。当我们在 Lua 里面调用 加载模块(文件)的时候,它会自动在 文件夹里面进行搜索
- 将路径分隔符从 替换为 ,然后去掉 后缀就得到了 的参数格式
- 比如要导入上面的 文件,可以用
主要用到的就是 、、 等,我制造了一个快速参照对比的表格
在 里面进行按键绑定的语法如下,具体的解释可以看
在阅读了前面一些配置基础之后,现在我们可以从头开始,由简到易一步步配置 了
我是使用 macOS,用 Brew 命令安装即可
讯享网
在安装完成之后,如果 目录不存在,创建目录并新建 文件
配置文件编辑保存之后,重启 就能看到效果,后面默认每次小章节配置完成后就重启,或者执行生效命令:
选项配置功能一览:
- 默认采用系统剪贴板,同时支持鼠标操控
- Tab 和空格的换算
- UI 界面
- “智能”搜索
新建 文件并加入如下内容⬇️
讯享网
然后打开 ,用 导入刚才写的 文件
按键功能一览:
- 用 快速在多窗口之间移动光标
- 用 + 方向键进行窗口大小的调整
- 选择模式下可以一直用 或者 改变缩进
新建 文件并放入如下内容⬇️
讯享网
然后在 文件里面再次加上一行导入这个文件
表示我们省略了其他部分的代码(为了节省博客的篇幅)
一个强大的 离不开插件的支持。我选用的是当下最为流行,而且完全用 Lua 语言编写的 Packer.nvim。它支持如下许多特性:
- 支持配置第三方插件的依赖
- 支持 Lazy loading
- 支持设置插件安装之后的钩子函数
- …
后续考虑切换到 Lazy.vim 进行插件管理
在 配置里面指定第三方插件很简单,用 即可
新建 文件并放入如下内容。下面的模板只完成了 Packer.vim 自身的安装,还没有指定其他第三方插件。这个模板的功能主要是
- 初次启动的时候自动安装
- 当我们保存对这个文件()文件的修改的时候,Packer.nvim 会自动帮我们自动更新插件和帮我们做好配置。你可以看到 右边看到多了一个窗口显示进度
💡 Packer.nvim 还支持了不少命令,不过你不需要把他们都记住。因为这个模板会自动帮我们处理好。值得一提的是如果因为网络问题安装失败的话,在它弹出的窗口里面按照提示按下大写的 就会自动重新下载。在 Packer.nvim 提示全都安装成功后,重启 就生效了
讯享网
然后在 文件里面再次加上一行导入这个文件
此时你重启 会发现黑屏没显示,这是因为 Packer.nvim 在安装自己,静待片刻即可☕️
我喜欢的主题是 monokai.nvim 和 tokyonight.nvim ,在 里面加上
这里以 monokai.nvim 为🌰
讯享网
保存更改待 Packer.nvim 下载插件完成之后,新建并编辑 文件
这里用到的 是 Lua 里面的 protected call,会返回一个 变量表示是否执行成功(跟 Golang 的 功能类似)。这里采用 而不是直接在 文件里面加上 是为了避免主题没有安装的话打开 看到一大堆报错信息2
最后在 文件里面导入就行
讯享网
自己手动配置自动补全功能的话会比较繁琐,所以我们最好是借助于一些插件来帮忙,下面我讲讲我摸索出来的最简单配置方法
首先,第一个要用到的插件是 nvim-cmp,它可以管理各种补全候选项来源,然后展示在补全菜单里面,还支持我们对外观等进行定制化。
我们先新建 文件配置
💡 这里首先选择写 的配置文件然后再在 文件里面用 添加插件。这样可以保证 Packer.nvim 安装 nvim-cmp 的相关插件读取 配置文件的时候不会报错。下面的配置文件暂时看不懂也没有关系,我会对其进行解释
然后我们修改 文件添加插件
讯享网
解释如下
- 函数的参数是一个 Lua 的 Table,用于设置各个选项(下面会解释)。后面你会发现很多第三方插件都用 传入一个 Lua table 的方式进行配置,这个是 的 Lua 插件的惯例
- 不要被上面的这么多插件吓到, 为主,其他 的插件是用于在候选项来源和 之间交互
- 是 code snippet 引擎,因为 要求我们必须指定至少一个 code snippet 引擎来源所以才加上,你暂时用不到当它不存在也没有关系
- Packer.nvim 支持用 指定对应插件被加载之后要运行的代码,所以 的意思是导入了 文件夹里面的 文件,这个设计参考了3
按键映射用的是 ,每个按键绑定的格式是 ,不同的 的含义可以用 查看。如果你想要用其他的按键,只要修改 里面的按键即可
按照我的个人习惯,设置了

- 或者 在各种候选项里面移动
- 在候选项的文档里面移动
- 也就是回车键确定补全
nvim-cmp 里面的补全菜单
补全菜单的定制化用的是
- 字段规定了每个候选项要显示什么东西
- 设置了不同的候选项的来源显示,在 里面声明来源
🎙️ 到这为止,重新启动 后应该能够用初步的自动补全功能了~
要把 变成 IDE 就势必要借助于 LSP,自己安装和配置 LSP 是比较繁琐的。不同的 LSP 安装方法不同,也不方便后续管理。这就是 mason.nvim 和配套的 mason-lspconfig.nvim 这两个插件大放异彩的地方🥰
❗️ 注意, 和 和前面我们已经添加的 这三个插件之间的安装和配置是_有顺序要求的_。推荐直接照搬我下面的就好了
首先修改 文件,增加上面这两个插件
新建一个 文件并编辑,首先配置 和
讯享网
💡 我们想要用什么语言的 LSP 就在 里面加上,完整的列表可以看 server_configurations。我个人常用的就 这三个编程语言,而因为我们都用 Lua 语言来配置 ,所以也加上了
重启 之后你应该可以在下面的状态栏看到 Mason 正在下载安装上面我们指定的 LSP(注意此时不能关闭 ),可以输入 查看安装进度。在你等待安装的过程中,可以输入 查看更多帮助信息了解如何使用 插件
在成功安装 LSP 之后,我们就可以用 插件进行配置了。因为配置的代码比较长,下面只展示了 的配置,其他语言的配置大同小异。如果有疑惑,可以查看该文件的最新版本
💡 每个 LSP 都存在自己可以配置的选项,你可以自己去对应 LSP 的 GitHub 仓库查阅更多信息。如果要用默认配置的话,基本上每一个新的语言都只需要设置
编辑 文件新增如下内容
最后在 文件里面加上
讯享网
上面的按键绑定的意思是很直观的,这里就不多解释
大功告成🎉🎉🎉
这样配置下来,我们成功把 变成了一个轻量级的 IDE,它支持代码高亮、代码补全、语法检查等功能,而且是_完全开源免费的_,虽然还有些简陋,但已经是可以用的了🥰
我发现自从学了 Vim 之后,我总在其他各种代码编辑器、IDE 看是不是支持 Vim。大多数情况下,他们对 Vim 的支持都不是很让人满意,还容易有快捷键冲突等问题。因此我选择将 变成 IDE,并将配置文件托管在我的 Gtihub 上。这样在新的机器上只要安装好 并克隆配置静待片刻之后,就可以在不同的机器上获得 一样的 编程体验
打磨定制化工具是需要付出一定精力的。为了理解每个选项都在干啥,我不得不查找各种资料。但我仍相信这是值得的,理解你的工具利于你做扩展和定制化。本文已经尽可能采用了比较简单的配置,还有很多美化、私人定制化的内容可以配置,更别提其他很多优秀的第三方插件都还没有提及,这些就留给读者自己去探索发现了
- Installing-Neovim ↩︎
- Adding a colorscheme/theme ↩︎
- jdhao/nvim-config ↩︎
- Language Server Protocol - Wiki ↩︎

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/156684.html