插件管理器

使用 Vim-plug

curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim

然后打开.vimrc 文件,输入:

" 插件管理器配置 - Vim-plug
" 指定插件安装目录,可以自定义
call plug#begin('~/.vim/plugged') 
 
" 在这里添加插件
 
call plug#end()

添加完插件之后,保存重新启动,在 Vim 的普通模式下,输入以下命令并按回车:

:PlugInstall

Vim-plug 会自动下载并安装插件

查看插件是否安装成功:

:PlugStatus

代码补全

使用 CoC.nvim 插件

call plug#begin()call plug#end() 之间添加配置行:

" 插件管理器配置 - Vim-plug
call plug#begin('~/.vim/plugged')
 
" CoC.nvim 插件
Plug 'neoclide/coc.nvim', {'branch': 'release'}
 
call plug#end()

然后 :PlugInstall

一些 CoC.nvim 的基本配置,放在 call plug#end() 后面

" CoC.nvim 配置
" ----------------------------------------------------------------------
" 始终显示补全菜单
set noinsertmode
set cmdheight=2 " 命令行高度
set shortmess+=c " 避免在命令行中显示冗余信息
 
" 启用补全菜单的弹出窗口
set completeopt=menuone,noselect
 
" 当光标在补全项上时,显示文档
set pumheight=10 " 补全菜单高度
set signcolumn=yes " 显示诊断信息(错误/警告)
 
" 映射 Tab 键用于补全和跳转
inoremap <silent><expr> <Tab>
      \ pumvisible() ? "\<C-n>" :
      \ <SID>check_back_space() ? "\<Tab>" :
      \ coc#refresh()
inoremap <expr><S-Tab> pumvisible() ? "\<C-p>" : "\<S-Tab>"
 
function! s:check_back_space() abort
  let col = col('.') - 1
  return !col || getline('.')[col - 1] =~ '\s'
endfunction
 
" 映射回车键用于选择补全项
inoremap <silent><expr> <CR> pumvisible() ? coc#_select_confirm() : "\<C-g>u\<CR>"
 
" 诊断信息快捷键
nnoremap <silent> [g <Plug>(coc-diagnostic-prev)
nnoremap <silent> ]g <Plug>(coc-diagnostic-next)
 
" 跳转到定义
nnoremap <silent> gd <Plug>(coc-definition)
" 跳转到类型定义
nnoremap <silent> gy <Plug>(coc-type-definition)
" 跳转到实现
nnoremap <silent> gi <Plug>(coc-implementation)
" 跳转到引用
nnoremap <silent> gr <Plug>(coc-references)
 
" 重命名
nnoremap <silent> <leader>rn <Plug>(coc-rename)
 
" 格式化当前缓冲区
nnoremap <silent> <leader>f <Plug>(coc-format-document)
 
" 悬停显示文档
nnoremap <silent> K :call <SID>show_documentation()<CR>
function! s:show_documentation()
  if (index(['vim','help'], &filetype) >= 0)
    execute 'h '.expand('<cword>')
  else
    call coc#util#do_hover()
  endif
endfunction
 
" ----------------------------------------------------------------------

安装语言服务器:

JavaScript/TypeScript:

:CocInstall coc-tsserver

Python:

:CocInstall coc-python

C/C++:

:CocInstall coc-clangd

在 CoC.nvim 的 GitHub 页面找到支持的语言服务器列表:https://github.com/neoclide/coc.nvim/wiki/Language-servers

查看已安装的语言服务器:

:CocCommand workspace.extension

查看 CoC.nvim 的日志:

:CocOpenLog