VimPlugin: Coc.nvim: Difference between revisions
Line 40: | Line 40: | ||
= Languages = | = Languages = | ||
<blockquote> | <blockquote> | ||
== Language Servers == | |||
Languages can be installed dynamically with <code>:CocInstall coc-python</code><br> | Languages can be installed dynamically with <code>:CocInstall coc-python</code><br> | ||
or automatically like <code>Plug 'neoclide/coc-tsserver', {'do': 'yarn install --frozen-lockfile'}</code>. | or automatically like <code>Plug 'neoclide/coc-tsserver', {'do': 'yarn install --frozen-lockfile'}</code>. | ||
Line 58: | Line 59: | ||
|- | |- | ||
|} | |} | ||
== Custom Language Servers == | |||
Some programs may be able to function as an LSP, and can be registered to do so.<br> | |||
see https://github.com/neoclide/coc.nvim/wiki/Language-servers#register-custom-language-servers | |||
<source lang="json"> | |||
{ | |||
"languageserver": { | |||
"sorbet": { | |||
"command": "srb", | |||
"args": ["tc", "--lsp"], | |||
"filetypes": ["ruby"] | |||
} | |||
} | |||
} | |||
</source> | |||
</blockquote><!-- languages --> | </blockquote><!-- languages --> | ||
Revision as of 06:15, 28 December 2021
coc.nvim aims to be intellisense (visualstudio) for vim.
- autocompletion
- outliner
- refactor-rename
- goto
- show-references
WARNING:
coc.nvim DOES NOT play nice with other autocompleters.
Documentation
Locations
~/.config/nvim/coc-settings.json
config ~/.config/coc/extensions/node_modules/${plugin}
plugins installed here ~/.config/coc/memos.json
persisted plugin data
Languages
Language Servers
Languages can be installed dynamically with
:CocInstall coc-python
or automatically likePlug 'neoclide/coc-tsserver', {'do': 'yarn install --frozen-lockfile'}
.
python unmaintained coc-python python active coc-pyright sh/bash active coc-sh ruby/rails active coc-solargraph ruby/rails active ruby sorbet graphql active coc-graphql Custom Language Servers
Some programs may be able to function as an LSP, and can be registered to do so.
see https://github.com/neoclide/coc.nvim/wiki/Language-servers#register-custom-language-servers{ "languageserver": { "sorbet": { "command": "srb", "args": ["tc", "--lsp"], "filetypes": ["ruby"] } } }
Install
# archlinux sudo pacman -S \ nodejs \ npm # macos brew install node.js \ npm npm install -g neovim" install coc Plug "https://github.com/neoclide/coc.nvim", {'branch': 'release'} " install coc languages " NOTE: technically this is supposed to work, but it doesn't for all languages " Plug 'https://github.com/neoclide/coc-tsserver', {'do': 'yarn install --frozen-lockfile'} if !(isdirectory($HOME."/.config/coc/extensions/node_modules/coc-sh")) CocInstall coc-sh endifNOTE:
Officially, installing servers can be done from vim-plug, but I have not had success with this.
CocInstall
works every time. It's probably best to check for files on disk.
Configuration
Keybindings
coc.nvim does not provide function calls, they direct you to bind hotkeys instead.
nmap <silent> gd <Plug>(coc-definition) nmap <silent> gy <Plug>(coc-type-definition) nmap <silent> gi <Plug>(coc-implementation) nmap <silent> gr <Plug>(coc-references)
Usage
Builtin Commands
CocInstall coc-python " install a language CocUninstall coc-python " uninstall a language CocOutline " tagbar-like outlinerCustom Commands (derived from plug functions)
" ex: command CocRename silent exec "normal \<Plug>(coc-rename)" " Introspection (src, packages) CocDefinition " go to where variable assigned CocTypeDefinition " go to where variable type defined CocImplementation CocReferences " show uses of variable CocShowdocumentation " show docs " Formatting CocFormatBuffer " format file CocFormatSelected " format selection CocOrganizeImports " sort imports " Debugging CocInfo " show nvim, coc, lsp info CocOpenLog " show log
Troubleshooting
:CocInfo " print debug info