使用Lunarvim搭建开发环境

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

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

为什么选 Lunarvim

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

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

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

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

安装

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

许可协议