Linux上配置LunarVim:快速初始化Neovim,让你的文本编辑更加清爽和强大

2023-02-12 16:40:05 浏览数 (2)

博客:https://www.mintimate.cn Mintimate’s Blog,只为与你分享

头图?怎么能少?头图?怎么能少?

Neovim&LunarVim

Neovim最近几年的热度十分高,甚至我这个Vim用户,都开始转向使用Neovim了。相比之前使用Vim(尤其是Vim7.x之前,还未使用异步任务时),Neovim明显更快。同时Neovim使用Lua脚本化语言进行配置,确实更加方便。

但是手动配置Neovim,总归有点麻烦。尤其是刚转向Neovim,对Lua的语法还不是很熟悉的情况下,怎么才能快速配置,让它先跑起来呢?

答案很简单,就是用别人整合好的配置。网上有非常多别人整合好的GitHub仓库包,这里介绍一个特殊的项目:LunarVim

通过LunarVim的配置,可以让你的Neovim瞬间在Linux服务器上变身成为IDE。

LunarVim

其实,LunarVim的官网就有总结性的描述:

Interstellar Development Experience The IDE that's too cool for planet Earth. A stellar Neovim experience. The universe's most lightweight IDE. ……

官网描述官网描述

这个可能是使用Vim/Neovim,在没有安装插件时候的效果:

使用vim或neovim未安装插件使用vim或neovim未安装插件

这个就是使用LunarVim的效果:

使用lvim进行编辑使用lvim进行编辑

不过,安装起来还是有点麻烦,主要的原因:

  • 国内网络环境GitHub无法连接问题

本文就尽可能帮大家解决啦。

辅助视频

部分东西,还是视频比较清晰。

这里做个视频,主要内容:

  • 如何安装Nvim和
  • 如何卸载Nvim和Lvim
  • Lvim的部分功能展示
  • 使用建议

嘿嘿,做教程视频不易(B站根本不会推荐引流),请务必一键三连嗷:

  • B站视频地址: https://www.bilibili.com/video/BV1hR4y1Y7CS
  • 开发者社区地址: https://cloud.tencent.com/developer/video/75206
  • 海外用户地: https://www.youtube.com/watch?v=Z1pwsSIE3Iw

准备工具

其实就是个Shell工具,不管是Linux还是macOS都可以安装。(Windows的话,就没试过了~~)

Windwos的Neovim,LunarVim也是支持;但是我用Windows很少,就算用…… 我一般也是直接用Vscode作为文本编辑。

推荐Linux的Debian镜像推荐Linux的Debian镜像

如果你并没有Linux设备,需要一个Linux设备来练手,强烈推荐:

  • 腾讯云轻量应用服务器Lighthouse
  • 腾讯云轻量应用服务器学生优惠

另外,为大家争取到优惠*(੭ˊᵕˋ)੭ଘ:

  • 本站专属腾讯云秒杀链接(可低价购买轻量应用服务器)

安装用户

Lunarvim是可以给root和非root用户安装的。但是用root用户操作,终归有点不安全。

建议给非root用户安装。比如:玩一般会在服务器上创建我自己的用户:

代码语言:shell复制
# 当前root用户
useradd -s /bin/zsh -m mintimate
# 设置用户密码
passwd mintimate

之后,根据自己喜好,决定是否添加到sudo权限内。并切换到用户,进行后续neovim和lunarvim的安装操作。

Neovim安装

首先我们需要安装Neovim,安装的方法很多:

  • 软件包管理器安装
  • 软件包安装
  • 编译安装

没有说那种方法就最好,但是如果说麻烦…… 还是编译安装麻烦点,但是目前arm架构的Linux,目前只能用编译安装。

好在,编译安装的Neovim兼容性最好。

软件包管理器

你可以使用软件包管理器进行安装:

代码语言:shell复制
# Debian(include Ubuntu)
apt install neovim
# CentOS
yum install neovim
# macOS(需要Homebrew支持)
brew install neovim
Homebrew安装neovimHomebrew安装neovim

这样就安装完成了,并且版本是V0.8.2

代码语言:shell复制
mintimate at MacBookPro in ~
$ nvim --version
NVIM v0.8.2
Build type: Release
LuaJIT 2.1.0-beta3
Compiled by brew@Ventura

Features:  acl  iconv  tui
See ":help feature-compile"

   system vimrc file: "$VIM/sysinit.vim"
  fall-back for $VIM: "/usr/local/Cellar/neovim/0.8.2/share/nvim"

Run :checkhealth for more info
neovim版本neovim版本

但是,有时候,软件包管理器若安装的Neovim版本过低,就需要下载软件包安装或者手动编译安装了。

软件包

当然,有时候软件包管理器安装的Neovim过低,我们可以下载软件包安装。Neovim发布地址有提供Debian和CentOS的软件包:

Neovim发布包Neovim发布包

举个例子,我们在腾讯云的Debian/Ubuntu发行版本上进行安装:

代码语言:shell复制
# 下载发行版本
wget https://github.com/neovim/neovim/releases/download/stable/nvim-linux64.deb
# 使用dpkg包管理器安装
dpkg -i nvim-linux64.deb
Neovim版本Neovim版本

当然,不支持Arm架构,所以在树莓派上安装是不行的:

树莓派安装失败树莓派安装失败

那么?如何在树莓派上安装呢?

-- 答:编译安装

编译安装

上文看到,无法在树莓派上使用软件包管理器或者软件包安装。这里我们就来介绍如何编译安装。

首先,克隆项目,通常我们使用稳定版本:

代码语言:shell复制
# 克隆项目
git clone https://github.com/neovim/neovim
# 进入项目内
cd neovim
# 切换分支为稳定版本
git checkout stable
Neovim项目克隆和切换分支Neovim项目克隆和切换分支

之后,使用cmake进行编译:

代码语言:javascript复制
make CMAKE_BUILD_TYPE=RelWithDebInfo
项目cmake编译项目cmake编译

之后,使用命令进行安装:

代码语言:shell复制
sudo make install
make installmake install

通常情况下,这样就安装完成了:

neovim --versionneovim --version

如果你想卸载neovim,可以在当前目录下执行:sudo cmake --build build/ --target uninstall

LunarVim卸载

在安装之前,先教教大家如何卸载。以便在无法使用的情况下或者不需要的情况下,知道如何卸载。

LunarVim安装不需要root权限,并且是对原有的neovim进行封装,所以只是会有一些仓库文件。最棒的是,它的安装非常合规:

  • $HOME/.config/lvim:lvim的个性化配置文件;
  • $HOME/.local/bin/lvim:lvim的执行文件;
  • $HOME/.cache/lvim:lvim的缓存目录;
  • $HOME/.config/lvim.old:可能存在的lvim个性化文件备份
lvim的文件lvim的文件

所以,卸载LunarVim:

代码语言:shell复制
rm -rf ~/.config/lvim ~/.local/share/lunarvim ~/.local/bin/lvim ~/.config/lvim.old

这样就卸载好了,大道至简~~~

LunarVim安装

安装Lunarvim的方法,这里分两种:

  • 官方脚本: 官方的脚本,直接安装上最新的Lunarvim。当时需要连接GitHub,如果网络环境不佳,建议看看手动脚本
  • 手动脚本: 使用Gitee替换LunarVim的主项目更新地址,但是一些附属的插件和初始化步骤还是会从GitHub进行抓取。如果改方法还是卡在初始化,可以下载我预打包的文件进行配合。

官方脚本

我们的网络连接GitHub没有问题的话,用官方的脚本还是很方便的:

代码语言:javascript复制
LV_BRANCH='release-1.2/neovim-0.8' bash <(curl -s https://raw.githubusercontent.com/lunarvim/lunarvim/master/utils/installer/install.sh)
官方脚本安装官方脚本安装

如果网络有问题,正常会有一些报错,比如:无法校验插件完整

代码语言:javascript复制
[ERROR]: Unable to verify plugins, make sure to manually run ':PackerSync' when starting lvim for the first time.
无法校验插件无法校验插件

这个解决方法很简单,当时能不能有效,取决于网络能不能连接GitHub上插件的各个库。因为造成这样的原因,是Lunarvim基于packer进行插件的管理(安装、更新)。而它就是同步下载GitHub上各个项目的仓库地址。

如果已经解决网络问题,或者想重新尝试。可以在Lunarvim激活时(lvim命令),使用packer的:PackerSync命令进行更新。

首先,使用lvim命令进入Lunarvim,如果实现没有配置环境变量,通常找不到命令:

找不到命令找不到命令

我们需要把当前用户“家目录”下的.local/bin添加到环境变量:

代码语言:shell复制
# 如果你使用bash
echo "export PATH=$PATH:$HOME.local/bin" >> ~/.zshrc
# 如果你使用zsh
echo "export PATH=$PATH:$HOME.local/bin" >> ~/.zshrc

之后,重载环境变量,应该就可以使用lvim命令:

添加到环境变量添加到环境变量

使用命令:

代码语言:javascript复制
lvim

进入Luarnvim,会出现错误:

lvim命令错误lvim命令错误

这个时候,其实是处于命令模式,我们输入:

代码语言:javascript复制
:PackerSync

进行手动初始化(插件拉取载入):

拉取载入拉取载入

嗯…… 如果网络还是无法连接GitHub……。应该还是一堆的报错:

拉取失败拉取失败

这个时候,也不用慌。实在无法解决,可以参考手动脚本的下载预编译库进行替换初始化。

手动脚本

首先介绍一下脚本的原理:

  • 替换lunarvim.git为Gitee镜像源。
  • 汉化一些步骤提示
  • 使用基于CloudFare提供的网络CDN进行附属仓库的下载(为了不影响后续服务器上Git,在安装完后,会重置会默认。如果手动终止脚本运行,记得看看下文的恢复Git重定向)

安装脚本:

代码语言:javascript复制
bash <(curl -s https://api.host.mintimate.cn/fileHost/public/download/NMAd)
安装开始安装开始
安装成功安装成功

如果你卡在启用CloudFare加速步骤:

卡在Cloudflare加速卡在Cloudflare加速

可以按Ctril C终止进程,并恢复Git

代码语言:javascript复制
git config --global --unset url."https://fast.github.flyinbug.top/mintimate/https://github.com/".insteadOf "https://github.com/"

并使用我提前打包的镜像文件替换自己的文件。

镜像文件替换

如果使用官方脚本或者手动脚本出现任何问题。可以使用我预先安装打包的文件进行替换,没什么特别的,就是:

  • 提前克隆所有LunarVim所有插件库(共45个)
  • 打包并上传

我会不定期更新,下载地址:

https://alist.flyinbug.top/PublicShare/LunarvimStatic/latest

获取下载链接获取下载链接

之后,在终端依次执行:

代码语言:shell复制
# 进入仓库文件存放地址
cd ~/.local/share
# 下载镜像文件
wget -O lunarvim.tar-gz [地址存在Token,请自行复制]
# 删除原本未克隆成功的仓库
rm -rf lunarvim
# 解压文件替换
tar -xf lunarvim.tar-gz
# 归属文件为当前用户
chown -R `whoami`:`whoami` lunarvim
获取镜像文件获取镜像文件

之后,编辑文件,如果出现nvim-treesitter库的警告(这个其实是警告,实际上是LSP不工作,但是Lvim还是可以用的),比如:

nvim-treesitter库的警告nvim-treesitter库的警告

解决方法很简单啦: 更新Packer、更新编译器:

代码语言:javascript复制
:PackerSync
:TSUpdate
lvim内执行:PackerSynclvim内执行:PackerSync
lvim内执行:TSUpdatelvim内执行:TSUpdate

Lvim初始化

现在,我们进行初始化更新。

可以在Lunarvim激活时(lvim命令),:LvimUpdate命令进行更新。

首先,使用lvim命令进入Lunarvim,如果实现没有配置环境变量,通常找不到命令:

找不到命令找不到命令

我们需要把当前用户“家目录”下的.local/bin添加到环境变量:

代码语言:shell复制
# 如果你使用bash
echo "export PATH=$PATH:$HOME.local/bin" >> ~/.zshrc
# 如果你使用zsh
echo "export PATH=$PATH:$HOME.local/bin" >> ~/.zshrc

之后,重载环境变量,应该就可以使用lvim命令:

添加到环境变量添加到环境变量

更新操作:

更新操作更新操作

Lvim配置文件

现在我们来看看Lvim(LunarVim)的配置文件:

首先,Lvim的配置,官方为了不与Neovim的配置文件冲突。Lvim的配置文件为:

  • $HOME/.config/lvim/config.lua

配置在原有neovim的基础上,增加了Lvim的个性化配置。

Lvim的配置Lvim的配置

你可以添加一些vim或者neovim的配置,比如:

代码语言:javascript复制
vim.opt.backup = false -- 创建配置文件
vim.opt.clipboard = "unnamedplus" -- 允许属于unnamedplus插件,共享系统剪贴板
vim.opt.cmdheight = 2 -- 更多的空间展示neovim的信息(默认:1)
vim.opt.fileencoding = "utf-8" -- 设置UTF-8编码
vim.opt.number = true -- 设置行表
vim.opt.relativenumber = false -- 设置相对行标
vim.opt.scrolloff = 8 -- 设置光标发生滚动的距离值
vim.opt.sidescrolloff = 8 -- 设置光标和边距发生滚动的距离值

当然,还有一些Lvim的专属配置,比如:https://www.lunarvim.org/docs/configuration/keybindings

Lvim使用

简单介绍一下Lvim的使用吧。毕竟官方的使用指南是完完整整的一个文档,一篇博客,能简单入门就很不错了。

首先是“文件管理树”:nvim-tree

Lvim默认安装了nvim-tree插件,并且使用<leader>e键进行绑定(<leader>键默认为空格)。

在Lvim成功配置的情况下,可以按上述组合键,呼出“文件管理树”,配合鼠标和键盘进一步实现IDE的效果:

Lvim的treeLvim的tree

其次是内置终端:ToggleTerm

使用Ctrl 4可以快速呼出:

Lvim的toggletermLvim的toggleterm

最后,就是自带的LSP了。Lvim使用treesitter进行语法提升并下载支持。

所以在编辑文件,Lvim就会自动下载,如果不需要或者想自定义,可以关闭配置文件内的:

代码语言:ruby复制
-- treesitter自动下载
lvim.builtin.treesitter.auto_install = true
-- LSP自动下载
lvim.lsp.automatic_servers_installation = true

具体可以参考:https://www.lunarvim.org/docs/languages

Q&A

其实问题基本都是网络问题比较多。目前先留个空白目录吧,到时候看看大家遇到什么问题,做个追加~~

如果小伙伴对Vim的基础命令不熟悉,可以参考教程:

  • 终端文本编辑神器–Vim命令详解。如何配置Vim以及Vim插件?
  • 12分钟入门文本编辑利器Vim,并学会如何安装Vim插件(Windows/macOS/Linux)

END

到此,Lvim和它的“好朋友们”就安装并配置完成了。

你也可以配合ZSH,获得更好的Shell体验:

编辑zsh的用户配置文件编辑zsh的用户配置文件
zshzsh

参考教程:

  • Linux/Mac通过Oh-my-zsh配置Zsh插件,让你的终端更加强大且智能

有些人可能会说,用Vscode、IDEA之类的编辑器或者集成开发工具不好么?当然好,而且很方便;但是Neovim安装Lvim,是让你的neovim支持更多功能;有时候,我们可能需要修改Python脚本内某些数据,直接在Lighthouse服务器上用Neovim就可以直接操作,亦或者直接编辑Nginx文件,还是挺方便的。

多一个方法,多条路;可不是让你丢弃开发环境,全部使用neovim进行开发哦。

这篇文章这么长…… 会不会劝退很多人呢

0 人点赞