type
status
date
slug
summary
tags
category
icon
password
Neovim,作为Vim的现代化分支,以其卓越的性能和高度的可定制性吸引了众多开发者的目光。本文将介绍如何通过LazyVim这个优秀的配置框架,快速入门Neovim的世界。无论你是编程新手还是经验丰富的开发者,LazyVim都能为你提供一个开箱即用、功能强大的编辑环境。让我们一起探索Neovim的魅力,提升你的编码效率和乐趣!
Vim&Neovim
前言
去年捣鼓过一阵子vim,使用一段时间后插件逐渐增多,我感到配置和更新维护的整个过程过于繁琐,最终弃置不用。最近用Code OSS体验不佳,想更换编辑器,决定尝试一下lazyvim + neovim这样的简单配置。借助他人的现成框架,在此基础上稍作自定义。
有关neovim和lazyvim
Neovim
hyperextensible Vim-based text editor
为什么要在vim和neovim之间选择neovim呢?
nvim相比于vim拥有更好的社区生态,使用lua脚本进行配置,加载速度比vim快得多(vim9优化了速度方面的问题,但仍不及LuaJIT),同时Lua语言设计更为现代化,用于配置和开发时,易于模块化管理和扩展代码功能。此外,nvim的社区相比vim更加活跃,更新频率高,而vim在长期只有一人维护。
2024年stackoverflow报告指出,nvim是大家最喜欢的编辑器/集成开发环境,事实上好几年来都是nvim当这个第一(这个报告的其他一系列内容也很有趣,感兴趣的可以自行查看):https://survey.stackoverflow.co/2024/technology#admired-and-desired-new-collab-tools-desire-admire
vscode支持neovim插件,其中包含一个完整内置的neovim,完全支持neovim特性同时和vscode功能强强联手。
当然,nvim插件生态有一定的不稳定性,有许多重要的插件已经archived,如果正好在使用这类插件,将会对依赖项的更新会产生一定麻烦。使用者可能需要多多关注社区趋势。
Lazyvim
LazyVim 是一个为 Neovim 编辑器设计的配置方案,它旨在简化用户的定制和扩展过程,使得将 Neovim 打造成一个功能强大的集成开发环境(IDE)变得更加容易。LazyVim 通过使用
lazy.nvim
来实现配置的懒加载,从而加快了启动速度,并提供了大量预配置且即用型的插件。安装
前置条件(一般在linux上大多要点是天然满足的):
- 正常的网络环境
- 安装有neovim
- 拥有c/c++工具链
- neovim构建时包含LuaJIT支持
- neovim构建时包含python支持
- 安装有Nerd Font系列字体
- 终端支持真色彩和下划线显示
安装lazyvim十分简单:
进入neovim并加载配置文件后,neovim会下载需要的插件,愉快的使用体验马上开始。
快速入门
对于刚刚上手vim基本编辑语法的使用者来说,我们可以参考以下内容快速体验一些lazyvim基本界面操作,它们能覆盖80%的日常使用场景:
窗口操作(Window)
<C-h>
:跳转到左侧窗口
<C-j>
:跳转到下方窗口
<C-k>
:跳转到上方窗口
<C-l>
:跳转到右侧窗口
<C-Up>
:增加窗口高度
<C-Down>
:减少窗口高度
<C-Left>
:减少窗口宽度
<C-Right>
:增加窗口宽度
<leader>-
:水平分割窗口
<leader>|
:垂直分割窗口
<leader>wd
:关闭当前窗口
缓冲区操作(Buffer)
<S-h>
:前一个缓冲区
<S-l>
:下一个缓冲区
<leader>bd
:删除当前缓冲区
<leader>bD
:删除当前缓冲区和窗口
<leader>fb
:在搜索buffer并切换
文件操作(File)
<C-s>
:保存文件
<leader>fn
:新建文件
<leader>e
:打开文件树
搜索与跳转(Search and Navigation)
<leader>/
:文件内搜索
<leader>sr
:全局搜索替换
<leader><space>
:查找root下文件
<leader>ff
:查找root下文件
<leader>fr
:最近的文件
<leader>fb
:全局buffer搜索
终端操作(Terminal)
<leader>ft
:在根目录打开终端
<leader>fT
:在当前工作目录打开终端
<c-/>
:在根目录打开终端
LSP(Language Server Protocol)
gd
:跳转到定义
gr
:查找引用
<leader>ca
:代码动作
<leader>cd
:行诊断
<leader>cr
:重命名
]d
:下一个诊断
[d
:上一个诊断
其他常用操作(Miscellaneous)
<leader>ur
:重绘/清除搜索高亮/更新差异
<leader>cf
:格式化代码
<leader>gg
:打开 Lazygit(根目录)
<leader>gG
:打开 Lazygit(当前工作目录)
<leader>qq
:退出所有
<leader>sk
:搜索keymap
详细使用
剪贴板
如果你使用的是arch,你可能和我一样没有安装终端剪贴板工具,而是一直使用桌面环境自带的剪贴板,这种情况下neovim将无法连接到寄存器进行复制粘贴操作。
运行
:LazyHealth
查看neovim依赖的情况,如果看到上述寄存器相关问题,安装xclip工具即可解决:正确安装后,
:LazyHealth
不再显示找不到剪贴板工具:在lazyvim的normal模式下,按键映射使得
"
能显示寄存器中的内容,使用"+p
或者"*p
进行粘贴,这里+
与*
是选择了两种不同的寄存器。调试与运行C++
一键编译运行:
想要编译运行cpp文件,我们可以使用自定义keymap的方式,要完成一个简单的单文件编译运行,在
keymaps.lua
中添加以下内容:配置完成后,使用快捷键
<leader>rr
:编译运行C++代码文件,这各操作会在工作目录下生成二进制文件并运行。调试程序:
这个项目是一个
.gdbinit
文件,将他置于用户根目录下,然后正常使用gdb调试即可,大致效果如下:有关gdb与gdb-dashboard的信息,可以参考我的另一篇文章:gdb-dashboard使用参考
配置文件
lazyvim的配置文件目录结构非常简单:
lazy-lock.json
前文提到了nvim插件社区的不稳定性,我们可以善用配置文件下的
lazy-lock.json
,这个文件完整备份了我们使用的插件对应仓库的commit id
,在遇到冲突恢复环境时十分有用处,我们可以建立仓库对这个文件进行版本控制。在normal模式下运行
:Lazy restore
可以按照lazy-lock.json
文件恢复安装对应版本的插件。plugin
在plugin文件夹下,我们可以创建插件的配置文件,我们可以为每一个需要安装或是自定义的插件创建单独的文件,然后参考
examples.lua
文件进行配置。在配置文件中,通常会返回一个lua table。安装并配置:
参考对应插件的readme进行编写,返回一个lua table,其中第一项为插件名称,后续为配置内容:
更新已安装插件配置:
在LazyVim文档中找到对应插件的原本配置,比如dashboard-nvim是这样的:
我们创建新的配置文件覆盖部分设置,比如显示一个新的logo,首先引用已安装的插件,然后在opts方法中传入原本配置中已经定义的opts进行操作,更改新的logo对应的内容:
总结归纳
linux经典小玩具之一,学习vim/nvim还是有一定价值的,但是千万不要变成永远都在配环境的人哦。记得给自己定一个实际使用目标,比如刷算法,或者练习项目之类的。
参考资料
- 作者:jackpai
- 链接:https://www.jackpai.life//learning/nvim-start
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。