基于 LunarVim 搭建不同编程语言 IDE

本文介绍,如何基于 LunarVim 搭建不同编程语言的 Neovim IDE 开发环境。

前言

本文将用几行命令快速安装 Neovim IDE,完成不同编程语言的环境搭建。尽量不涉及到自定义配置,将完全基于 LunarVim 作者维护的配置实现。

两个 Github 核心仓库,分别是:

starter.lvim 以分支形式保不同语言的配置,具体自行查看仓库。

为了测试方便,介绍 LunarVim 提供的一个能力,通过 Lunarvim 通过 LUNARVIM_CONFIG_DIR 变量决定配置文件目录。

接下来的测试,我会将不同语言的配置,放到不同的目录中。

如果希望一个配置支持大部分语言,则要将这些配置合并,进行配置自定义,对 Lunarvim 的 configlua 代码进行大的改动,不易维护。

安装

LunarVim 提供了安装脚本,使用如下命令安装即可。

bash 复制代码
LV_BRANCH='release-1.3/neovim-0.9' bash <(curl -s https://raw.githubusercontent.com/LunarVim/LunarVim/release-1.3/neovim-0.9/utils/installer/install.sh)

安装过程中要下载一些依赖,如 pynvim,cargo 之类的,如果已经安装可选择 no。

注:部分语言环境和命令要提前安装。如 python,make, git 等

如果要 dev icon 支持,安装 Nerd 字体,macOS 安装命令如下:

bash 复制代码
brew tab homebrew/cask-fonts
brew install --cask font-hack-nerd-font

安装成功,将终端字体更新为 Hack Nerd Font 相关字体。

如下所示,以 iTerm2 为例:

现在执行 lvim,将看到 lazy.nvim 开始自动下载插件,如下是效果图:

初步体验

体验下 Lunarvim 默认配置,与语言无关的能力。

目录浏览

使用 "<空格>+e" 显示文件树,再次 "<空格>+e" 关闭,效果如下:

查找文件

使用 "<空格>+f",查看文件,如下:

查找符号

输入 "<空格>+lS",全部符号搜索,如下:

重构变量名

输入 "<空格>+lr",将 'anyMethods' 更新为 'anyMethodList',如下:

类型引用查找

输入 "gr",查找 "RouterGroup" 被引用的地方。

定义跳转

输入 "gd",跳转到 "RouterGroup" 定义。

Git 支持

内置 lazygit 处理复杂事务,同时内置对部分 ShortCut 和简单的 Git 命令的进行了绑定。

LunarVim 默认支持的能力还是挺丰富的。

详细内容可查看它的文档,或者 "<空格>" 显示 whch-key 菜单,自行探索。深入了解的话,最好是阅读 Lunarvim 的 lua 配置源码。如果能独立配置 Neovim,再看它的源码会有更好的体悟。

配置

前面已经介绍 LunarVim 和 starter.lvim 的关系。实操的话,如何配置呢?

Golang

首先,以 go-ide 为例,使用如下命令启动 lvim:

bash 复制代码
alias lv-go="LUNARVIM_CONFIG_DIR=~/.config/lvims/golang lvim "

将 starter.lvim 的 go-ide 分支下载到 ~/.config/lvims/golang/ 目录下。

bash 复制代码
git clone https://github.com/Lunarvim/starter.lvim --branch go-ide ~/.config/lvims/golang

下载完成,记得在原有的 config.lua 中的新增一行配置,如下所示;

lua 复制代码
lvim.format_on_save.enabled = true

实现保存后的通过 goimports 和 gofumpt 实现代码的自动格式化。

运行 lv-go 开启 Go 项目。

首次进入,通过 Mason 安装一些 Go 相关的工具,如下:

bash 复制代码
:MasonInstall gopls golangci-lint-langserver delve goimports gofumpt gomodifytags gotests impl

体验下效果:

错误提示,自动补全能力,都已经支持的很棒了。

Python

配置 python-ide,使用如下命令启动 lvim:

bash 复制代码
alias lv-py="LUNARVIM_CONFIG_DIR=~/.config/lvims/python lvim "

将 starter.lvim 的 go-ide 分支下载到 ~/.config/lvims/python/ 目录下。

bash 复制代码
git clone https://github.com/Lunarvim/starter.lvim --branch python-ide ~/.config/lvims/python

运行 lv-py 开启 Python 项目。效果图如下:

其他语言 IDE 的安装就不详细说了,类似步骤。另外,starter.lvim 支持编程语言很多,按需要取用。

最后说明

本文只是快速使用体验教程,如希望更深入了解,可自行查看配置。诸如了解它的快捷键如何使用,只有直接看配置才能知道。

另外,这里的配置除了支持 lsp,language server,基本也都支持 dap,即调试能力。

由于,这些配置的使用细则都没有提供文档,而且既然已经用 neovim 了。至少还是要能看懂和写写配置的,不然是没有办法用好 Neovim 的,更谈不上,个人偏好的配置自定义。

相关推荐
小蒜学长18 分钟前
基于Spring Boot+Vue3的在线医疗咨询系统的设计与实现(代码+数据库+LW)
java·spring boot·后端·在线问诊·在线医疗咨询系统
echome88838 分钟前
Python 异常处理:try、else、finally 的正确搭配
开发语言·前端·python·异常处理·编程技巧
时间的情敌42 分钟前
OpenLayers 实战|Vue3 + OpenLayers 完整工程案例(加载天地图、要素、弹窗、绘制、WFS)
前端·openlayers
陈随易43 分钟前
下载神器!Motrix 停更三年后重写回归
前端·后端·程序员
每天一道题1 小时前
CAP、Raft 与多数派:分布式系统如何达成一致?
分布式·后端·微服务
前端的日常1 小时前
一个人+AI做情侣食谱小程序,0 费用的服务器
前端·后端
计算机魔术师2 小时前
谷歌搜索广告踩刹车,AI广告成为救命稻草
前端
总要学点什么2 小时前
第81篇:数据可视化-PM2.5分布——让圆点的胖瘦替每座城市报出浓度
前端·信息可视化·echarts·cesium·空间分析
IT_陈寒2 小时前
Vue的v-for里用了个临时变量,页面直接挂了
前端·人工智能·后端
hunter_0762 小时前
一次 iOS 真机签名 409 的完整排查:证书、设备、描述文件为什么总是"对不上"
前端