序言
代码提示插件coc-nvim 环境要求:
- neovim >= 0.3.2 or vim >= 8.0.1453
- node >= 10.12
说明:
- CentOS 7.5系统默认安装vim版本为7.4,需要升级;
- vim插件管理器使用
vim-plug
; - 本文只配置了
C/C++
,Python
,JSON
提示,其他可自行配置; - 以下命令为所有用户安装vim插件,需使用root权限执行;
1. 升级Vim
编译安装
# 卸载当前vim
rpm -qa | grep vim
# 卸载上步中的所有vim相关包
rpm -e --nodeps vim-common vim-enhanced vim-minimal vim-filesystem
# 获取vim 8.2源码
wget https://ftp.nluug.nl/pub/vim/unix/vim-8.2.tar.bz2
#解压文件
tar -xjvf vim-8.2.tar.bz2
cd vim82/
# --prefix 指定安装位置
# 指定/usr会安装到/usr/share
./configure --prefix=/usr
# 报错
no terminal library found
checking for tgetent()... configure: error: NOT FOUND!
You need to install a terminal library; for example ncurses.
Or specify the name of the library with --with-tlib.
# 解决
yum install -y ncurses-devel
# 继续
./configure --prefix=/usr
# 编译,大概2分钟
make
# 安装
make install
# 查看版本 8.2
vim --version
其他相关命令
# 若上一步出现问题需要重新安装可使用以下命令
# 清除上次的make命令所产生的文件
make clean
# 清除之前make与configure生成的文件
make distclean
2. 安装Vim插件管理器-Plug
wget https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
# 若vimfiles下没有autoload文件夹则创建
mv plug.vim /usr/share/vim/vimfiles/autoload/
3. 安装node
若已经安装node,且版本大于10.12,跳过此步。
curl -sL install-node.now.sh/lts | bash
# 如果安装后sudo下找不到node,则执行以下命令
# 若直接使用root用户,而非sudo执行请忽略
sudo ln -s /usr/local/bin/node /usr/bin/node
sudo ln -s /usr/local/bin/npm /usr/bin/npm
sudo ln -s /usr/local/bin/npx /usr/bin/npx
4. 配置Vim
将以下内容复制到 /usr/share/vim/vimrc
里,如没有该文件则创建。修改后配置文件后,再次进入vim执行输入:PlugInstall
,然后按回车键,即执行PlugInstall
命令,执行后vim会根据配置文件安装指定的插件。以下配置文件制定了两款插件:
vim-airlime
: vim状态栏增强插件coc.nvim
: vim代码提示插件
coc代码提示通过安装扩展实现,以下配置添加了coc-json
,coc-pairs
,coc-clangd
,coc-python
四款coc提示插件,其中coc-pairs
为括号、引号补全。
"plug begin
call plug#begin('/usr/share/vim/vimfiles/myPlugin/')
Plug 'vim-airline/vim-airline'
Plug 'neoclide/coc.nvim'
let g:coc_global_extensions = ['coc-json', 'coc-pairs', 'coc-clangd', 'coc-python']
autocmd FileType cpp let b:coc_pairs_disabled = ['<']
call plug#end()
"plug end
set nocompatible
set nu
set cursorline
set hls
set tabstop=4
set shiftwidth=4
set smartindent
set wrap
set hidden
set nobackup
set nowritebackup
set updatetime=300
inoremap <silent><expr> <TAB>
pumvisible() ? "<C-n>" :
<SID>check_back_space() ? "<TAB>" :
coc#refresh()
inoremap <expr><S-TAB> pumvisible() ? "<C-p>" : "<C-h>"
function! s:check_back_space() abort
let col = col('.') - 1
return !col || getline('.')[col - 1] =~# 's'
endfunction
if has('nvim')
inoremap <silent><expr> <c-space> coc#refresh()
else
inoremap <silent><expr> <c-@> coc#refresh()
endif
inoremap <silent><expr> <cr> pumvisible() ? coc#_select_confirm()
: "<C-g>u<CR><c-r>=coc#on_enter()<CR>"
5. 配置coc-nvim
进入vim,在命令模式中执行CocConfig
,并在配置文件中加入以下配置,保存。该配置作用是关闭jedi
语言服务器,使用微软LanguageServer作为语言服务器,保存后vim会下载微软语言服务器。
{
"python.jediEnabled": false
}
使用vim打开python文件测试代码提示。如果在python文件中代码提示无效,很可能Microsoft.Python.LanguageServer
没有运行起来,通过以下方法查找问题并解决。
# 进入用户目录
cd
# 直接执行
.config/coc/extensions/coc-python-data/languageServer.0.2.31/Microsoft.Python.LanguageServer
# 报错
Process terminated. Couldn't find a valid ICU package installed on the system. Set the configuration flag System.Globalization.Invariant to true if you want to run with no globalization support.
# 解决
yum install -y libicu
# 再次运行,正常运行即可
.config/coc/extensions/coc-python-data/languageServer.0.2.31/Microsoft.Python.LanguageServer
6. 安装Clangd(C/C++语言服务器)
coc-nvim插件基于语言服务器协议(Language Server Protocol,LSP)提供代码提示,所系需要安装对应的语言服务器。
# 从github下载Clangd
wget https://github.com/clangd/clangd/releases/download/11.0.0/clangd-linux-11.0.0.zip
# 解压文件
unzip clangd-linux-11.0.0.zip
mv clangd_11.0.0/ /usr/share/
# 创建软连接
ln -s /usr/share/clangd_11.0.0/bin/clangd /usr/bin/clangd
clangd
# 报错
clangd: /lib64/libc.so.6: version `GLIBC_2.18' not found (required by clangd)
#解决
wget http://mirrors.ustc.edu.cn/gnu/libc/glibc-2.18.tar.gz
tar -zxvf glibc-2.18.tar.gz
cd glibc-2.18/
mkdir build
cd build
../configure --prefix=/usr
# 编译大概5分钟
make -j4
# 安装大概2分钟
sudo make install
结束
配置文件参考coc-nvim官方文档,若要添加其他语言代码提示 ,需要安装对应语言的coc插件,参考官方文档即可。