coc.nvim NeoVimにコード補完機能を追加

NeoVimロゴ

dcc.vim の設定からの続きになります。

coc.nvim

Pythonなど、プログラミング言語等の構文解析・構文ハイライト・静的エラーチェック・リファレンス参照・入力補完などの機能を使いたいので、coc.nvim を設定します。

Nodejsが必要

coc.nvim のためにNodejsが必要ということで、インストールしました。

とりあえずaptのデフォルトで入るバージョンよりは新しくしたかったので以下を実行しました。Node18をインストールしています。

curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash - &&\
sudo apt-get install -y nodejs

coc.nvimのインストール

パッケージマネージャー(Dein)で追加するスタイルなので、dein.toml に記述していきます。

私の dein.toml ファイルの coc.nvim の設定はこちらから拝借いたしました。ありがとうございます。

coc.nvimは必要になった時に機能追加するスタイルですが、初めのうちは特に何が何だか訳解からなかったので
複数言語の補完機能をインストールと同時に設定すれば、後が楽になって良いと思います。

( dein.toml )

[[plugins]]
repo = 'neoclide/coc.nvim'
rev = 'release'
hook_add = '''
  let g:coc_global_extensions = [
    \'@yaegassy/coc-volar',
    \'coc-css',
    \'coc-docker',
    \'coc-eslint',
    \'coc-git',
    \'coc-html',
    \'coc-json',
    \'coc-lua',
    \'coc-markdownlint',
    \'coc-phpls',
    \'coc-prettier',
    \'coc-sql',
    \'coc-sumneko-lua',
    \'coc-toml',
    \'coc-tsserver',
    \'coc-vimlsp',
    \'coc-jedi',
    \'coc-diagnostic',
  \]
  inoremap <silent><expr> <c-space> coc#refresh()
  inoremap <silent><expr> <tab> pumvisible() ? coc#_select_confirm()
                              \: "\<C-g>u\<CR>\<c-r>=coc#on_enter()\<CR>"
  nmap <silent> gd <Plug>(coc-definition)
  nmap <silent> <C-w>gd <cmd>vs<cr><Plug>(coc-definition)
  nmap <silent> gy <Plug>(coc-type-definition)
  nmap <silent> gi <Plug>(coc-implementation)
  nmap <silent> gF <Plug>(coc-references)
  nmap <f2> <Plug>(coc-rename)
  nmap <silent> [g <Plug>(coc-diagnostic-prev)
  nmap <silent> ]g <Plug>(coc-diagnostic-next)
  nmap <esc><esc> <cmd>call coc#float#close_all()<cr>
  " Find symbol of current document.
  nnoremap <silent><nowait> <leader>o  :<C-u>CocList outline<cr>
  " Search workspace symbols.
  nnoremap <silent><nowait> <leader>s  :<C-u>CocList -I symbols<cr>
  nnoremap <silent> gh :call <SID>show_documentation()<CR>
  nnoremap <silent> <leader>a <cmd>CocAction<cr>
  function! s:show_documentation()
    if (index(['vim','help'], &filetype) >= 0)
      execute 'h '.expand('<cword>')
    elseif (coc#rpc#ready())
      call CocActionAsync('doHover')
    else
      execute '!' . &keywordprg . " " . expand('<cword>')
    endif
  endfunction
  " higlight when hover cursor
  autocmd CursorHold * silent call CocActionAsync('highlight')
'''

NeoVimを再起動で、インストールが反映されます。

これでコード補完機能が追加されました。

この設定も含め、私のNeoVimの設定ファイルをGitHubに置きました。

調べたこと

  • 必要に応じて追加(追記)していくスタイル
  • coc.nvim自体はパッケージマネージャーで追加する
  • coc.nvimで各種言語の補完機能等を追加する
  • LSPをフルサポートしたプラグイン

LSP Language Server Protocol

プログラミング言語の構文解析・構文ハイライト・静的エラーチェック・リファレンス参照・入力補完といった機能を持つ。

ripgrep

Error on “..”: spawn rg ENOENTと出る場合は ripgrep のインストールが必要でした。snap使いました。

sudo snap install ripgrep --classic

以上になります。またお会いしましょう

鹿児島県の出水市という所に住んでいまして、インターネット周辺で色々活動して行きたいと思ってるところです。 Webサイト作ったり、サーバ設定したり、プログラムしたりしている、釣りと木工好きなMacユーザです。 今はデータサイエンスに興味を持って競馬AI予想を頑張ってます。

1件のコメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください