Lazy loaded image
lazyvim快速上手(c/c++)
00 分钟
2024-9-10
2024-11-14
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++代码文件,这各操作会在工作目录下生成二进制文件并运行。
调试程序:
nvim社区有一些能够调试C++的插件,比如:nvim-dapnvim-gdb等,但是本着尽量不要多过多配置快速上手的宗旨,选择使用gdbdashboard(github)终端调试工具进行调试:
这个项目是一个.gdbinit文件,将他置于用户根目录下,然后正常使用gdb调试即可,大致效果如下:
notion image
有关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还是有一定价值的,但是千万不要变成永远都在配环境的人哦。记得给自己定一个实际使用目标,比如刷算法,或者练习项目之类的。

参考资料

 
Video preview
上一篇
有关poetry二三事
下一篇
DroidBot:android自动化测试工具