coc.nvim

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

coc.nvim is an autocomplete plugin for Vim implementing completions on par with VSCode. It’s built using the same underlying “language server” mechanism. As a result, to get proper language completions you must install specific language sets (like coc-python).

Setup

You can set the extensions you want installed via the g:coc_global_extensions option. This will install the listed extensions if they are not already present.

Config file

The configuration file allows the user to customize specific language settings. These can be used directly by language servers, or can be picked up by coc-specific language extensions. Community extensions often have more features or smoother operation than some of the poorly maintained language servers.

Options

  • Global config: :CocConfig opens a config file
  • Install things using :CocInstall

Settings

Settings can be set globally (using :CocConfig) for particular languages. The following JSON structure shows how these settings should look, with a language as key and the associated options (which can be found in the language specific repos).

{
  "languageserver": {
    "python": {
      ...,
      <settings>,
      ...
    }
}

Statusline Integration

Use :h coc-status for details.

Current settings

  • Python: currently have pylint as a linter, and using black to reformat files on save (although this is not working properly at the moment).