Skip to content

Latest commit

Β 

History

6,726 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Logo

Make your Vim/Neovim as smart as VS Code

Software License Actions Codecov Coverage Status Doc Ask DeepWiki


Custom coc popup menu with snippet support

Custom popup menu with snippet support

Why?

Quick Start

Make sure you use Vim >= 9.0.0438 or Neovim >= 0.8.0.

Install Node.js >= 22.15.0:

curl -sL install-node.vercel.app/lts | bash

For vim-plug users:

" Use release branch (recommended)
Plug 'neoclide/coc.nvim', {'branch': 'release'}

" Or build from source code by using npm
Plug 'neoclide/coc.nvim', {'branch': 'master', 'do': 'npm ci'}

in your .vimrc or init.vim, then restart Vim and run :PlugInstall.

Check out Install coc.nvim for more info.

You have to install coc extensions or configure language servers for LSP support.

Install extensions like this:

:CocInstall coc-json coc-tsserver

Or you can configure a language server in your coc-settings.json (open it using :CocConfig) like this:

{
  "languageserver": {
    "go": {
      "command": "gopls",
      "rootPatterns": ["go.mod"],
      "trace.server": "verbose",
      "filetypes": ["go"]
    }
  }
}

Check out the wiki for more details:

Check out :h coc-nvim for the Vim interface.

Example Vim configuration

Configuration is required to make coc.nvim easier to work with, since it doesn't change your key-mappings or Vim options. This is done as much as possible to avoid conflict with your other plugins.

❗️Important: Some Vim plugins can change your key mappings. Please use command like:verbose imap <tab> to make sure that your keymap has taken effect.

" https://raw.githubusercontent.com/neoclide/coc.nvim/master/doc/coc-example-config.vim

" May need for Vim (not Neovim) since coc.nvim calculates byte offset by count
" utf-8 byte sequence
set encoding=utf-8
" Some servers have issues with backup files, see #649
set nobackup
set nowritebackup

" Having longer updatetime (default is 4000 ms = 4s) leads to noticeable
" delays and poor user experience
set updatetime=300

" Always show the signcolumn, otherwise it would shift the text each time
" diagnostics appear/become resolved
set signcolumn=yes

" Use tab for trigger completion with characters ahead and navigate
" NOTE: There's always complete item selected by default, you may want to enable
" no select by `"suggest.noselect": true` in your configuration file
" NOTE: Use command ':verbose imap <tab>' to make sure tab is not mapped by
" other plugin before putting this into your config
inoremap <silent><expr> <TAB>
      \ coc#pum#visible() ? coc#pum#next(1) :
      \ CheckBackspace() ? "\<Tab>" :
      \ coc#refresh()
inoremap <expr><S-TAB> coc#pum#visible() ? coc#pum#prev(1) : "\<C-h>"

" Make <CR> to accept selected completion item or notify coc.nvim to format
" <C-g>u breaks current undo, please make your own choice
inoremap <silent><expr> <CR> coc#pum#visible() ? coc#pum#confirm()
                              \: "\<C-g>u\<CR>\<c-r>=coc#on_enter()\<CR>"

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

" Use <c-space> to trigger completion
if has('nvim')
  inoremap <silent><expr> <c-space> coc#refresh()
else
  inoremap <silent><expr> <c-@> coc#refresh()
endif

" Use `[g` and `]g` to navigate diagnostics
" Use `:CocDiagnostics` to get all diagnostics of current buffer in location list
nmap <silent><nowait> [g <Plug>(coc-diagnostic-prev)
nmap <silent><nowait> ]g <Plug>(coc-diagnostic-next)

" GoTo code navigation
nmap <silent><nowait> gd <Plug>(coc-definition)
nmap <silent><nowait> gy <Plug>(coc-type-definition)
nmap <silent><nowait> gi <Plug>(coc-implementation)
nmap <silent><nowait> gr <Plug>(coc-references)

" Use K to show documentation in preview window
nnoremap <silent> K :call ShowDocumentation()<CR>

function! ShowDocumentation()
  if CocAction('hasProvider', 'hover')
    call CocActionAsync('doHover')
  else
    call feedkeys('K', 'in')
  endif
endfunction

" Highlight the symbol and its references when holding the cursor
autocmd CursorHold * silent call CocActionAsync('highlight')

" Symbol renaming
nmap <leader>rn <Plug>(coc-rename)

" Formatting selected code
xmap <leader>f  <Plug>(coc-format-selected)
nmap <leader>f  <Plug>(coc-format-selected)

augroup mygroup
  autocmd!
  " Setup formatexpr specified filetype(s)
  autocmd FileType typescript,json setl formatexpr=CocAction('formatSelected')
augroup end

" Applying code actions to the selected code block
" Example: `<leader>aap` for current paragraph
xmap <leader>a  <Plug>(coc-codeaction-selected)
nmap <leader>a  <Plug>(coc-codeaction-selected)

" Remap keys for applying code actions at the cursor position
nmap <leader>ac  <Plug>(coc-codeaction-cursor)
" Remap keys for apply code actions affect whole buffer
nmap <leader>as  <Plug>(coc-codeaction-source)
" Apply the most preferred quickfix action to fix diagnostic on the current line
nmap <leader>qf  <Plug>(coc-fix-current)

" Remap keys for applying refactor code actions
nmap <silent> <leader>re <Plug>(coc-codeaction-refactor)
xmap <silent> <leader>r  <Plug>(coc-codeaction-refactor-selected)
nmap <silent> <leader>r  <Plug>(coc-codeaction-refactor-selected)

" Run the Code Lens action on the current line
nmap <leader>cl  <Plug>(coc-codelens-action)

" Map function and class text objects
" NOTE: Requires 'textDocument.documentSymbol' support from the language server
xmap if <Plug>(coc-funcobj-i)
omap if <Plug>(coc-funcobj-i)
xmap af <Plug>(coc-funcobj-a)
omap af <Plug>(coc-funcobj-a)
xmap ic <Plug>(coc-classobj-i)
omap ic <Plug>(coc-classobj-i)
xmap ac <Plug>(coc-classobj-a)
omap ac <Plug>(coc-classobj-a)

" Remap <C-f> and <C-b> to scroll float windows/popups
if has('nvim-0.4.0') || has('patch-8.2.0750')
  nnoremap <silent><nowait><expr> <C-f> coc#float#has_scroll() ? coc#float#scroll(1) : "\<C-f>"
  nnoremap <silent><nowait><expr> <C-b> coc#float#has_scroll() ? coc#float#scroll(0) : "\<C-b>"
  inoremap <silent><nowait><expr> <C-f> coc#float#has_scroll() ? "\<c-r>=coc#float#scroll(1)\<cr>" : "\<Right>"
  inoremap <silent><nowait><expr> <C-b> coc#float#has_scroll() ? "\<c-r>=coc#float#scroll(0)\<cr>" : "\<Left>"
  vnoremap <silent><nowait><expr> <C-f> coc#float#has_scroll() ? coc#float#scroll(1) : "\<C-f>"
  vnoremap <silent><nowait><expr> <C-b> coc#float#has_scroll() ? coc#float#scroll(0) : "\<C-b>"
endif

" Use CTRL-S for selections ranges
" Requires 'textDocument/selectionRange' support of language server
nmap <silent> <C-s> <Plug>(coc-range-select)
xmap <silent> <C-s> <Plug>(coc-range-select)

" Add `:Format` command to format current buffer
command! -nargs=0 Format :call CocActionAsync('format')

" Add `:Fold` command to fold current buffer
command! -nargs=? Fold :call     CocAction('fold', <f-args>)

" Add `:OR` command for organize imports of the current buffer
command! -nargs=0 OR   :call     CocActionAsync('runCommand', 'editor.action.organizeImport')

" Add (Neo)Vim's native statusline support
" NOTE: Please see `:h coc-status` for integrations with external plugins that
" provide custom statusline: lightline.vim, vim-airline
set statusline^=%{coc#status()}%{get(b:,'coc_current_function','')}

" Mappings for CoCList
" Show all diagnostics
nnoremap <silent><nowait> <space>a  :<C-u>CocList diagnostics<cr>
" Manage extensions
nnoremap <silent><nowait> <space>e  :<C-u>CocList extensions<cr>
" Show commands
nnoremap <silent><nowait> <space>c  :<C-u>CocList commands<cr>
" Find symbol of current document
nnoremap <silent><nowait> <space>o  :<C-u>CocList outline<cr>
" Search workspace symbols
nnoremap <silent><nowait> <space>s  :<C-u>CocList -I symbols<cr>
" Do default action for next item
nnoremap <silent><nowait> <space>j  :<C-u>CocNext<CR>
" Do default action for previous item
nnoremap <silent><nowait> <space>k  :<C-u>CocPrev<CR>
" Resume latest coc list
nnoremap <silent><nowait> <space>p  :<C-u>CocListResume<CR>

Example Lua configuration

NOTE: This only works in Neovim 0.8.0+.

-- https://raw.githubusercontent.com/neoclide/coc.nvim/master/doc/coc-example-config.lua

-- Some servers have issues with backup files, see #649
vim.opt.backup = false
vim.opt.writebackup = false

-- Having longer updatetime (default is 4000 ms = 4s) leads to noticeable
-- delays and poor user experience
vim.opt.updatetime = 300

-- Always show the signcolumn, otherwise it would shift the text each time
-- diagnostics appeared/became resolved
vim.opt.signcolumn = "yes"

local keyset = vim.keymap.set
-- Autocomplete
function _G.check_back_space()
    local col = vim.fn.col('.') - 1
    return col == 0 or vim.fn.getline('.'):sub(col, col):match('%s') ~= nil
end

-- Use Tab for trigger completion with characters ahead and navigate
-- NOTE: There's always a completion item selected by default, you may want to enable
-- no select by setting `"suggest.noselect": true` in your configuration file
-- NOTE: Use command ':verbose imap <tab>' to make sure Tab is not mapped by
-- other plugins before putting this into your config
local opts = {silent = true, noremap = true, expr = true, replace_keycodes = false}
keyset("i", "<TAB>", 'coc#pum#visible() ? coc#pum#next(1) : v:lua.check_back_space() ? "<TAB>" : coc#refresh()', opts)
keyset("i", "<S-TAB>", [[coc#pum#visible() ? coc#pum#prev(1) : "\<C-h>"]], opts)

-- Make <CR> to accept selected completion item or notify coc.nvim to format
-- <C-g>u breaks current undo, please make your own choice
keyset("i", "<cr>", [[coc#pum#visible() ? coc#pum#confirm() : "\<C-g>u\<CR>\<c-r>=coc#on_enter()\<CR>"]], opts)

-- Use <c-j> to trigger snippets
keyset("i", "<c-j>", "<Plug>(coc-snippets-expand-jump)")
-- Use <c-space> to trigger completion
keyset("i", "<c-space>", "coc#refresh()", {silent = true, expr = true})

-- Use `[g` and `]g` to navigate diagnostics
-- Use `:CocDiagnostics` to get all diagnostics of current buffer in location list
keyset("n", "[g", "<Plug>(coc-diagnostic-prev)", {silent = true})
keyset("n", "]g", "<Plug>(coc-diagnostic-next)", {silent = true})

-- GoTo code navigation
keyset("n", "gd", "<Plug>(coc-definition)", {silent = true})
keyset("n", "gy", "<Plug>(coc-type-definition)", {silent = true})
keyset("n", "gi", "<Plug>(coc-implementation)", {silent = true})
keyset("n", "gr", "<Plug>(coc-references)", {silent = true})


-- Use K to show documentation in preview window
function _G.show_docs()
    local cw = vim.fn.expand('<cword>')
    if vim.fn.index({'vim', 'help'}, vim.bo.filetype) >= 0 then
        vim.api.nvim_command('h ' .. cw)
    elseif vim.api.nvim_eval('coc#rpc#ready()') then
        vim.fn.CocActionAsync('doHover')
    else
        vim.api.nvim_command('!' .. vim.o.keywordprg .. ' ' .. cw)
    end
end
keyset("n", "K", '<CMD>lua _G.show_docs()<CR>', {silent = true})


-- Highlight the symbol and its references on a CursorHold event(cursor is idle)
vim.api.nvim_create_augroup("CocGroup", {})
vim.api.nvim_create_autocmd("CursorHold", {
    group = "CocGroup",
    command = "silent call CocActionAsync('highlight')",
    desc = "Highlight symbol under cursor on CursorHold"
})


-- Symbol renaming
keyset("n", "<leader>rn", "<Plug>(coc-rename)", {silent = true})


-- Formatting selected code
keyset("x", "<leader>f", "<Plug>(coc-format-selected)", {silent = true})
keyset("n", "<leader>f", "<Plug>(coc-format-selected)", {silent = true})


-- Setup formatexpr specified filetype(s)
vim.api.nvim_create_autocmd("FileType", {
    group = "CocGroup",
    pattern = "typescript,json",
    command = "setl formatexpr=CocAction('formatSelected')",
    desc = "Setup formatexpr specified filetype(s)."
})

-- Apply codeAction to the selected region
-- Example: `<leader>aap` for current paragraph
local opts = {silent = true, nowait = true}
keyset("x", "<leader>a", "<Plug>(coc-codeaction-selected)", opts)
keyset("n", "<leader>a", "<Plug>(coc-codeaction-selected)", opts)

-- Remap keys for apply code actions at the cursor position.
keyset("n", "<leader>ac", "<Plug>(coc-codeaction-cursor)", opts)
-- Remap keys for apply source code actions for current file.
keyset("n", "<leader>as", "<Plug>(coc-codeaction-source)", opts)
-- Apply the most preferred quickfix action on the current line.
keyset("n", "<leader>qf", "<Plug>(coc-fix-current)", opts)

-- Remap keys for apply refactor code actions.
keyset("n", "<leader>re", "<Plug>(coc-codeaction-refactor)", { silent = true })
keyset("x", "<leader>r", "<Plug>(coc-codeaction-refactor-selected)", { silent = true })
keyset("n", "<leader>r", "<Plug>(coc-codeaction-refactor-selected)", { silent = true })

-- Run the Code Lens actions on the current line
keyset("n", "<leader>cl", "<Plug>(coc-codelens-action)", opts)


-- Map function and class text objects
-- NOTE: Requires 'textDocument.documentSymbol' support from the language server
keyset("x", "if", "<Plug>(coc-funcobj-i)", opts)
keyset("o", "if", "<Plug>(coc-funcobj-i)", opts)
keyset("x", "af", "<Plug>(coc-funcobj-a)", opts)
keyset("o", "af", "<Plug>(coc-funcobj-a)", opts)
keyset("x", "ic", "<Plug>(coc-classobj-i)", opts)
keyset("o", "ic", "<Plug>(coc-classobj-i)", opts)
keyset("x", "ac", "<Plug>(coc-classobj-a)", opts)
keyset("o", "ac", "<Plug>(coc-classobj-a)", opts)


-- Remap <C-f> and <C-b> to scroll float windows/popups
---@diagnostic disable-next-line: redefined-local
local opts = {silent = true, nowait = true, expr = true}
keyset("n", "<C-f>", 'coc#float#has_scroll() ? coc#float#scroll(1) : "<C-f>"', opts)
keyset("n", "<C-b>", 'coc#float#has_scroll() ? coc#float#scroll(0) : "<C-b>"', opts)
keyset("i", "<C-f>",
       'coc#float#has_scroll() ? "<c-r>=coc#float#scroll(1)<cr>" : "<Right>"', opts)
keyset("i", "<C-b>",
       'coc#float#has_scroll() ? "<c-r>=coc#float#scroll(0)<cr>" : "<Left>"', opts)
keyset("v", "<C-f>", 'coc#float#has_scroll() ? coc#float#scroll(1) : "<C-f>"', opts)
keyset("v", "<C-b>", 'coc#float#has_scroll() ? coc#float#scroll(0) : "<C-b>"', opts)


-- Use CTRL-S for selections ranges
-- Requires 'textDocument/selectionRange' support of language server
keyset("n", "<C-s>", "<Plug>(coc-range-select)", {silent = true})
keyset("x", "<C-s>", "<Plug>(coc-range-select)", {silent = true})


-- Add `:Format` command to format current buffer
vim.api.nvim_create_user_command("Format", "call CocAction('format')", {})

-- " Add `:Fold` command to fold current buffer
vim.api.nvim_create_user_command("Fold", "call CocAction('fold', <f-args>)", {nargs = '?'})

-- Add `:OR` command for organize imports of the current buffer
vim.api.nvim_create_user_command("OR", "call CocActionAsync('runCommand', 'editor.action.organizeImport')", {})

-- Add (Neo)Vim's native statusline support
-- NOTE: Please see `:h coc-status` for integrations with external plugins that
-- provide custom statusline: lightline.vim, vim-airline
vim.opt.statusline:prepend("%{coc#status()}%{get(b:,'coc_current_function','')}")

-- Mappings for CoCList
-- code actions and coc stuff
---@diagnostic disable-next-line: redefined-local
local opts = {silent = true, nowait = true}
-- Show all diagnostics
keyset("n", "<space>a", ":<C-u>CocList diagnostics<cr>", opts)
-- Manage extensions
keyset("n", "<space>e", ":<C-u>CocList extensions<cr>", opts)
-- Show commands
keyset("n", "<space>c", ":<C-u>CocList commands<cr>", opts)
-- Find symbol of current document
keyset("n", "<space>o", ":<C-u>CocList outline<cr>", opts)
-- Search workspace symbols
keyset("n", "<space>s", ":<C-u>CocList -I symbols<cr>", opts)
-- Do default action for next item
keyset("n", "<space>j", ":<C-u>CocNext<cr>", opts)
-- Do default action for previous item
keyset("n", "<space>k", ":<C-u>CocPrev<cr>", opts)
-- Resume latest coc list
keyset("n", "<space>p", ":<C-u>CocListResume<cr>", opts)

MCP Server

coc.nvim can act as a Model Context Protocol server so agents like OpenAI Codex can read editor buffers (including unsaved changes), query the language servers and apply edits that stay in sync with Vim/Neovim.

The MCP server can expose read and write operations to connected clients. Only connect trusted clients, and use mcp.allowedPaths, mcp.deniedPaths and mcp.allowedTools to restrict access when needed.

Auto start it in coc-settings.json (disabled by default):

{
  "mcp": {
    "autoStart": true
  }
}

Register the stdio bridge in ~/.codex/config.toml:

[mcp_servers.coc]
command = "node"
args = ["/path/to/coc.nvim/bin/coc-mcp.js"]
enabled = true

Run codex mcp list to verify the server, then call tools such as document/read, lsp/references or workspace/apply_edit. See doc/coc-mcp.txt for the interface specification. List the available tools in vim with :CocCommand mcp.status or via the MCP tools/list request.

During initialization, the bridge waits up to five seconds for a usable coc.nvim connection before returning an error. Start vim/nvim with coc.nvim and "mcp.autoStart": true, or run :CocCommand mcp.start, before launching Codex. Set COC_MCP_STARTUP_TIMEOUT_MS to change the timeout.

Articles

Troubleshooting

Try these steps if you experience problems with coc.nvim:

  • Ensure your Vim version is >= 9.0.0438 or your Neovim version is >= 0.8.0 using :version
  • If a service failed to start, use :CocInfo or :checkhealth if you use Neovim
  • Check the coc.nvim log with :CocOpenLog
  • If you have issues with the language server, it's recommended to check out the language server output

Feedback

Backers

Become a backer and get your image on our README on GitHub with a link to your site.

Enterprise sponsors

Logo Sponsor Website
MFB Technologies MFB Technologies https://mfbtech.com
Sentry Sentry https://sentry.io/welcome/

Individual backers

Avatar Backer Link
daquexian daquexian https://opencollective.com/daquexian
Okan Esen Okan Esen https://okanesen.com
Anonymous Anonymous https://opencollective.com/guest-63c9b283
Nathan Pearson Nathan Pearson https://opencollective.com/npearson72
Chip Camden Chip Camden https://opencollective.com/chip-camden
Sebastian DrΓΆge Sebastian DrΓΆge https://coaxion.net
leland J Kwong leland J Kwong https://opencollective.com/guest-bce8e2de
Anonymous Anonymous https://opencollective.com/incognito-439fb655
Carles Escrig Carles Escrig https://opencollective.com/esroyo
PablO PablO https://opencollective.com/pablo
Anonymous Anonymous https://opencollective.com/incognito-c2aa65ce
Omer Omer https://opencollective.com/user-288d165e
Nils B Nils B https://opencollective.com/nils-b
Chafic Najjar Chafic Najjar https://opencollective.com/chafic-najjar
Anonymous Anonymous https://opencollective.com/guest-3bc439f2
Anonymous Anonymous https://opencollective.com/incognito-e073348a
Anonymous Anonymous https://opencollective.com/guest-0e9e75ad
Anonymous Anonymous https://opencollective.com/guest-8bb82c78
ДСнис Житняков ДСнис Житняков https://opencollective.com/guest-812018c9
Anonymous Anonymous https://opencollective.com/guest-343a0a8e
Anonymous Anonymous https://opencollective.com/guest-8112f063
Anonymous Anonymous https://opencollective.com/guest-edf2c072
Anonymous Anonymous https://opencollective.com/incognito-9e1c6c17
Anonymous Anonymous https://opencollective.com/user-bf5a2d9b
Balamurali M Balamurali M https://opencollective.com/balamurali-m
Ben Ben https://opencollective.com/guest-ebc136ce
Bert Bert https://opencollective.com/guest-e65d50cf
Cheng JIANG Cheng JIANG https://blog.alexcj96.com
Emilio Arenas Emilio Arenas https://opencollective.com/emilio-arenas
ISON ISON https://opencollective.com/ison
Julius Julius https://opencollective.com/guest-fdfb2885
Juraj Andris Juraj Andris https://opencollective.com/guest-fc8171f6
Justus Grunow Justus Grunow https://opencollective.com/justus-grunow
Mauricio Poppe Mauricio Poppe https://opencollective.com/guest-e6a5c729
Nick TomTHomas Nick TomTHomas https://opencollective.com/guest-fc7d356e
Proton Proton https://opencollective.com/guest-974b3e1e
Thomas Etter Thomas Etter https://opencollective.com/guest-307058fe
Tim Brown Tim Brown https://brimtown.com
Wolido Wolido https://opencollective.com/wolido
狗娃子 狗娃子 https://opencollective.com/guest-a1626275
Mort Mort https://opencollective.com/mortymacs
Anonymous Anonymous https://opencollective.com/guest-bc027749
Anonymous Anonymous https://opencollective.com/guest-fdb12847
Emi Emi https://opencollective.com/guest-7a04bc76
LuncyTB LuncyTB https://opencollective.com/luncytb
Mohammad Banisaeid Mohammad Banisaeid https://opencollective.com/guest-7ac14515
Moti Moti https://opencollective.com/moti
Nachiket Nachiket https://opencollective.com/guest-44e11602
Oleksii Usatov Oleksii Usatov https://opencollective.com/oleksii-usatov
OtΓ‘vio Schwanck dos Santos OtΓ‘vio Schwanck dos Santos https://opencollective.com/guest-e4e855af
Robert Zhang Robert Zhang https://opencollective.com/robert-zhang
Shank Shank https://opencollective.com/guest-47c6b301
Thomas Thomas https://opencollective.com/guest-30886871
rammiah rammiah https://opencollective.com/rammiah
yaegassy yaegassy https://opencollective.com/yaegassy
lord63 lord63 https://opencollective.com/lord63
Anonymous Anonymous https://opencollective.com/guest-44f008fe
Anonymous Anonymous https://opencollective.com/guest-b28877fa
Linhan Linhan https://opencollective.com/linhan
Mika Mika https://opencollective.com/guest-36196702
Ruiqi Zhu Ruiqi Zhu https://opencollective.com/guest-7f75235b
Yuta Katayama Yuta Katayama https://opencollective.com/yutkat
luobing Dai luobing Dai https://opencollective.com/guest-c9a81109
sternelee sternelee https://opencollective.com/sternelee
unclebill unclebill https://github.com/unclebill
Juan Ramirez Juan Ramirez https://opencollective.com/juan-ramirez1
Breno Vieira Breno Vieira https://opencollective.com/guest-87c17e2a

Contributors

Qiming zhao
Qiming zhao

πŸ’»
Heyward Fann
Heyward Fann

πŸ’»
Raidou
Raidou

πŸ’»
kevinhwang91
kevinhwang91

πŸ’»
年糕小豆汀
年糕小豆汀

πŸ’»
Avi Dessauer
Avi Dessauer

πŸ’»
ζœ€δΈŠε·
ζœ€δΈŠε·

πŸ’»
Yatao Li
Yatao Li

πŸ’»
wongxy
wongxy

πŸ’»
Sam McCall
Sam McCall

πŸ’»
Samuel Roeca
Samuel Roeca

πŸ’»
Amirali Esmaeili
Amirali Esmaeili

πŸ’»
Jack Rowlingson
Jack Rowlingson

πŸ’»
Jaehwang Jung
Jaehwang Jung

πŸ’»
Antoine
Antoine

πŸ’»
Cosmin Popescu
Cosmin Popescu

πŸ’»
Duc Nghiem Xuan
Duc Nghiem Xuan

πŸ’»
Francisco Lopes
Francisco Lopes

πŸ’»
daquexian
daquexian

πŸ’»
dependabot[bot]
dependabot[bot]

πŸ’»
greenkeeper[bot]
greenkeeper[bot]

πŸ’»
Chris Kipp
Chris Kipp

πŸ’»
Dmytro Meleshko
Dmytro Meleshko

πŸ’»
Kirill Bobyrev
Kirill Bobyrev

πŸ’»
Gontran Baerts
Gontran Baerts

πŸ’»
Andy
Andy

πŸ’»
Cheng JIANG
Cheng JIANG

πŸ’»
Corin
Corin

πŸ’»
Daniel Zhang
Daniel Zhang

πŸ’»
Ferdinand Bachmann
Ferdinand Bachmann

πŸ’»
Guangqing Chen
Guangqing Chen

πŸ’»
Jade Meskill
Jade Meskill

πŸ’»
Jasper Poppe
Jasper Poppe

πŸ’»
Jean Jordaan
Jean Jordaan

πŸ’»
Kid
Kid

πŸ’»
Pieter van Loon
Pieter van Loon

πŸ’»
Robert Liebowitz
Robert Liebowitz

πŸ’»
Seth Messer
Seth Messer

πŸ’»
UncleBill
UncleBill

πŸ’»
ZERO
ZERO

πŸ’»
fsouza
fsouza

πŸ’»
XiaoZhang
XiaoZhang

πŸ’»
whyreal
whyreal

πŸ’»
yehuohan
yehuohan

πŸ’»
バクダンくん
バクダンくん

πŸ’»
Raphael
Raphael

πŸ’»
tbodt
tbodt

πŸ’»
Aaron McDaid
Aaron McDaid

πŸ’»
Aasif Versi
Aasif Versi

πŸ’»
Abner Silva
Abner Silva

πŸ’»
Adam Stankiewicz
Adam Stankiewicz

πŸ’»
Adamansky Anton
Adamansky Anton

πŸ’»
Ahmed El Gabri
Ahmed El Gabri

πŸ’»
Alexandr Kondratev
Alexandr Kondratev

πŸ’»
Andrew Shim
Andrew Shim

πŸ’»
Andy Lindeman
Andy Lindeman

πŸ’»
Augustin
Augustin

πŸ’»
Bastien Orivel
Bastien Orivel

πŸ’»
Ben Lu
Ben Lu

πŸ’»
Ben
Ben

πŸ’»
Brendan Roy
Brendan Roy

πŸ’»
brianembry
brianembry

πŸ’»
br
br

πŸ’»
Cason Adams
Cason Adams

πŸ’»
Chang Y
Chang Y

πŸ’»
Chayoung You
Chayoung You

πŸ’»
Chen Lijun
Chen Lijun

πŸ’»
Chen Mulong
Chen Mulong

πŸ’»
Chris Weyl
Chris Weyl

πŸ’»
dezza
dezza

πŸ’»
Cody Allen
Cody Allen

πŸ’»
Damien Rajon
Damien Rajon

πŸ’»
Daniel Eriksson
Daniel Eriksson

πŸ’»
Daniel Jenson
Daniel Jenson

πŸ’»
David Mejorado
David Mejorado

πŸ’»
Deric Pang
Deric Pang

πŸ’»
Ding Tao
Ding Tao

πŸ’»
Doron Behar
Doron Behar

πŸ’»
Egor Kovetskiy
Egor Kovetskiy

πŸ’»
ElKowar
ElKowar

πŸ’»
Emeliov Dmitrii
Emeliov Dmitrii

πŸ’»
Fabian Becker
Fabian Becker

πŸ’»
FallenWarrior2k
FallenWarrior2k

πŸ’»
Fausto NΓΊΓ±ez Alberro
Fausto NΓΊΓ±ez Alberro

πŸ’»
Felipe Ramos
Felipe Ramos

πŸ’»
Fredrik Borg
Fredrik Borg

πŸ’»
Gavin Sim
Gavin Sim

πŸ’»
Gibson Fahnestock
Gibson Fahnestock

πŸ’»
Giovanni Giordano
Giovanni Giordano

πŸ’»
Gopal Adhikari
Gopal Adhikari

πŸ’»
Hanh Le
Hanh Le

πŸ’»
hedy
hedy

πŸ’»
Hendrik Lammers
Hendrik Lammers

πŸ’»
Henry Barreto
Henry Barreto

πŸ’»
Hugo
Hugo

πŸ’»
Jackie Li
Jackie Li

πŸ’»
Jakub Nowak
Jakub Nowak

πŸ’»
James Pickard
James Pickard

πŸ’»
Jia Sui
Jia Sui

πŸ’»
Ellie Hermaszewska
Ellie Hermaszewska

πŸ’»
Joel Bradshaw
Joel Bradshaw

πŸ’»
John Carlo Roberto
John Carlo Roberto

πŸ’»
Jonas Holst Damtoft
Jonas Holst Damtoft

πŸ’»
Jonathan Lehman
Jonathan Lehman

πŸ’»
Joosep Alviste
Joosep Alviste

πŸ’»
Josa Gesell
Josa Gesell

πŸ’»
Joshua Rubin
Joshua Rubin

πŸ’»
Julian Grinblat
Julian Grinblat

πŸ’»
Julian Valentin
Julian Valentin

πŸ’»
KabbAmine
KabbAmine

πŸ’»
Kay Gosho
Kay Gosho

πŸ’»
Kenny Huynh
Kenny Huynh

πŸ’»
Kevin Rambaud
Kevin Rambaud

πŸ’»
Kian Cross
Kian Cross

πŸ’»
Kristijan Husak
Kristijan Husak

πŸ’»
NullVoxPopuli
NullVoxPopuli

πŸ’»
Lasse Peters
Lasse Peters

πŸ’»
Noel Errenil
Noel Errenil

πŸ’»
LinArcX
LinArcX

πŸ’»
Liu-Cheng Xu
Liu-Cheng Xu

πŸ’»
Marc
Marc

πŸ’»
Marius Gawrisch
Marius Gawrisch

πŸ’»
Mark Hintz
Mark Hintz

πŸ’»
Mathieu Le Tiec
Mathieu Le Tiec

πŸ’»
Matt White
Matt White

πŸ’»
Matthew Evans
Matthew Evans

πŸ’»
Me1onRind
Me1onRind

πŸ’»
Qyriad
Qyriad

πŸ’»
Narcis B.
Narcis B.

πŸ’»
Neur1n
Neur1n

πŸ’»
Nicolas Dermine
Nicolas Dermine

πŸ’»
Noah
Noah

πŸ’»
PENG Rui
PENG Rui

πŸ’»
Paco
Paco

πŸ’»
Peng Guanwen
Peng Guanwen

πŸ’»
Petter Wahlman
Petter Wahlman

πŸ’»
Pooya Moradi
Pooya Moradi

πŸ’»
Quade Morrison
Quade Morrison

πŸ’»
Ralf Vogler
Ralf Vogler

πŸ’»
Ran Chen
Ran Chen

πŸ’»
Ricardo GarcΓ­a Vega
Ricardo GarcΓ­a Vega

πŸ’»
Rick Jones
Rick Jones

πŸ’»
Ryan Christian
Ryan Christian

πŸ’»
Salo
Salo

πŸ’»
Sam Nolan
Sam Nolan

πŸ’»
Saurav
Saurav

πŸ’»
Sean Mackesey
Sean Mackesey

πŸ’»
Sheel Patel
Sheel Patel

πŸ’»
Solomon Ng
Solomon Ng

πŸ’»
Sri Kadimisetty
Sri Kadimisetty

πŸ’»
Stephen Prater
Stephen Prater

πŸ’»
Sune Kibsgaard
Sune Kibsgaard

πŸ’»
Aquaakuma
Aquaakuma

πŸ’»
Takumi Kawase
Takumi Kawase

πŸ’»
The Blob SCP
The Blob SCP

πŸ’»
Tomasz N
Tomasz N

πŸ’»
Tomoyuki Harada
Tomoyuki Harada

πŸ’»
Tony Fettes
Tony Fettes

πŸ’»
Tony Narlock
Tony Narlock

πŸ’»
Tony Wang
Tony Wang

πŸ’»
Victor Quach
Victor Quach

πŸ’»
Whisperity
Whisperity

πŸ’»
William Turner
William Turner

πŸ’»
Xiaochao Dong
Xiaochao Dong

πŸ’»
Hugh Hou
Hugh Hou

πŸ’»
Jackie Li
Jackie Li

πŸ’»
Zachary Freed
Zachary Freed

πŸ’»
akiyosi
akiyosi

πŸ’»
alexjg
alexjg

πŸ’»
aste4
aste4

πŸ’»
clyfish
clyfish

πŸ’»
dev7ba
dev7ba

πŸ’»
diartyz
diartyz

πŸ’»
doza-daniel
doza-daniel

πŸ’»
equal-l2
equal-l2

πŸ’»
fong
fong

πŸ’»
hexh
hexh

πŸ’»
hhiraba
hhiraba

πŸ’»
ic-768
ic-768

πŸ’»
javiertury
javiertury

πŸ’»
karasu
karasu

πŸ’»
kevineato
kevineato

πŸ’»
Eduardo Costa
Eduardo Costa

πŸ’»
micchy326
micchy326

πŸ’»
midchildan
midchildan

πŸ’»
minefuto
minefuto

πŸ’»
miyanokomiya
miyanokomiya

πŸ’»
miyaviee
miyaviee

πŸ’»
monkoose
monkoose

πŸ’» πŸ›
mujx
mujx

πŸ’»
mvilim
mvilim

πŸ’»
naruaway
naruaway

πŸ’»
piersy
piersy

πŸ’»
ryantig
ryantig

πŸ’»
rydesun
rydesun

πŸ’»
sc00ter
sc00ter

πŸ’»
smhc
smhc

πŸ’»
Sam Kaplan
Sam Kaplan

πŸ’»
tasuten
tasuten

πŸ’»
todesking
todesking

πŸ’»
typicode
typicode

πŸ’»
李鸣飞
李鸣飞

πŸ’»
Ikko Ashimine
Ikko Ashimine

πŸ“–
Rammiah
Rammiah

πŸ›
Alisue
Alisue

πŸ›
bigshans
bigshans

πŸ“–
Robert Boyd III
Robert Boyd III

πŸ›
Yuki Iwanaga
Yuki Iwanaga

πŸ’»
SpringHack
SpringHack

πŸ›
Lucas Burns
Lucas Burns

πŸ“–
qiqiboy
qiqiboy

πŸ’»
timsu92
timsu92

πŸ“–
Shawn M Moore
Shawn M Moore

πŸ’»
Aaron U'Ren
Aaron U'Ren

πŸ›
SeniorMars
SeniorMars

πŸ“–
η‰§ηΎŠηŠ¬ηœŸQ
η‰§ηΎŠηŠ¬ηœŸQ

πŸ“–
geraldspreer
geraldspreer

πŸ“–
Fabio
Fabio

πŸ“–
Li Yunting
Li Yunting

πŸ›
Jeff L.
Jeff L.

πŸ’»
Elliot Winkler
Elliot Winkler

πŸ’»
Svetlozar Iliev
Svetlozar Iliev

πŸ’»
James Garbutt
James Garbutt

πŸ’»
Qingzhou Yue
Qingzhou Yue

πŸ’»
Maarten de Vries
Maarten de Vries

πŸ’»
A4-Tacks
A4-Tacks

πŸ’»
forceofsystem
forceofsystem

πŸ’»
lake
lake

πŸ’»
David O'Trakoun
David O'Trakoun

πŸ“–
aispeaking
aispeaking

πŸ’»
Christian Clauss
Christian Clauss

πŸ’»
Micah Halter
Micah Halter

πŸ’»
Cristiano De Michele
Cristiano De Michele

πŸ’»
Yong Jie
Yong Jie

πŸ’»
Kira Oakley
Kira Oakley

πŸ“–
Merouane Atig
Merouane Atig

πŸ“–
Gerald
Gerald

πŸ’»
Nicklas Sedlock
Nicklas Sedlock

πŸ’»
Adam Tao
Adam Tao

πŸ’»
itsf4llofstars
itsf4llofstars

πŸ“–
Brian Wo
Brian Wo

πŸ“–
Eric Wong
Eric Wong

πŸ’»
oxalica
oxalica

πŸ’»
Christian Zangl
Christian Zangl

πŸ’»
zoumi
zoumi

πŸ’»
atitcreate
atitcreate

πŸ’»

This project follows the all-contributors specification. Contributions of any kind are welcome!

License

MIT

About

Nodejs extension host for vim & neovim, load extensions like VSCode and host language servers.

Topics

Resources

Contributing

Stars

25.2k stars

Watchers

117 watching

Forks

Releases

Sponsor this project

Used by

Contributors

Languages