使用Lunarvim搭建开发环境

前两个周上班时感觉右手手麻,以为自己是不是年纪轻轻就椎间盘突出压迫神经了,吓人的很,花 500 大洋去医院拍了个 CT, 好消息是医生说没什么事,不是椎间盘的问题,然后问到我的工作,是不是经常用鼠标的问题,我一下子就想到了我那个毫无人体工程学的 magicmouse, 害。

虽然现在已经好了不再手麻了,但是之前就有的学习一下 vim 的念头又被我拾起来了,趁着周末折腾一下配个环境试试。

为什么选 Lunarvim

其实在选用 Lunarvim 之前,我在网上已经看了一些帖子了,但是 vim 相关的文章真的不多哦,东拼西凑了一些文章开始用 neovim 来从头配置开发环境,还赶潮流的用了 Lazy.nvim 作为插件管理器,真的是太年轻了,两个晚上没配出来一个能用的环境,直接心态爆炸了。。。

然后就退而求其次,我们 VSCode 装一个 vim 插件,也可以的,但是用着 vim 的快捷键和 VSCode 的快捷键,有点割裂,又想再折腾一下。

这个时候,在网上发现了 spacevim 和 lunarvim,看了一下还是别人的 starter 比较香,最终选用了 Lunarvim。我选择的原因如下:

  • Lunarvim会自动安装打开文件所需要的 LSP 和 treesitter 高亮内容
  • 开箱即用,我没有额外安装任何插件
  • 官网有中文文档,虽然没有全部翻译,但是够用了。

安装

Lunarvim 的安装是比较简单的,照着官网教程走即可。我这里碰到了两个坑,可以记录一下:

  • 使用neovim 0.8版本的时候nvm-web-devicons的图标有些不能正常显示,换到了neovim 0.9之后就可以了。
  • telescope的文本搜索没生效,后边才发现需要本地装一个插件 ripgrep, 直接 brew install ripgrep 即可。

然后我做了一些自己觉得舒服的配置,这个自己根据自己的需求来即可:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
-- config.lua
-- ESC
lvim.keys.insert_mode["jk"] = "<ESC>"
-- 代码块移动
lvim.keys.visual_mode["K"] = ":m '<-2<CR>gv=gv"
lvim.keys.visual_mode["J"] = ":m '>+1<CR>gv=gv"
-- 页签左右切换
lvim.keys.normal_mode["<C-n>"] = ":bprevious<CR>"
lvim.keys.normal_mode["<C-m>"] = ":bnext<CR>"
-- 窗口
lvim.keys.normal_mode["<leader>vv"] = "<C-w>v" -- 水平新增窗口
lvim.keys.normal_mode["<leader>vh"] = "<C-w>s" -- 垂直新增窗口
-- 自定义配置
vim.opt.relativenumber = true -- 相对行号
vim.opt.termguicolors = true -- 终端真颜色
vim.opt.signcolumn = "yes"
vim.opt.wrap = true -- 自动换行
-- 透明背景要设置这个
lvim.transparent_window = true
-- 设置主题
lvim.colorscheme = "tokyonight-moon"


vim语法

如果是自己从头配置 vim ,那么真的是可以洋洋洒洒写一大篇配置的文章,但是由于我选用了 Lunarvim, 真的没有什么配置的内容好写了,所以这篇文章的主要目的是搜罗一些常用的 vim 语法记录下来,毕竟在这之前对于 vim 的了解仅限于能打开能退出的程度。。。

在这里分类记录一下 vim 的各个语法,方便查阅。

光标移动相关

命令 行为
h,j,k,l 左,下,上,右
control + u 翻上半页 up
control + d 翻下半页 down
control + f 翻下一页 forward
control + b 翻上一页 backward
w 跳到下一个单词的字首
e 跳到下一个单词的字尾
b 跳到上一个单词的字首
0 跳到当前行的行首
^ 跳到当前行行首的第一个字符
$ 跳到行尾
gg 跳到文本的开头
G 跳到文本的结尾
f + x 在当前行搜索 x 字符,按;跳到下一个x字符
/ + x 在文本中搜索 x 字符,按n跳到下一个

复制/删除

命令 行为
dd 删除一行
dw 从光标位置开始删除到单词结束
x 删除当前字符
y 复制光标下的内容
yw 从光标位置开始复制到单词结束
yy 复制一行
p 粘贴内容到当前行的下方
P 粘贴内容到当前行的上方

插入/编辑

命令 行为
i 在光标前进入插入模式
I 光标移动到行首进入插入模式
a 在光标后进入插入模式
A 光标移动到行尾进入插入模式
o 当前行下边新加一行并进入插入模式
O 当前行上边新加一行并进入插入模式
r 按下r之后输入的字符会替换光标下的字符,替换完成后进入普通模式
s 删除光标所在的字符并进入插入模式
S 删除光标所在行并进入插入模式
u 撤销最近的一次操作
control + r 重做,可以恢复撤销的内容
>> 当前行右移
<< 当前行左移
== 自动缩进当前行

保存/退出

命令 行为
:w 保存
:wq 保存并推出
:q 退出,如果修改未保存会提示
:q! 强制退出,放弃修改的内容不保存

对于刚接触 vim 的我来说,以上的命令足够我用了,接下来就可以使用 vim 来做一些简单的工作熟悉一下各种命令了,至于复杂项目,至少短期内应该不会用 vim 来作为主力开发工具,我也没想过用 vim 来作为主力开发工具。

作者

胡兆磊

发布于

2023-07-08

更新于

2023-07-10

许可协议