1. 开发动机

在《(lin.) nvim 启用 Copilot 补全》,我只是简单启用了作者预置的插件Copilot等,但是lin.nvim专注于高效文本编辑的功能,另一方面,在我们日常使用中总是有许多奇奇怪怪的需求——因此我们需要掌握在lin.nvim中自行安装neovim插件的能力。在《neo|vim 高效编辑的基本配置》,我精选了几个非常nifty的插件,具体包括:

  1. Plug 'troydm/zoomwintab.vim'
  2. Plug 'kshenoy/vim-signature'
  3. Plug 'terryma/vim-expand-region'

今天就把这三个插件集成到个人使用的lin.nvim中。在此之前我们必须了解lin.nvim的文件层级结构(File Hierarchy System, FHS)。

2. lin.nvim的文件层级结构

2023年7月13日作者对lin.nvim的组织架构完成了重构. 故下面的内容已经过期

我花了3天时间学习Lua语言的基本知识,终于大致把lin.nvim的配置逻辑看明白了。囿于篇幅,本文只讲它的文件结构:

  1. ~/.nvim/init.vim:neovim的启动文件,用户不用管。
  2. ~/.nvim/cfg:启动时需要加载的配置文件,用户不用管。
  3. ~/.nvim/deps:不同操作系统的软件包管理工具,用户不用管。
  4. ~/.nvim/lazy:从GitHub上clone下来的插件源代码,用户不用管。
  5. ~/.nvim/lua:在lin.nvim的定义中——
    1. ~/.nvim/lua/cfg:这是“系统级”配置文件所在位置,用户“一般”不用管。
    2. ~/.nvim/lua/repo:该文件夹是插件们各自的配置文件,用户可以在这里进行自定义配置
  6. ~/.nvim/repo:这是作者用来安装lin.nvim的vim插件的地方。

    其实~/.nvim/repo这个文件夹在我看来多此一举(因为我们在 ~/.nvim/lua/cfg/user_plugins.lua中自定义用户插件时,lazy.nvim会直接按照作者的配置,把vim插件直接安装在~/.nvim/lua/repo/之下。可能是我对作者意图没有理解到位。)

lin.vim的作者linrongbin16 对文件层级结构的进一步解释如下:

嗯,基本上是这样子的。

自定义插件:user_plugins.lua

自定义lsp server (read: lsp-management):

自定义vim配置:cfg/user.vim

3. 安装用户自定义插件

我们要配置的插件有如下三个:

  1. 'troydm/zoomwintab.vim'
  2. 'kshenoy/vim-signature'
  3. 'terryma/vim-expand-region'
    在文件~/.nvim/lua/cfg/user_plugins.lua如下图进行配置:
    lin-nvim中安装其它插件-用户自定义插件配置方法.png

即:

1
2
3
4
5
6
7
8
9
10
11
12
13
14

-- zoom window temperarily
{
"troydm/zoomwintab.vim",
},
-- place, toggle and display marks
{
"kshenoy/vim-signature",
},
-- visually select increasingly larger regions
{
"terryma/vim-expand-region",
},

大功告成。其实还需要在其它位置的文件对插件进行微调、配置快捷键(keymap)等。但是我一般都是自己适应原插件作者的配置。这些细枝末节的东西,能少动尽量少动——精力应该用在最有价值的地方。