-
-
Notifications
You must be signed in to change notification settings - Fork 961
Install coc.nvim
Coc.nvim is mostly written in TypeScript and runs on Node.js.
-
neovim
>=0.4.0
orvim
>=8.0.1453
(run:version
orvim --version
to checkout your vim version) -
node
>=12.12
Install Node.js >= 12 on MacOS:
brew install node
Install the latest stable Node.js; may not work on Windows.
curl -sL install-node.now.sh | sh
Note: coc.nvim finds node
by calling executable('node')
from within vim. Check out
:h g:coc_node_path
to customize node path.
Install Yarn — required when building from source.
curl --compressed -o- -L https://yarnpkg.com/install.sh | bash
Note: NixOS users must follow these steps:
- Install Node.js via
nix-env
or put it in/etc/nixos/configuration.nix
sudo nixos-rebuild switch
Using vim-plug
Use default release branch (recommended):
Plug 'neoclide/coc.nvim', {'branch': 'release'}
Build from source:
Plug 'neoclide/coc.nvim', { 'branch': 'master', 'do': 'yarn install --frozen-lockfile' }
Run command :PlugInstall
in your (neo)vim.
Using packer.nvim
Use default release branch (recommended):
use {'neoclide/coc.nvim', branch = 'release'}
Build from source:
use {'neoclide/coc.nvim', branch = 'master', run = 'yarn install --frozen-lockfile'}
Run command :PackerInstall
in your (neo)vim.
Using dein.vim
Use release branch (recommended):
call dein#add('neoclide/coc.nvim', { 'merged': 0 })
Build from source:
call dein#add('neoclide/coc.nvim', { 'merged': 0, 'rev': 'master', 'build': 'yarn install --frozen-lockfile' })
Note: When 'merged': 0
not present, coc.nvim will be unable to start.
Note: Depends on your network and CPU, first build might take a while.
If you have trouble compiling from source when using dein, try in your shell:
cd ~/.cache/dein/repos/github.com/neoclide/coc.nvim
git clean -xfd
yarn install --frozen-lockfile
Using NeoBundle
Use this work-around to check out the recommended release
branch:
NeoBundle 'neoclide/coc.nvim'
Unzip source code from release branch:
# for vim8
mkdir -p ~/.vim/pack/coc/start
cd ~/.vim/pack/coc/start
git clone https://github.com/neoclide/coc.nvim.git
# for neovim
mkdir -p ~/.local/share/nvim/site/pack/coc/start
cd ~/.local/share/nvim/site/pack/coc/start
git clone https://github.com/neoclide/coc.nvim.git
To check and see if the coc service is running, use command :checkhealth
in neovim (not supported by vim); the output looks like:
Set g:coc_node_path
variable to specify which node
executable to start coc.nvim service from.
Another useful command is :CocInfo
— use it after the service has started to get some useful information on it.
For example, for generic web-development consider :CocInstall coc-tsserver coc-json coc-html coc-css
For Python3 :CocInstall coc-pyright
For PHP :CocInstall coc-phpls
and so on...
For more information check out Using coc extensions
Run :CocConfig
, which will open main config file ~/.config/nvim/coc-settings.json
(empty for new installation). Add empty JSON object (like {}
) and add a list of language servers configurations not already covered by existing extensions (e.g. if you already installed coc-python
, you don't need to add configuration for the pyls
server).
For more information check out Using the configuration file
For feature workspace_didChangeWatchedFiles to work, you will need to install watchman by following https://facebook.github.io/watchman/docs/install.
Watchman works great even when you have multiple (neo)vim instances started in the same directory.
Warning: Don't create .watchmanconfig
file in your home directory.
Note: watchman can use a lot of memory! Run watchman watch-del-all
in your shell to free some.
To set up coc.nvim and extensions faster on different machines, you can use a shell script, for example:
#!/usr/bin/env bash
set -o nounset # error when referencing undefined variable
set -o errexit # exit when command fails
# Install latest nodejs
if [ ! -x "$(command -v node)" ]; then
curl --fail -LSs https://install-node.now.sh/latest | sh
export PATH="/usr/local/bin/:$PATH"
# Or use package manager, e.g.
# sudo apt-get install nodejs
fi
# Use package feature to install coc.nvim
# for vim8
mkdir -p ~/.vim/pack/coc/start
cd ~/.vim/pack/coc/start
curl --fail -L https://github.com/neoclide/coc.nvim/archive/release.tar.gz | tar xzfv -
# for neovim
# mkdir -p ~/.local/share/nvim/site/pack/coc/start
# cd ~/.local/share/nvim/site/pack/coc/start
# curl --fail -L https://github.com/neoclide/coc.nvim/archive/release.tar.gz | tar xzfv -
# Install extensions
mkdir -p ~/.config/coc/extensions
cd ~/.config/coc/extensions
if [ ! -f package.json ]
then
echo '{"dependencies":{}}'> package.json
fi
# Change extension names to the extensions you need
npm install coc-snippets --global-style --ignore-scripts --no-bin-links --no-package-lock --only=prod