Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

neovimでのLSP関連機能の設定 #27

Open
fs-yuta-nakamura opened this issue Dec 16, 2021 · 6 comments
Open

neovimでのLSP関連機能の設定 #27

fs-yuta-nakamura opened this issue Dec 16, 2021 · 6 comments

Comments

@fs-yuta-nakamura
Copy link
Collaborator

fs-yuta-nakamura commented Dec 16, 2021

やりたいこと

neovimでLSPが使いたい。

やりたいこと

  • 補完
  • ホバー
  • go to definition
  • go to declaration
  • type Defitinon
  • 簡単にクライアントのインストールができる

参考

LSPの公式ページ

@bonyuta0204
Copy link
Owner

bonyuta0204 commented Dec 16, 2021

実現方法

必要なライブラリ

  • LSP client
  • 補完ライブラリ

選択肢

LSP clinent

  • neovim純正
  • coc.nvim
    → 純正使いたいのでbuit inを採用

補完ライブラリ

  • nvim-cmp ← 公式のオススメ
  • coq_nvim ← 設定が楽そう
    → スター数多いのと拡張性高そうなので、nvim-cmpを採用

@bonyuta0204
Copy link
Owner

現状整理

補完

  • deopleteを使ってるっぽい

@bonyuta0204
Copy link
Owner

bonyuta0204 commented Dec 16, 2021

neovimのbuilt-in lspの利用

必要ライブラリのインストール

nvim-lsp は組み込みではあるものの、そのままだと扱いづらいため実質必須となるプラグインがあります。

nvim-lspconfig (https://github.com/neovim/nvim-lspconfig)
nvim-lsp-installer (https://github.com/williamboman/nvim-lsp-installer)

neovim built-in lspの設定方法

以下のドキュメントに倣って設定した
https://github.com/neovim/nvim-lspconfig

vim-lsp-installer

LSPのインストールを簡単の行うためのプラグイン

こちらを参考に設定

vim-lsp-installerを利用してインストールを行ったlspのサーバーは、
vimrcで個別の設定を書く必要がない。

原則、新規のLSPサーバーは、全てvim-lsp-installer経由で行うようにする

@bonyuta0204
Copy link
Owner

キーバインディング

以下のキーバインディングでLSPの機能を利用できる状態にした

dotfiles/rc/vimrc

Lines 284 to 302 in f7d8f18

-- See `:help vim.lsp.*` for documentation on any of the below functions
buf_set_keymap('n', 'gD', '<cmd>lua vim.lsp.buf.declaration()<CR>', opts)
buf_set_keymap('n', 'gd', '<cmd>lua vim.lsp.buf.definition()<CR>', opts)
buf_set_keymap('n', 'K', '<cmd>lua vim.lsp.buf.hover()<CR>', opts)
buf_set_keymap('n', 'gi', '<cmd>lua vim.lsp.buf.implementation()<CR>', opts)
buf_set_keymap('n', '<C-k>', '<cmd>lua vim.lsp.buf.signature_help()<CR>', opts)
buf_set_keymap('n', '<space>wa', '<cmd>lua vim.lsp.buf.add_workspace_folder()<CR>', opts)
buf_set_keymap('n', '<space>wr', '<cmd>lua vim.lsp.buf.remove_workspace_folder()<CR>', opts)
buf_set_keymap('n', '<space>wl', '<cmd>lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))<CR>', opts)
buf_set_keymap('n', '<space>D', '<cmd>lua vim.lsp.buf.type_definition()<CR>', opts)
buf_set_keymap('n', '<space>rn', '<cmd>lua vim.lsp.buf.rename()<CR>', opts)
buf_set_keymap('n', '<space>ca', '<cmd>lua vim.lsp.buf.code_action()<CR>', opts)
buf_set_keymap('n', 'gr', '<cmd>lua vim.lsp.buf.references()<CR>', opts)
buf_set_keymap('n', '<space>e', '<cmd>lua vim.diagnostic.open_float()<CR>', opts)
buf_set_keymap('n', '[d', '<cmd>lua vim.diagnostic.goto_prev()<CR>', opts)
buf_set_keymap('n', ']d', '<cmd>lua vim.diagnostic.goto_next()<CR>', opts)
buf_set_keymap('n', '<space>q', '<cmd>lua vim.diagnostic.setloclist()<CR>', opts)
buf_set_keymap('n', '<space>f', '<cmd>lua vim.lsp.buf.formatting()<CR>', opts)

@bonyuta0204
Copy link
Owner

bonyuta0204 commented Dec 16, 2021

nvim-cmp の導入

公式ドキュメントに合わせて設定

@bonyuta0204
Copy link
Owner

TODO

LspInstallでのLSPのインストールをスクリプトにかけていないので、手動でインストールする必要がある

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants