上手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 完全指南的更多相关文章

  1. Docker从入门到掉坑(四):上手k8s避坑指南

    在之前的几篇文章中,主要还是讲解了关于简单的docker容器该如何进行管理和操作,在接下来的这篇文章开始,我们将开始进入对于k8s模块的学习 不熟悉的可以先回顾之前的章节,Docker教程系列文章将归 ...

  2. 从零开始搭建你的nvim ide

    前言概述 vim由于其丰富的扩展性.出色的跨平台性.高效率的操作性深受一大批粉丝的追捧,甚至就连vim和emacs之间孰优孰劣的话题都能被引起一场编辑器之间的圣战,足以见vim是多么的优秀. vim的 ...

  3. 一些VR延迟优化方法

    http://m.blog.csdn.net/article/details?id=50667507 VR中的”延迟”, 特指”Motion-To-Photon Latency”, 指的是从用户运动开 ...

  4. 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 ...

  5. 共享一个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 ...

  6. F#周报2019年第26期

    新闻 逐渐演化的.NET Core框架 Visual Studio提示与技巧 Windows Termina(预览) Microsoft在GitHub上的工程师从2000名增加至25000名 视频及幻 ...

  7. Linux快速搭建C/C++开发环境

    导读:越来越多的程序员在Linux下进行C/C++的开发.本文以CentOS 7为例,教你快速搭建一个vi + gcc/g++ + Make + valgrind的开发环境. 本文字数:1500,阅读 ...

  8. windows terminal+wsl+neovim配置过程杂记

    长期记录,草稿 coc依赖于node,直接sudo apt intsll node得到的版本是10.x,无法满足要求, 这篇博客介绍了安装新版node的方法https://www.cnblogs.co ...

  9. Rancher 快速上手指南操作(1)

    Rancher 快速上手指南操作(1)该指南知道用户如何快速的部署Rancher Server 管理容器.前提是假设你的机器已经安装好docker了.1 确认 docker 的版本,下面是 ubunt ...

随机推荐

  1. Java期末考试编程题复习

    在程序中定义Person类,为该类编写如下字段.构造器.访问器.修改器和相应的其他方法.(20分) <1>在Person类中定义两个字段: 私有访问权限,类型为String的name字段: ...

  2. SpringBoot——配置类实现WebMvcConfigurer接口来配置拦截器、view-controller、视图解析器等

    目的:为了保留SpringBoot对SpringMVC自动配置,另外我们还想要做一些自己拓展的功能 如何做扩展? 以配置view-controller实现跳转为例: 原先在SpringMvc中我们写v ...

  3. 如何实现一个简易版的 Spring - 如何实现 AOP(终结篇)

    前言 在 上篇 实现了 判断一个类的方式是符合配置的 pointcut 表达式.根据一个 Bean 的名称和方法名,获取 Method 对象.实现了 BeforeAdvice.AfterReturni ...

  4. 『居善地』接口测试 — 11、接口签名sign原理

    目录 1.什么是加密以及解密? 2.加密方式的分类 (1)对称加密 (2)非对称加密 (3)总结: 3.接口签名sign原理 (1)什么是接口签名? (2)为什么需要做接口签名 (3)接口签名的实践方 ...

  5. 【NX二次开发】Block UI 通过浏览选择文件

    属性说明 属性   类型   描述   常规           BlockID    String    控件ID    Enable    Logical    是否可操作    Group    ...

  6. 题解 P3233 [HNOI2014]世界树

    题目传送门 解题思路 正解当然是虚树了. 首先对于原树以及虚树各开一个结构体存边,这个不用多说. 然后我们先 DFS 一遍,求出各个节点的时间戳,子树大小,深度以及父亲节点,并初始化倍增 LCA . ...

  7. 「10.10」神炎皇(欧拉函数)·降雷皇(线段树,DP)·幻魔皇

    A. 神炎皇 很好的一道题,可能第一次在考场上遇到欧拉函数 题意:对于一个整数对 $(a,b)$,若满足 $a\times b\leq n$且$a+b$是$a\times b$的因子, 则称为神奇的数 ...

  8. js笔记18

    1.面向对象 (1)单例模式 (2)工厂模式 (3)构造函数 a.类  js天生自带的类 基类   object 子类   Function  Array Number  Math  Boolean ...

  9. SystemVerilog 中的相等运算符:== or === ?

    1. 四值逻辑的逻辑运算 在对比SystemVerilog中的相等运算符之前,先来看一下三种最基本的逻辑运算符,下文中以·表示与运算,以+表示或运算,以'表示非运算.我们都知道在逻辑代数中,只有0和1 ...

  10. 【LeetCode每日一题 Day 5】5. 最长回文子串

    大家好,我是编程熊,今天是LeetCode每日一题的第五天,一起学习LeetCode第五题<最长回文子串>. 题意 给你一个字符串 s,找到 s 中最长的回文子串. 示例 输入:s = & ...