上手Coc.nvim 完全指南


上手Coc.nvim 完全指南

介紹

Coc.nvim 是一個基於NodeJS 的適用於Vim8, Neovim 的Vim 智能補全插件。
擁有完整的LSP 支持。配置、使用方式及插件系統的整體風格類似 VSCode.

對於我自己來說,選擇它的原因就是它安裝簡單,功能夠用。相比YouCompleteMe 而言安裝過程簡直太舒服了。

更多的信息可以參見Wiki.

另:因為Coc 本身是Vim 的一個插件而已,但它又有自己的插件系統,所以下面我會將Coc 的插件叫做子插件以作區分。

https://github.com/neoclide/coc.nvim

安裝

前提

因為Coc.nvim 是基於NodeJS 的,所以如果機器上沒有NodeJS 需要先安裝NodeJS.

Vundle

添加下面的內容到.vimrc:

Plugin 'neoclide/coc.nvim'

Vim 里面運行以下命令:

:source %
:PluginInstall

Vundle 版本低於0.10.2 的將Plugin 替換成Bundle.

NeoBundle

添加下面的內容到.vimrc:

NeoBundle 'neoclide/coc.nvim'

Vim 里面運行以下命令:

:source %
:NeoBundleInstall

VimPlug

添加下面的內容到.vimrc:

Plug 'neoclide/coc.nvim'

Vim 里面運行以下命令:

:source %
:PlugInstall

Pathogen

切換到Pathogen 目錄下並拉對應倉庫即可:

cd ~/.vim/bundle
git clone https://github.com/neoclide/coc.nvim

添加插件

因為Coc 本身並不提供具體語言的補全功能,更多的只是提供了一個補全功能的平台,
所以在安裝完成后,我們需要安裝具體的語言服務以支持對應的補全功能。
打開Vim 並使用以下命令即可自動安裝子插件及相關依賴。

:CocInstall coc-json coc-tsserver

其中coc-json coc-tsserver 這些是對應的支持JSON, Typescript 的相關子插件。
要檢索都有哪些子插件可以直接在Npm 上查找coc.nvim,
亦或者使用coc-marketplace 直接在Vim 里面進行管理,安裝命令如下:

:CocInstall coc-marketplace

安裝完后用下面命令可以打開面板,Tab 可對高亮的子插件進行安裝卸載等操作。

# 打開面板
:CocList marketplace

# 搜索python 相關子插件
:CocList marketplace python

用上下可以選擇,按Tab 可以進行對應操作。

另外在這里 有一份相對完整的已支持的子插件列表,但不確定是否全面。

修改配置

在Vim 中可以對各個內置的功能或者外加的子插件進行配置。就類似Vscode 的配置系統一樣。具體可以設置什么內容可以參見倉庫的Wiki

我自己用的不多,只添加了coc-prettier 相關的幾個:

{
  "prettier.singleQuote": true,
  "prettier.trailingComma": "all",
  "prettier.bracketSpacing": false
}

~/.vimrc 中添加以下內容,可以使用Tab 和 Shift+Tab 進行選擇補全。

" Use <Tab> and <S-Tab> to navigate the completion list
inoremap <expr> <Tab> pumvisible() ? "\<C-n>" : "\<Tab>"
inoremap <expr> <S-Tab> pumvisible() ? "\<C-p>" : "\<S-Tab>"

添加常用快捷鍵

為一些常用的功能添加快捷鍵,可以在 ~/.vimrc 中寫入:

" Use <Ctrl-F> to format documents with prettier
command! -nargs=0 Prettier :CocCommand prettier.formatFile
noremap <C-F> :Prettier<CR>

上面這段配置添加了一個Prettier 的快捷命令 :Prettier 並添加了快捷鍵Ctrl+F.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM