上手Coc.nvim 完全指南
上手Coc.nvim 完全指南
介绍
Coc.nvim 是一个基于NodeJS 的适用于Vim8, Neovim 的Vim 智能补全插件。
拥有完整的LSP 支持。配置、使用方式及插件系统的整体风格类似 VSCode.
对于我自己来说,选择它的原因就是它安装简单,功能够用。相比YouCompleteMe 而言安装过程简直太舒服了。
更多的信息可以参见Wiki.
另:因为Coc 本身是Vim 的一个插件而已,但它又有自己的插件系统,所以下面我会将Coc 的插件叫做子插件以作区分。

安装
前提
因为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.
上手Coc.nvim 完全指南的更多相关文章
- Docker从入门到掉坑(四):上手k8s避坑指南
在之前的几篇文章中,主要还是讲解了关于简单的docker容器该如何进行管理和操作,在接下来的这篇文章开始,我们将开始进入对于k8s模块的学习 不熟悉的可以先回顾之前的章节,Docker教程系列文章将归 ...
- 从零开始搭建你的nvim ide
前言概述 vim由于其丰富的扩展性.出色的跨平台性.高效率的操作性深受一大批粉丝的追捧,甚至就连vim和emacs之间孰优孰劣的话题都能被引起一场编辑器之间的圣战,足以见vim是多么的优秀. vim的 ...
- 一些VR延迟优化方法
http://m.blog.csdn.net/article/details?id=50667507 VR中的”延迟”, 特指”Motion-To-Photon Latency”, 指的是从用户运动开 ...
- Use Vim as a Python IDE
Use Vim as a Python IDE I love vim and often use it to write Python code. Here are some useful plugi ...
- 共享一个NOI用过的vimrc [rc][vimrc]
set nocp set nu set ru set noet set ai set cin set mouse =a set mp=g++\ %\ -o\ %<\ -g\ -Wall\ -Ws ...
- F#周报2019年第26期
新闻 逐渐演化的.NET Core框架 Visual Studio提示与技巧 Windows Termina(预览) Microsoft在GitHub上的工程师从2000名增加至25000名 视频及幻 ...
- Linux快速搭建C/C++开发环境
导读:越来越多的程序员在Linux下进行C/C++的开发.本文以CentOS 7为例,教你快速搭建一个vi + gcc/g++ + Make + valgrind的开发环境. 本文字数:1500,阅读 ...
- windows terminal+wsl+neovim配置过程杂记
长期记录,草稿 coc依赖于node,直接sudo apt intsll node得到的版本是10.x,无法满足要求, 这篇博客介绍了安装新版node的方法https://www.cnblogs.co ...
- Rancher 快速上手指南操作(1)
Rancher 快速上手指南操作(1)该指南知道用户如何快速的部署Rancher Server 管理容器.前提是假设你的机器已经安装好docker了.1 确认 docker 的版本,下面是 ubunt ...
随机推荐
- python+selenium基础篇,句柄操作(多个页面切换)
1.我们打开网页有时候会开出多个页面,导致我们常常定位不到我们需要的元素,这种情况可能就是句柄的因素,如下图所示: 2.句柄切换代码如下: from selenium import webdriver ...
- UF_DRF 制图符号标注尺寸
Open C uc5530uc5531uc5532uc5533uc5534uc5540uc5541uc5542uc5543uc5550uc5551uc5563uc5566uf5505uf5506uf5 ...
- docker安装及卸载
docker基本组成 镜像(image): docker镜像好比一个模板,可以通过这个模板创建容器服务,例如:tomcat镜像===>run===>tomcat01容器(提供服务器) 通过 ...
- Spring Boot WebFlux-导读
背景 大家都知道,Spring Framework 是 Java/Spring 应用程序跨平台开发框架,也是 Java EE(Java Enterprise Edition) 轻量级框架,其 Spri ...
- noip2008 总结
noip 2008题解 笨小猴 原题 笨小猴的词汇量很小,所以每次做英语选择题的时候都很头疼.但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大!这种方法的具体描述如下:假设 ...
- 【floyd】8.29题解-path
path 题目描述 这次的任务很简单,给出了一张有N个点M条边的加权有向无环图,接下来有Q个询问,每个询问包括2个节点X和Y,要求算出从X到Y的一条路径,使得密度最小(密度的定义为,路径上边的权值和除 ...
- SpringBoot项目创建流程--SpringMVC
SpringBoot项目创建步骤 1. 创建SpringBoot工程 (1) File → New → Project → Spring Initilizr (2) Name:MySpringBoot ...
- excel打印出现多余空白页
问题: 解决方法一:设置打印区域 步骤:选择需要打印的内容--页面布局--打印区域--设置打印区域即可 解决方法二:删除多余的打印空白页 步骤:视图--分页预览--选中多余的空白页删除即可
- 一文带你了解.Net信号量
本文主要讲解.Net基于Semaphore带大家了解信号量 信号量举例 大家去银行去银行取钱,互斥锁管理的时一个柜台是否正在处理业务,而信号量管理的是整个柜台是否正在处理业务,每当有一个柜台处理完成之 ...
- 9、解决mstsc卡顿的问题:
1.同时按住"win+r"键调出"运行",在方框内输入"cmd"后点击"确定"打开dos窗口: 2.在dos中输入&qu ...