Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

coc.nvim

Package Overview
Dependencies
Maintainers
1
Versions
110
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

coc.nvim

Completetion manage for neovim

  • 0.0.14
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
613
decreased by-13.05%
Maintainers
1
Weekly downloads
 
Created
Source

Conqure of Completion

CI (Linux, macOS)CoverageGitterDoc
Build Status BadgeCoverage BadgeGitter BadgeDoc Badge

Coc is an intellisense engine for vim8 & neovim.

It's a completion framework, language server client with bundled extensions from VSCode that just works.

example.gif

True snippet and additional text edit support

Checkout doc/coc.txt for vim interface.

Pros.

  • Easy to install and many features just work.
  • Optimized for speed, no effect on startup time and fastest completion experience.
  • Built in and custom completion source support.
  • Full completion features support of language server protocol.
  • Featured language server extensions from VSCode, like tsserver, tslint etc.
  • Custom language server configuration support.

Table of contents

Completion sources

NameDescriptionFiletypesRequirement
aroundWords of current buffer.all
bufferWords of none current buffer.all
dictionaryWords from files of dictionary option.all
tagWords from taglist of current buffer.all
fileFilename completion.all
omniInvoke omnifunc for complete items[]
wordWords from google 10000 english repo.all
emojiEmoji characters.all
includeFull path completion.all
gocodeCompletion using gocode['go']Install gocode
ultisnipsSnippets completionallInstall ultisnips
necoViml completionvimInstall neco-vim
neosnippetSnippets completionallInstall neosnippet.vim
  • To enable omni source for certain files, open coc-settings.json by :CocConfig, then add configuration like:

    "coc.source.omni.filetypes": ["python"],
    
  • To complete sources: include, emoji and word, use mapping of <Plug>(coc-complete-custom)

Extensions

Language server are decoupled from coc.nvim to make the core smaller, and easier for user to use their own version of language server.

  • Tsserver

    Used for javascript and typescript

      yarn global add typescript
    
  • Html

    Used for html handlebars razor

      yarn global add vscode-html-languageserver-bin
    
  • Json

    Used for json and jsonc

      yarn global add vscode-json-languageserver
    
  • Css

    Used for css scss less and wxss

      yarn global add css-langserver
    
  • Wxml

      yarn global add wxml-langserver
    
  • Vetur

    Used for vue

      yarn global add vue-language-server
    
  • Solargraph

    Used for ruby

    Install solargraph by:

      gem install solargraph
    
  • Pyls

    Used for python

    Install pyls by:

      pip install 'python-language-server[all]'
    
  • Stylelint

    Used for css wxss scss less markdown postcss sugarss vue.

      yarn global add stylelint-langserver
    
  • Eslint

    Used for javascript

      yarn global add eslint-server
    
  • Tslint

    Used for typescript

      yarn global add tslint-server
    

Note: use :CocConfig to edit configuration file, auto completion is supported

Example vim configuration

" if hidden not set, TextEdit might fail.
set hidden

" Better display for messages
set cmdheight=2

" Use tab for trigger completion with characters ahead and navigate.
inoremap <silent><expr> <TAB>
      \ pumvisible() ? "\<C-n>" :
      \ <SID>check_back_space() ? "\<TAB>" :
      \ coc#refresh()
inoremap <expr><S-TAB> pumvisible() ? "\<C-p>" : "\<C-h>"

" Use <c-space> for trigger completion.
inoremap <silent><expr> <c-space> coc#refresh()

" Use <C-p> to complete 'word', 'emoji' and 'include' sources
imap <silent> <C-p> <Plug>(coc-complete-custom)

function! s:check_back_space() abort
  let col = col('.') - 1
  return !col || getline('.')[col - 1]  =~# '\s'
endfunction

" Use <cr> for confirm completion.
inoremap <expr> <cr> pumvisible() ? "\<C-y>" : "\<C-g>u\<CR>"

" Use `[c` and `]c` for navigate diagnostics
nmap <silent> [c <Plug>(coc-diagnostic-prev)
nmap <silent> ]c <Plug>(coc-diagnostic-next)

" Remap keys for gotos
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)

" Use K for show documentation in preview window
nnoremap <silent> K :call <SID>show_documentation()<CR>

function! s:show_documentation()
  if &filetype == 'vim'
    execute 'h '.expand('<cword>')
  else
    call CocAction('doHover')
  endif
endfunction

" Show signature help while editing
autocmd CursorHoldI,CursorMovedI * silent! call CocAction('showSignatureHelp')

* Highlight symbol under cursor on CursorHold
autocmd CursorHold * silent call CocActionAsync('highlight')

" Remap for rename current word
nmap <leader>rn <Plug>(coc-rename)

" Remap for format selected region
vmap <leader>f  <Plug>(coc-format-selected)
nmap <leader>f  <Plug>(coc-format-selected)

" Remap for do codeAction of selected region, ex: `<leader>aap` for current paragraph
vmap <leader>a  <Plug>(coc-codeaction-selected)
nmap <leader>a  <Plug>(coc-codeaction-selected)

" Remap for do codeAction of current line
nmap <leader>ac  <Plug>(coc-codeaction)

" Use `:Format` for format current buffer
command! -nargs=0 Format :call CocAction('format')

* Use `:Fold` for fold current buffer
command! -nargs=? Fold :call     CocAction('fold', <f-args>)


" Add diagnostic info for https://github.com/itchyny/lightline.vim
let g:lightline = {
      \ 'colorscheme': 'wombat',
      \ 'active': {
      \   'left': [ [ 'mode', 'paste' ],
      \             [ 'cocstatus', 'readonly', 'filename', 'modified' ] ]
      \ },
      \ 'component_function': {
      \   'cocstatus': 'coc#status'
      \ },
      \ }



" Shortcuts for denite interface
" Show symbols of current buffer
nnoremap <silent> <space>o  :<C-u>Denite coc-symbols<cr>
" Search symbols of current workspace
nnoremap <silent> <space>t  :<C-u>Denite coc-workspace<cr>
" Show diagnostics of current workspace
nnoremap <silent> <space>a  :<C-u>Denite coc-diagnostic<cr>
" Show available commands
nnoremap <silent> <space>c  :<C-u>Denite coc-command<cr>
" Show available services
nnoremap <silent> <space>s  :<C-u>Denite coc-service<cr>
" Show links of current buffer
nnoremap <silent> <space>l  :<C-u>Denite coc-link<cr>

Trouble shooting

Don't be hesitated to open a issue.

LICENSE

FOSSA Status

Keywords

FAQs

Package last updated on 04 Sep 2018

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc