本文选择体积最小的Arch Linux作为Docker镜像开启全部过程,其他Linux发行版可能会有所区别
一、前期准备
- 使用该命令
初始化pacman
要不然pacman不能用
curl -fsSL "https://repo.archlinuxcn.org/x86_64/glibc-linux4-2.33-4-x86_64.pkg.tar.zst" | bsdtar -C / -xvf -
- 更换pacman的镜像源 这个过程不太容易,我发现Docker的Arch镜像什么编辑器也没有。于是我把自己电脑的nano编辑器传入Docker容器里面去了
然后手动编辑/etc/pacman.d/mirrorlist
添加
Server = https://mirrors.sjtug.sjtu.edu.cn/manjaro/stable/$repo/$arch
如果是Manjaro就简单了直接使用命令:pacman-mirrors -i -c China就可以了
- 获取最新的包
pacman -Sy
- 安装前期准备的软件 配置Neovim肯定得安装一个Neovim吧,还需要下载东西的wget和git,最终命令如下所示:
pacman -S neovim wget git
二、配置NVim的核心功能
我认为Nvim的核心功能主要有下面几个部分
- 自动补全
- 目录树
- 主题
我们先创建一下Nvim的配置文件,命令mkdir -p ~/.config/nvim
然后我们安装NVim的插件管理器,步骤如下:
步骤1. 创建~/.config/nvim/autoload/plug.vim文件
步骤2. 将Gist代码片段的内容复制进去
2-1、自动补全的配置
关于自动补全可以选择的有很多,比如Ncm,COC,Kite等等许多
本文使用Kite(一个基于人工智能的补全插件)来完成该功能
步骤1. 下载Kite 命令为: bash -c "$(wget -q -O - https://linux.kite.com/dls/linux/current)"
步骤2. 配置Kite 命令为
mkdir -p ~/.config/nvim/pack/kite/start/kite
git clone https://github.com/kiteco/vim-plugin.git ~/.config/nvim/pack/kite/start/kite/
如果没有代理的话,可以将上面的Github仓库替换成https://gitee.com/liu__yang/vim-plugin
接下来,我将进行简单的配置这个插件,使用Nvim编辑~/.config/nvim/init.vim文件,然后加入下面的内容,我对内容添加了注释,保证通俗易懂。
" 设置支持语言 Python, C++, Go
let g:kite_supported_languages = ['python', 'cpp', 'go']
" Kite 状态条
set statusline=%<%f\ %h%m%r%{kite#statusline()}%=%-14.(%l,%c%V%)\ %P
set laststatus=2 " always display the status line
Tip
我加入的配置仅仅是最基本的配置,关于NVim使用Kite的全部文档可以在这里查看https://github.com/kiteco/vim-plugin
2-2、主题配置
使用Nvim编辑~/.config/nvim/init.vim文件,然后加入下面的内容
call plug#begin("~/.vim-plug")
Plug 'connorholyday/vim-snazzy'
call plug#end()
let g:SnazzyTransparent = 1
color snazzy
解释一下:两个call之间是用来存储插件的,不可以放普通的配置
最后执行:PlugInstall
进行安装
2-3、常规配置
使用Nvim编辑~/.config/nvim/init.vim文件,然后加入Gist代码片段的内容
2-4、文件树的配置
使用Nvim编辑~/.config/nvim/init.vim文件,将下面的代码放在call plug#begin("~/.vim-plug")
下面
Plug 'preservim/nerdtree',{ 'on': 'NERDTreeToggle' }
然后两个call外添加按键映射,便可以使用T召唤出文件树来
map T :NERDTreeToggle<CR>
到此你的init.vim文件应该是这样的Gist代码片段
到此Arch-Nvim
1.0版本已经制作完毕,该Docker镜像发表在了我的Github中。
三、后续优化
关于Neovim的插件有很多,下面我列举一些常用的插件,仅供选择。