1. 开发动机及其工作背景

在《neo|vim 高效编辑的基本配置》中:(1)用了十年的vimrc配置文件终于被清理了,只保留了最基本的高效编辑功能;(2)同时使neovimvim共享同一个配置、共用同一套插件文件。这样能保证在新的环境中,咱们能立马有个顺手的编辑器使用。但它的功能还是太弱了:没有文件浏览器、没有代码自动补全、没有快速跳转、没有全文查找。要让它成为稍微像样的IDE编辑器,还是需要一番打扮、折腾。

这个开发、编辑环境,应该满足以下标准:

  • 是顺应技术发展潮流的,是现代化的。这样能尽量少折腾工具本身,把精力放在编辑开发上。
  • 有良好的插件生态支持,这样“衣来伸手饭来张口”,而不至于需要用的时候“要啥没啥”。

显而易见,neovimvim更符合我的要求。为了减少给neovim挑选插件精力负担,我直接使用了lin.nvim : Lin Rongbin’s Neovim Distribution。与lin.nvim的管理员沟通之后,虽然它还没有正式 release,但是功能基本就绪,程序也基本稳定了。官网关于它的简介如下:

lin.nvim is a highly configured Neovim distribution integrated with tons of utilities for development.

Aim to be out-of-box, with IDE features, performant, lightweight and friendly to most Neovim users. Focus on and only on editing, no compiling/packaging/debugging.

因此我准备基于neovim拓展成一个现代化的IDE编辑器;同时也要继续使用vim,保持工具的冗余备份。为此,我进行了如下工作。

2. 分离 vim 和 neovim 配置

绝大部分借鉴了《neo|vim 高效编辑的基本配置》的方法与配置,但是做了如下处理:将《neo|vim 高效编辑的基本配置》中neovim的配置文件init.vim,直接保存为vim的配置文件~/.vimrc

  1. neovim需要同vim共用同一套插件和配置的时候,我们直接为neovim生成一个符号链接文件,指向vim的配置文件~/.vimrcln -s -f ~/.vimrc ~/.config/nvim/init.vim
  2. neovim需要使用自己的独立配置文件时,直接删除掉原来的符号链接文件init.vim即可。

3. 安装最新版本的 neovim

我的LinxuWindows 11都是使用的Ubuntu。为了安装最新版neovim,添加 PPA(我使用的是 unstable 版本):

1
2
3
sudo add-apt-repository ppa:neovim-ppa/unstable
sudo apt update
sudo apt install neovim -y

4. 一键安装 lin.nvim

参见Installation on MacOS/Linux

1
git clone https://github.com/linrongbin16/lin.nvim ~/.nvim && cd ~/.nvim && ./install.sh

全部完成。有一些支撑软件似乎需要手动安装,如下所述:

  1. lin.nvim默认使用ripgrep作为全文搜索工具,系统如果没有此工具,安装如下:
1
sudo apt install -y ripgrep
  1. lin.nvim根据文件名进行搜索使用的是fd-find,最开始我没有安装此工具,导致功能出错。安装指令如下:
1
sudo apt install fd-find

启动后,界面如下所示(直接使用了官方原图):

5. 下一步的工作打算

安装倒是挺痛快,但是开箱后两眼一麻黑:因为这个lin.nvim是开箱即用,它底层都有哪些安装包、快捷键是啥,我啥都不知道,也用不起来啊~

据说nvim以后会将lua语言作为一等公民语言,其插件配置也会使用lua,大势所趋——既然无法反抗,那就享受吧。在使用neovim的时候,慢慢学一些lua的语法。实在紧急的时候,用vim临时凑合一下也没啥。其实还是挺怀念以前的coc.nvim补全系统的。

下一步工作打算:

  • 熟悉neovim的文本编辑插件、相关的快捷键;
  • 利用nvim-cmp给python添加代码片段插入功能;
  • 安装copilot的代码智能生成插件;
  • 了解现代化的neovim的、使用lua进行脚本配置的方法;
  • vim的配置,添加coc.nvim自动补全功能(至少支持文件路径补全、英文词典补全)。

6. 附:lin.nvim 自带插件

本节用于记录我学习使用lin.nvim的过程。主要是对其插件使用的备案;lin.nvim基础插件及其快捷键使用方法参见lin.nvim: Global Key Mapping.

6.1. 日常编辑

按照我的学习顺序,lin.nvim的插件主要包括:

  • Neotree: to browse the file system and other tree like structures.
  • UndotreeToggle: visualizes the undo history and makes it easy to browse and switch between different undo branches.
  • toggleterm.nvim: to persist and toggle multiple terminals during an editing session.
  • Which Key: displays a popup with possible key bindings of the command you started typing.

6.2. 代码开发

  • mason: allows you to easily manage external editor tooling such as LSP servers, DAP servers, linters, and formatters through a single interface.