TL;DR
DAP(Debug Adapter Protocol)の力を借りれば、Neovim上でも視覚的にGoのデバッグが出来ました。
ここでは下記については話しません。
- DAPの詳細
- packer.nvimでのインストール方法
- vscode-goのdebugAdapter.jsの使用方法
Neovimでデバッグするモチベーション
v0.2.2から色々変わったNeovimを久々に触ってみようかと思いinit.luaへ以降して遊んでいました。 起動が早いだけでなく、LSP系の動作もサクサク動いてここ2ヶ月程快適に過ごしています。
ただ、VSCodeでのデバッグ機能がとても便利なため、デバッガ使用時のみこの快適な環境を離れていました。
どうにかNeovim上で完結させられないか…。
DAP
DAPの説明はリンク先や他HPをご参照ください。
イメージを持ってもらうためLSPを引き合いに出すと、LSPがテキスト編集時に定義や変更内容や補完候補等を返すのに対して、DAPはデバッガとやりとりしてデバッグ情報を返す位のイメージを持ってもらえれば大丈夫だと思います。
Neovim + DAP + Go
使うプラグインは下記になります。
- mfussenegger/nvim-dap : NeovimのDAPクライアント。VSCodeのlaunch.jsonも使用可
- rcarriga/nvim-dap-ui : nvim-dapを視覚的に操作しやすいUI
- leoluz/nvim-dap-go : DAPのGo用設定(delve dap起動)
- nvim-treesitter/nvim-treesitter nvim-dap-goでテストをデバッグする際、近くのテストを見つけるのに必要
packer.nvimの設定
VSCodeのlaunch.jsonを使用しない場合、require('dap.ext.vscode').load_launchjs()
は不要です。
launch.jsonを読み込めた場合、デバッグ方法の選択時にlaunch.jsonの内容が追加表示されて選択可能になります。
|
|
GoでDAPを起動する際の設定
Goの場合、vscode-goのdebugAdapter.jsを使用することも出来ます。ここでは、delveを待ち構えさせます。
|
|
デバッグの起動設定
VSCodeのlaunch.jsonに該当する設定になります。デバッグされるプログラム起動方法になります。
VSCode同様、relativeFileDirname
やworkspaceFolder
等変数が用意されています。詳細は:h dap.txt
を参照してください。
|
|
最後にVSCode風のキーマップです。
|
|
まとめ
上記設定は、各プラグインのREADMEやWikiに書いてある設定とほぼ同じです。
あまり小難しい設定することなく動きますし、READMEやWikiが充実しているので試してみてはいかがでしょうか。
それではよきVim/Neovimライフを。