😁
Neovim に dcc.nvim を導入する
環境
- Windows 11
- Neovim v0.10.4
方針
パッケージマネージャー
- Lazy.nvim
LSP関連
- vim-lsp // Vim, Neovim 用の LSP プラグイン
- vim-lsp-settings // vim-lsp の設定を自動でできるプラグイン
Deno関連 (dccがdenoに依存しているため)
- Deno
- denops.vim
dcc関連
- dcc.vim
- ddc-ui-native // UI
- ddc-source-around // バッファの中のアイテムを集める source
- ddc-source-vim-lsp // lsp 用の source。vim-lsp以外も対応しているらしい。
- ddc-fuzzy // 曖昧な filter
- ddc-filter-matcher_head // 文字列の頭による filter
- ddc-filter-sorter_rank // 入力・挿入した文字列を優先的に並び替えてくれる filter
個別の設定
-
vim-lsp, vim-lsp-settings
https://github.com/prabirshrestha/vim-lsp
https://github.com/mattn/vim-lsp-settingsvim-lsp.luareturn { {'prabirshrestha/vim-lsp'}, {'mattn/vim-lsp-settings'}, }
自動補完をしたいファイル、例えば .html とか .tex のファイルを開いて、
:LspInstallServer
をすると LSP サーバをインストールできる。今回の記事に関係ないけど init.lua に追加した LSP の設定
定義へジャンプなどのショートカットなどです。
vim.cmd[[ nmap gd :LspDefinition<Enter> nmap gr :LspReferences<Enter> nmap gt :LspTypeDefinition<Enter> nmap rn :LspRename<Enter> nmap K :LspHover<Enter> nmap [g :LspPreviousDiagnostic<Enter> nmap ]g :LspNextDiagnostic<Enter> ]]
-
Deno
https://deno.land/Windows PowerShelliwr https://deno.land/x/install/install.ps1 -useb | iex
-
denops.vim
https://github.com/vim-denops/denops.vimdenops.luareturn { { 'vim-denops/denops.vim', }, { 'vim-denops/denops-helloworld.vim', config = function() vim.g.denops_deno = "C:/Users/名前/.deno/bin/deno.exe" end, }, }
- dcc関連
https://github.com/Shougo/ddc.vim
https://github.com/vim-denops/denops.vim
https://github.com/Shougo/ddc-ui-native
https://github.com/Shougo/ddc-source-around
https://github.com/shun/ddc-source-vim-lsp
https://github.com/tani/ddc-fuzzy/tree/main
https://github.com/Shougo/ddc-filter-matcher_head
https://github.com/Shougo/ddc-filter-sorter_rank
dcc.vim の使用方法については作者の Shougo さんがご自身の記事で分かりやすく説明してくださっています。ddc.luareturn { { 'Shougo/ddc.vim', dependencies = { 'vim-denops/denops.vim', 'Shougo/ddc-ui-native', 'Shougo/ddc-source-around', 'shun/ddc-source-vim-lsp', 'tani/ddc-fuzzy', 'Shougo/ddc-filter-matcher_head', 'Shougo/ddc-filter-sorter_rank', }, config = function() vim.fn["ddc#custom#patch_global"]('ui', 'native') vim.fn["ddc#custom#patch_global"]('sources', {'vim-lsp', 'around'}) vim.fn["ddc#custom#patch_global"]('sourceOptions', { ['vim-lsp'] = { mark = "[LSP]", matchers = {'matcher_head'}, }, _ = { matchers = {'matcher_fuzzy'}, sorters = {'sorter_rank'}, ignoreCase = true, minAutoCompleteLength = 2, mark = '[A]', }, }) vim.fn["ddc#enable"]() end, } }
動作確認
- Tex -> OK!
- C -> OK!
- C++ -> clangd のバージョンが古かったことによりエラーとなった
https://github.com/clangd/clangd/releases/tag/19.1.2 より最新版をダウンロードし、C:\Users\名前\AppData\Local\vim-lsp-settings\servers\clangd
の中にあるclangd.exe
を入れ替えることにより解決。
- Lua -> エラーになる。原因不明。未解決。
Discussion