如何在 Vim 中为自动完成设置 CoC

如果您已经输入了时间 虚拟导师 您很快就会寻找在 vim 中使用的自动完成功能。 这就是 CoC 的亮点所在。 CoC 代表完成的征服。 它是一个语言服务器协议客户端,用于特定语言的自动完成。 使用 CoC,您可以在 vim 中更快。 但首先我们需要在 vim 中安装一个插件管理器。 那么让我们开始吧,看看如何在 vim 中设置 CoC。

在 Vim 中安装插件管理器

要在 vim 中安装任何插件,您首先需要一个插件管理器。 由于手动安装插件是一项非常繁琐的工作,您将不得不手动将所有文件复制并粘贴到非常特定的目录和子目录中。 vim 有许多插件管理器,如 vim-plug、pathogen、vundle 等。在本文中,我们将介绍 vim-plug 的安装。 如果您想了解如何安装 vundle,可以查看这篇文章。

要安装 vim-plug,您需要访问 链接是官方 vim-plug github repo,并将 plug.vim 复制到 vim 配置文件夹(通常位于主文件夹中,名称为 .vim)内名为 autoload 的目录中。 接下来,您需要为要正确安装的插件创建一个目录结构。 目录结构如下:

.vim
├── autoload
├── backup
├── colors
├── plugged
└── templates

确保将 plug.vim 文件保存在自动加载目录中。 现在要安装插件,您需要遵循正确的格式并对 .vimrc 文件进行一些更改。 通常 .vimrc 文件位于主目录中。 所以用你最喜欢的编辑器(比如 vim ?)打开 .vimrc 文件,然后转到文件的末尾。 现在输入以下内容以安装您喜欢的插件:

call plug#begin('~/.vim/plugged')
    Plug 'preservim/nerdtree'
    Plug 'jiangmiao/auto-pairs'
call plug#end()

这会将所有插件保留在 .vim 文件夹中的插入文件夹中。 现在保存文件并退出 vim。 接下来,启动 vim 并输入以下命令:

:PlugInstall

这将安装您在 vimrc 中提到的插件并处理其他所有事情。 现在,当您重新加载 vim(即 close 出来并再次打开它),您所有的插件都将起作用。 请注意,您只需要提及 github 用户名和存储库名称即可安装插件,这非常有用。 有关 vim-plug 的更多详细信息,您可以查看这篇文章。

在 vim 中安装 CoC

安装前 可可, 您需要确保您的系统具有必要的依赖项,即 vim 8 及更高版本和节点版本 14.14 及更高版本。 您还需要在系统上安装 yarn。 要检查它是否已安装,请输入以下命令:

yarn --version

如果您的系统上没有安装 yarn,您可以使用以下命令全局安装 yarn:

npm install --global yarn

现在我们需要为此在 vim 中安装 CoC,只需在 vimrc 中包含以下行并输入命令“:PlugInstall”

Plug 'neoclide/coc.nvim'

现在我们不会只使用 coc.nvim,我们仍然需要一些额外的包,为此,将以下内容插入您的 vimrc,否则您可以跳过此步骤:

Plug 'neoclide/coc.nvim'
Plug 'rafi/awesome-vim-colorschemes'
Plug 'ap/vim-css-color'
Plug 'SirVer/ultisnips'
Plug 'honza/vim-snippets'
Plug 'preservim/nerdtree'
Plug 'jiangmiao/auto-pairs'
Plug 'tpope/vim-unimpaired'

现在,如果您运行 PlugInstall 命令,将会弹出一个错误,提示您需要在 coc.nvim 目录中运行 yarn install。 完成后,您可以继续执行此操作。

现在为了让 coc 工作,有许多配置,讨论所有这些配置超出了本文的范围,但是,我的首选 .vimrc 如下所示,请随意使用!

"CoC Settings
" Use tab for trigger completion with characters ahead and navigate.
" NOTE: Use command ':verbose imap <tab>' to make sure tab is not mapped by
" other plugin before putting this into your config.
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

" Make <CR> to accept selected completion item or notify coc.nvim to format
" <C-g>u breaks current undo, please make your own choice.
inoremap <silent><expr> <CR> coc#pum#visible() ? coc#pum#confirm()
                              : "<C-g>u<CR><c-r>=coc#on_enter()<CR>"
"Ultisnips Settings
let g:UltiSnipsExpandTrigger="<tab>"
let g:UltiSnipsJumpForwardTrigger="<c-b>"
let g:UltiSnipsJumpBackwardTrigger="<c-z>"

" If you want :UltiSnipsEdit to split your window.
let g:UltiSnipsEditSplit="vertical"

"coc-snippets Settings
"inoremap <silent><expr> <TAB>
"       coc#pum#visible() ? coc#_select_confirm() :
"       coc#expandableOrJumpable() ? "<C-r>=coc#rpc#request('doKeymap', ['snippets-expand-jump',''])<CR>" :
"       CheckBackspace() ? "<TAB>" :
"       coc#refresh()
"
"function! CheckBackspace() abort
"  let col = col('.') - 1
"  return !col || getline('.')[col - 1]  =~# 's'
"endfunction
"
"let g:coc_snippet_next="<tab>"

现在已经安装了 coc,您可以继续安装一些特定于 coc 的插件。 这是您在 coc 中安装所有特定于语言的插件的地方。 要安装任何插件,您需要在 vim 中运行以下命令:

:CocInstall  <package-name>

前端开发我推荐以下包,按照coc使用vim-snippets和ultisnips。 通过这种方法,您甚至可以自定义您的片段!

:CocInstall coc-tsserver coc-eslint coc-json coc-prettier coc-css coc-html coc-snippets 

本文中讨论的这些设置的结果可以在下图中查看。

使用 CoC 的 Vim 自动完成设置

结论

所以你去读者! 您现在可以轻松地为 vim 设置自动完成功能,并最终摆脱臃肿的 IDE。 开个玩笑,您可以选择您认为合适的任何软件。 如果您正在寻找 CoC 插件的更多配置,您可以查看 关联。 一如既往,感谢阅读!