进化neovim到lin.nvim风味
系列文章
- neo|vim高效编辑的基本配置
- 进化neovim到lin.nvim风味
- 我的Learn Lua in Y minutes
- (lin.)nvim启用Copilot补全
- lin.nvim中安装其它插件
- ubuntu工作环境初始化脚本
- 一款流畅的、用于重构代码的neovim插件:ChatGPT.nvim
- 填坑:(neo)vim中自动切换中文输入法
- lin.nvim中配置编程语言LSP补全
开发动机及其工作背景
这个开发、编辑环境,应该满足以下标准:
- 是顺应技术发展潮流的,是现代化的。这样能尽量少折腾工具本身,把精力放在编辑开发上。
- 有良好的插件生态支持,这样“衣来伸手饭来张口”,而不至于需要用的时候“要啥没啥”。
显而易见,neovim
比vim
更符合我的要求。为了减少给neovim
挑选插件精力负担,我直接使用了lin.nvim : Lin Rongbin’s Neovim Distribution。与lin.nvim
的管理员沟通之后,虽然它还没有正式 release,但是功能基本就绪,程序也基本稳定了。官网关于它的简介如下:
因此我准备基于neovim
拓展成一个现代化的IDE编辑器
;同时也要继续使用vim
,保持工具的冗余备份。为此,我进行了如下工作。
分离 vim 和 neovim 配置
绝大部分借鉴了《neo|vim 高效编辑的基本配置》的方法与配置,但是做了如下处理:将《neo|vim 高效编辑的基本配置》中neovim
的配置文件init.vim
,直接保存为vim
的配置文件~/.vimrc
。
安装最新版本的 neovim
我的Linxu
和Windows 11
都是使用的Ubuntu。为了安装最新版neovim
,添加 PPA(我使用的是 unstable 版本):
1 | sudo add-apt-repository ppa:neovim-ppa/unstable |
一键安装 lin.nvim
参见Installation on MacOS/Linux:
1 | git clone https://github.com/linrongbin16/lin.nvim ~/.nvim && cd ~/.nvim && ./install.sh |
全部完成。有一些支撑软件似乎需要手动安装,如下所述:
lin.nvim
默认使用ripgrep
作为全文搜索工具,系统如果没有此工具,安装如下:
1 | sudo apt install -y ripgrep |
lin.nvim
根据文件名进行搜索使用的是fd-find
,最开始我没有安装此工具,导致功能出错。安装指令如下:
1 | sudo apt install fd-find |
启动后,界面如下所示(直接使用了官方原图):
下一步的工作打算
安装倒是挺痛快,但是开箱后两眼一麻黑:因为这个lin.nvim
是开箱即用,它底层都有哪些安装包、快捷键是啥,我啥都不知道,也用不起来啊~
据说nvim
以后会将lua
语言作为一等公民语言,其插件配置也会使用lua
,大势所趋——既然无法反抗,那就享受吧。在使用neovim
的时候,慢慢学一些lua
的语法。实在紧急的时候,用vim
临时凑合一下也没啥。其实还是挺怀念以前的coc.nvim
补全系统的。
下一步工作打算:
- 熟悉
neovim
的文本编辑插件、相关的快捷键; - 利用
nvim-cmp
给python添加代码片段插入功能; - 安装
copilot
的代码智能生成插件; - 了解现代化的
neovim
的、使用lua
进行脚本配置的方法; - 给
vim
的配置,添加coc.nvim
自动补全功能(至少支持文件路径补全、英文词典补全)。
附:lin.nvim 自带插件
本节用于记录我学习使用lin.nvim
的过程。主要是对其插件使用的备案;lin.nvim
基础插件及其快捷键使用方法参见lin.nvim: Global Key Mapping.
日常编辑
按照我的学习顺序,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.
代码开发
- mason: allows you to easily manage external editor tooling such as LSP servers, DAP servers, linters, and formatters through a single interface.