lunarvim + neovide的炫酷开发环境

环境和依赖

lunarvim 的官方文档:
https://www.lunarvim.org/zh-Hans/docs/installation

笔者这里是Ubuntu 22

1
2
3
4
5
6
fenix@thisway:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 22.04.1 LTS
Release: 22.04
Codename: jammy

1. Neovim

目前lunarvim要求neovim版本0.8.0 以上。

在这里可以找到:
https://github.com/neovim/neovim/releases/tag/stable

安装deb:

1
rpm -ivh nvim-linux64.deb

2. rust

安装依赖rust环境:

1
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

rust默认的中央仓库如果访问较慢,可以在~/.cargo/config中配置一些国内镜像:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[source.crates-io]
registry = "https://github.com/rust-lang/crates.io-index"
# 指定镜像
replace-with = 'ustc'


# 中国科学技术大学
[source.ustc]
registry = "git://mirrors.ustc.edu.cn/crates.io-index"

# 上海交通大学
[source.sjtu]
registry = "https://mirrors.sjtug.sjtu.edu.cn/git/crates.io-index"

# 清华大学
[source.tuna]
registry = "https://mirrors.tuna.tsinghua.edu.cn/git/crates.io-index.git"

# rustcc社区
[source.rustcc]
registry = "https://code.aliyun.com/rustcc/crates.io-index.git"

3. 安装git,make,gcc,python,pip,node,npm

1
sudo apt install git build-essential python3 python-pip nodejs npm

安装lunarvim

执行脚本:

1
LV_BRANCH='release-1.2/neovim-0.8' bash <(curl -s https://raw.githubusercontent.com/lunarvim/lunarvim/fc6873809934917b470bff1b072171879899a36b/utils/installer/install.sh)

配置环境变量

1
2
export PATH=/home/fenix/.local/bin:$PATH
alias vim=lvim

安装字体

安装最新版nerd-fonts

1
wget -c https://github.com/ryanoasis/nerd-fonts/releases/download/{版本}/SourceCodePro.zip

安装字体

1
2
3
4
5
sudo unzip SourceCodePro -d /usr/share/fonts/SourceCodePro
cd /usr/share/fonts/SourceCodePro
sudo mkfontscale # 生成核心字体信息
sudo mkfontdir # 生成字体文件夹
sudo fc-cache -fv # 刷新系统字体缓存

为你的终端配置字体为SourceCodePro,lunarvim的emoji和icon就可以正常显示了。

插件

执行vim后 :LvimUpdate 尝试更新插件

lsp语言插件

:TSInstall 后面接上语言,笔者这里就只安装Rust了。
执行

1
:TSInstall rust

可以看到
1

支持补全和注释显示
2

目前的版本还不支持inlay-hint,我们需要再配置几个插件

leader键 + L + c

找到:

1
2
3
lvim.plugins = {

}

添加rust-tools:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65

lvim.plugins = {
{
"simrat39/rust-tools.nvim",
config = function()
local status_ok, rust_tools = pcall(require, "rust-tools")
if not status_ok then
return
end

local opts = {
tools = {
executor = require("rust-tools/executors").termopen, -- can be quickfix or termopen
reload_workspace_from_cargo_toml = true,
inlay_hints = {
auto = true,
only_current_line = false,
show_parameter_hints = true,
parameter_hints_prefix = "<-",
other_hints_prefix = "=>",
max_len_align = false,
max_len_align_padding = 1,
right_align = false,
right_align_padding = 7,
highlight = "Comment",
},
hover_actions = {
border = {
{ "╭", "FloatBorder" },
{ "─", "FloatBorder" },
{ "╮", "FloatBorder" },
{ "│", "FloatBorder" },
{ "╯", "FloatBorder" },
{ "─", "FloatBorder" },
{ "╰", "FloatBorder" },
{ "│", "FloatBorder" },
},
auto_focus = true,
},
},
server = {
on_attach = require("lvim.lsp").common_on_attach,
on_init = require("lvim.lsp").common_on_init,
settings = {
["rust-analyzer"] = {
checkOnSave = {
command = "clippy"
}
}
},
},
}
local extension_path = vim.fn.expand "~/" .. ".vscode/extensions/vadimcn.vscode-lldb-1.7.3/"

local codelldb_path = extension_path .. "adapter/codelldb"
local liblldb_path = extension_path .. "lldb/lib/liblldb.dylib"

opts.dap = {
adapter = require("rust-tools.dap").get_codelldb_adapter(codelldb_path, liblldb_path),
}
rust_tools.setup(opts)
end,
ft = { "rust", "rs" },
},
}

然后hint就可以在右边正常显示了
3

一些Rust用的命令

  • 运行Rust代码:RustRun
  • 展开宏RustExpandMacro
  • 编译为IR RustEmitIR

其他插件

此外还有一些比较常用的插件:

  1. markdown预览
    1
    2
    3
    4
    5
    6
    7
    8
    {
    "iamcco/markdown-preview.nvim",
    run = "cd app && npm install",
    ft = "markdown",
    config = function()
    vim.g.mkdp_auto_start = 1
    end,
    },
  2. 自动保存
    1
    2
    3
    4
    5
    6
    {
    "Pocco81/auto-save.nvim",
    config = function()
    require("auto-save").setup()
    end,
    },

neovide

neovide是一个Rust实现的neovim前端,非常炫酷,支持这样的cursor动态效果,丝滑滚动,窗口动画等
4

安装

我们这里就不自己编译了,这里下载二进制包

1
https://github.com/neovide/neovide/releases/latest/download/neovide.tar.gz

解压完成后

1
mv neovide /usr/local/bin/

即可

然后配置我们的lvim脚本 ~/.local/bin/lvim
最后一行改为:

1
exec -a lvim neovide 	 "$@" -- -u "$LUNARVIM_BASE_DIR/init.lua"

即可体验neovide下的lunarvim,直接执行lvim即可。

配置

配置可以在这里看到
https://neovide.dev/configuration.html
这里有完整的配置。配置文件就是lunarvim的配置文件,打开lvim后点leader键 + L + c
就是config.lua。将配置加到最后即可,目前笔者配置了下面几个:

1
2
3
4
5
6
7
8
9
--透明度
vim.g.neovide_transparency = 0.9

-- cursor特效
vim.g.neovide_cursor_vfx_mode = "railgun"
--vim.g.neovide_cursor_vfx_mode = "ripple"

-- neovide profile用于查看目前帧数,渲染延迟
vim.g.neovide_profiler=true
  • 本文作者: fenix
  • 本文链接: https://fenix0.com/lunarvim/
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC 许可协议。转载请注明出处!