0x02. 也许你该用 NeoVim 写 Rust-使用插件

有一个词叫 DRY(Don't Repeat Yourself),社区有很多 NeoVim 的高质量插件,这节我们来了解如何利用开源资源来,毕竟自己写一个 Lua 版的 NeoVim 插件,需要了解大量 NeoVim 的 API。

Lazy.nvim

我们首先来了解第一个 NeoVim 的插件,它就是 lazy.nvim,利用这个插件可以管理其他插件。可以简单查看下这个插件仓库的 README,我们要做得就是把它的安装代码整合到当前的配置结构中。先回顾一下之前的结构

bash 复制代码
.
├── README.md
├── init.lua
├── lua
│   └── common
│       ├── basic.lua
│       └── init.lua
└── stylua.toml

我们在 lua 文件夹下建一个 utils 文件夹,然后创建个 global.lua 文件,里面的内容就写下面这些(这些代码来自 lazy.nvim 的仓库 README)

lua 复制代码
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not (vim.uv or vim.loop).fs_stat(lazypath) then
  vim.fn.system({
    "git",
    "clone",
    "--filter=blob:none",
    "https://github.com/folke/lazy.nvim.git",
    "--branch=stable", -- latest stable release
    lazypath,
  })
end
vim.opt.rtp:prepend(lazypath)

然后继续在入口文件引入,于是入口文件就变成

lua 复制代码
require "utils.global"
require "common.init"

整个配置的结构就变成

bash 复制代码
.
├── README.md
├── init.lua
├── lua
│   ├── common
│   │   ├── basic.lua
│   │   └── init.lua
│   └── utils
│       └── global.lua
└── stylua.toml

通过 Lazy.nvim 安装其他插件

根据上面的描述,不出意外 Lazy.nvim 已经配好,先别急着退出 NeoVim,先配置一下用它安装其他插件。

继续在 common 目录创建个 plugins.lua 文件,我在里面已经写上了一些基础常用插件,这些字符串表示的是 GitHub 的用户名跟仓库名,如果不信可以随意拼上 https://github.com/ 到对应仓库主页看看

lua 复制代码
require("lazy").setup {
  "folke/which-key.nvim",
  "tpope/vim-surround",
  {
    "nvimdev/hlsearch.nvim",
    event = "BufRead",
    config = function()
      require("hlsearch").setup()
    end,
  },
  { "catppuccin/nvim", name = "catppuccin" },
}

更多关于 Lazy.nvim 的用户可以查看插件的 README。

同理我们需要在 common 的 init.lua 加上刚才新建的文件,加完后的内容长这样

lua 复制代码
require "common.basic"
require "common.plugins"

现在我们再来看看当前的配置目录结构

bash 复制代码
.
├── README.md
├── init.lua
├── lua
│   ├── common
│   │   ├── basic.lua
│   │   ├── init.lua
│   │   └── plugins.lua
│   └── utils
│       └── global.lua
└── stylua.toml

此时只要重启一下 NeoVim,等待一段时间,就会自动安装好 lazy,如果期间没啥反应,我的建议是开一下那啥上网工具,要记得让终端也走那啥上网,除非你知道其他一些操作方式,总之就是能上那啥就行。

简单介绍一些插件

上面已经给出了一些我认为相当常用的插件,但事实上,除了 tpope/vim-surroundnvimdev/hlsearch.nvim,其他插件都是不生效的,前者是加载就自动配置好,后者是已经在 config 回调里建立了默认配置。

vim-surround 是一个什么插件,它是神奇到一个叫 Helix 的编辑器在其默认实现里就包含类似功能的一个插件,举个例子,你有一段代码

rust 复制代码
let a = 10 * 3 + 2;

你想改变四则运算的顺序,让 3 + 2 先执行,你会想到把代码变成

rust 复制代码
let a = 10 * (3 + 2);

实际操作就变成你把光标移动到 3 的前面加了一个 (,然后把光标移到 2 的后面加了一个 )。此时如果 vim-surround 安装没出问题,你就可以用 Vim 的 Visual 模式把 3 + 2 选中再按大写 s 再按 ( 或者 ),它会把光标选中的内容改成 (3 + 2),当然还有其他的玩法,可以看看插件的 README 详细了解。

相关推荐
Benaso34 分钟前
Rust 快速入门(一)
开发语言·后端·rust
xflm3 小时前
vim(1) -- 环境配置
vim
姜学迁19 小时前
Rust-枚举
开发语言·后端·rust
凌云行者19 小时前
rust的迭代器方法——collect
开发语言·rust
QMCY_jason1 天前
Ubuntu 安装RUST
linux·ubuntu·rust
碳苯1 天前
【rCore OS 开源操作系统】Rust 枚举与模式匹配
开发语言·人工智能·后端·rust·操作系统·os
zaim11 天前
计算机的错误计算(一百一十四)
java·c++·python·rust·go·c·多项式
凌云行者2 天前
使用rust写一个Web服务器——单线程版本
服务器·前端·rust
cyz1410012 天前
vue3+vite@4+ts+elementplus创建项目详解
开发语言·后端·rust
超人不怕冷2 天前
[rust]多线程通信之通道
rust