likes
comments
collection
share

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

作者站长头像
站长
· 阅读数 8

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

Lazy.nvim

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

.
├── README.md
├── init.lua
├── lua
│   └── common
│       ├── basic.lua
│       └── init.lua
└── stylua.toml

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

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)

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

require "utils.global"
require "common.init"

整个配置的结构就变成

.
├── 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/ 到对应仓库主页看看

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 加上刚才新建的文件,加完后的内容长这样

require "common.basic"
require "common.plugins"

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

.
├── 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 的编辑器在其默认实现里就包含类似功能的一个插件,举个例子,你有一段代码

let a = 10 * 3 + 2;

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

let a = 10 * (3 + 2);

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

转载自:https://juejin.cn/post/7357957599843090432
评论
请登录