上手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 ...
随机推荐
- Java真的是白天鹅
前言 我最近越来越真切的感受到,Java真的是白天鹅. 这真的是一种羡慕嫉妒恨的感受. 今天和一个Java技术Leader聊天,我告诉他敏捷开发是以人为本,他居然跟我说敏捷开发在行业内有规范,规范是死 ...
- Hash源码注释解析
部分代码注释解析: 1 import java.io.IOException; 2 import java.io.InvalidObjectException; 3 import java.io.Se ...
- 孟老板 BaseAdapter封装(五) ListAdapter
BaseAdapter封装(一) 简单封装 BaseAdapter封装(二) Header,footer BaseAdapter封装(三) 空数据占位图 BaseAdapter封装(四) PageHe ...
- mysql 高级和 索引优化,目的:查的好,查的快,性能好
1-事物隔离级别: 更新丢失, 并发情况下,对同一字段进行更新,就会出现更新丢失,采用乐观锁,比较版本号或时间戳可解决 读未提交 解决了更新丢失但是会引起脏读, 二个session.sessionA中 ...
- oracle单机开机自启动
====================== 单机数据库开机自启动 ============================= 环境: oracle数据库单机 版本:11.2.0.4 1.修改配置文 ...
- 【模板】O(nlongn)求LIS
合理运用单调性降低复杂度 平常用的都是O(n^2)的dp求LIS(最长不下降子序列)这里介绍O(nlogn)的算法 分析 对于可能出现的x<y<i且A[y]<A[x]<A[i] ...
- <题解>世界树
世界树<题解> 首先我们拿到这个题之后,能想到的一定是虚树,如果想不到的话,还是重新学一遍去吧 所以我们应该怎么做呢 虚树的板子不需要我再讲一遍了吧 所以对于这个题来说,怎么根据虚树上的节 ...
- 5.15、tomcat下部署JPress
1.说明: jpress类似于wordpress,wordpress是php语言开发的国外开源软件,jpress是java语言 开发的国内开源软件: 2.下载软件包: [root@slave-node ...
- 24、mysql数据库优化
24.1.如何判断网站慢的排查顺序: 客户端->web->nfs->数据库: 24.2.uptime命令详解: [root@backup ~]#uptime 13:03:23 up ...
- ActiveMq 之JMS 看这一篇就够了
什么是JMS MQ 全称:Java MessageService 中文:Java 消息服务. JMS 是 Java 的一套 API 标准,最初的目的是为了使应用程序能够访问现有的 MOM 系 统(MO ...