Posted: 2025-04-12
| Categories:
neovim
| Tags:
neovim ,
vim-neon-dark
発生したエラー Error in decoration provider treesitter/highlighter.line:
Error executing lua: .../vim-neon-dark/lua/vim-neon-dark.lua:55: attempt to call field 'get_node_text' (a nil value)
Tree-sitter のハイライト系統の内部で、vim-neon-dark テーマの Lua コードから get_node_text を呼び出していることが原因でした。
検証ログ Neovim のバージョン
nvim --version
NVIM v0.10.5-dev-22+g0c995c0efb
vim.treesitter.get_node_text が実行時に nil か確認
:lua print(vim.inspect(vim.treesitter.get_node_text))
結果:
→ Neovim 側に関数は存在する
ldd で Tree-sitter が外部ライブラリか確認
ldd $(which nvim) | grep tree-sitter
結果: 空。→ Neovim 側に静的リンクされていると分かる
原因 vim-neon-dark の Lua コード内で vim.treesitter.query.get_node_text() を呼び出している これは Neovim 0.10 以上では存在しない (deprecated) vim.treesitter.get_node_text() を使ってみた 対処 エラーの起点
Read more... Posted: 2025-04-10
| Categories:
neovim
| Tags:
mcphub ,
neovim
mcphub.nvimのメモ 2025年はAI IDEが流行っている。VSCodeのAI IDEは有名だが、neovimでもMCPを使うことができる。
インストール 使い方 エラー対応 npm ERR! code EACCES パーミッションのエラーが出る
npm ERR! code EACCES
npm ERR! syscall rename
npm ERR! path /usr/local/bin/mcp-hub
npm ERR! dest /usr/local/bin/.mcp-hub-eluhfCZx
npm ERR! Error: EACCES: permission denied, rename '/usr/local/bin/mcp-hub' -> '/usr/local/bin/.mcp-hub-eluhfCZx'
/usr/local/bin/mcp-hub を書き換え(rename)ようとしたが 現在のユーザーには /usr/local/bin/ を操作する権限がなかった ために、Permission denied (EACCES) エラーになっています。 一旦、rootになって下記のようにmcp-hubを再インストールする
sudo npm install -g mcp-hub
まだ未検証だが、下記のようにインストールパスを変更する事も可能かも
mkdir -p ~/.npm-global
npm config set prefix '~/.npm-global'
# パスを通す(これを ~/.bashrc や ~/.zshrc などにも追記すると良い)
export PATH="$HOME/.npm-global/bin:$PATH"
不安定だな たまに起動しない時がある
ただ、これは私がコンテナ環境でnvimを実行しているのもありそう。だがログとして残す
Read more... Posted: 2025-03-10
| Categories:
neovim
| Tags:
avante ,
neovim
avante.neovimのメモ 2025年はAI IDEが流行っている。VSCodeのAI IDEは有名だが、neovimでもAI IDEを行うことができる。そのために、avante.neovimを使う。
インストール avante.nvimのオフィシャルサイト の手順に従ってインストールする。
ここにあるように 設定を入れる
私はrafiのnvim設定を用いている ので ~/.config/nvim/lua/plugins/avante.lua を作成して、冒頭に return を追記して動作した
現在は ~/.config/nvim/lua/plugins/avante.lua に設定を置いている。
provider は gemini、input provider は snacks にしている。
Avante は Lua 部分だけでなく avante_templates、avante_tokenizers、avante_repo_map、avante_html2md などの native module も使う。
そのため、プラグインがロードできるだけでは十分ではなく、build/*.so があるかまで確認する。
make -C ~/.local/share/nvim/lazy/avante.nvim
2026-05-29 に確認した時点では、build 前は require("avante") は通るが native module が読めない状態だった。
make 実行後、次が作られた。
~/.local/share/nvim/lazy/avante.nvim/build/avante_html2md.so
~/.local/share/nvim/lazy/avante.nvim/build/avante_repo_map.so
~/.local/share/nvim/lazy/avante.nvim/build/avante_templates.so
~/.local/share/nvim/lazy/avante.nvim/build/avante_tokenizers.so
テスト Neovim の plugin 設定は、実 UI を開く前に headless で最低限テストする。
nvim --headless '+lua local lazy=require("lazy"); local C=require("lazy.core.config"); local p=C.plugins["avante.nvim"]; print("avante_spec=" .. tostring(p ~= nil)); if p then print("avante_enabled=" .. tostring(p.enabled ~= false)); print("avante_lazy=" .. tostring(p.lazy)); end; lazy.load({ plugins = { "avante.nvim" }, wait = true }); local ok, avante = pcall(require, "avante"); print("avante_require=" .. tostring(ok)); if not ok then print("avante_error=" .. tostring(avante)); end; print("AvanteAsk_cmd=" .. tostring(vim.fn.exists(":AvanteAsk"))); local opts = LazyVim.opts("avante.nvim"); print("avante_provider=" .. tostring(opts.provider)); print("avante_input_provider=" .. tostring(opts.input and opts.input.provider)); vim.cmd("qa")'
期待値は次の通り。
Read more... Posted: 2025-03-10
| Categories:
neovim
| Tags:
golang ,
neovim ,
nvim-dap
この記事では、Neovim で Golang のデバッグ環境を構築する手順について紹介します。
具体的には、Delve を利用した nvim-dap の設定や、動的に CLI 引数を入力する方法、さらに視覚的にデバッグ情報を表示する nvim-dap-ui の導入方法について解説します。
必要なツールと前提条件 Neovim: v0.10.5 Go: Go の実行環境および go.mod で管理されたプロジェクトが必要です。 Delve: Golang 用デバッガである Delve をインストールしてください。go install github.com/go-delve/delve/cmd/dlv@latest LazyVim / lazy.nvimNeovim の設定管理ツールとして LazyVim を使用しています。 プラグイン nvim-dap の基本設定 まずは、nvim-dap を LazyVim の仕組みを利用して設定します。
以下のサンプル設定では、Go 用のアダプタとして Delve を利用し、単一ファイル実行と動的な CLI 引数入力の2種類のデバッグ構成を用意しています。
-- ~/.config/nvim/lua/plugins/nvim-dap.lua
return {
"mfussenegger/nvim-dap" ,
event = "VeryLazy" , -- lazy.nvim の遅延読み込みイベント
config = function ()
local dap = require( "dap" )
-- Go 用のアダプタ設定(Delve を利用)
dap.adapters. go = {
type = "executable" ,
command = "dlv" ,
args = { "dap" },
}
-- デバッグ構成の定義
dap.configurations. go = {
{
type = "go" ,
name = "Launch file" ,
request = "launch" ,
program = "${file}" ,
cwd = "${workspaceFolder}" ,
},
{
type = "go" ,
name = "Launch file (with arguments)" ,
request = "launch" ,
program = "${file}" ,
cwd = "${workspaceFolder}" ,
args = function ()
local input = vim.fn. input( "Enter CLI arguments: " )
return vim.split( input, " " , { trimempty = true })
end ,
},
{
type = "go" ,
name = "Launch package (with arguments)" ,
request = "launch" ,
program = "${workspaceFolder}" , -- パッケージ全体をビルド対象にする
cwd = "${workspaceFolder}" ,
args = function ()
local input = vim.fn. input( "Enter CLI arguments: " )
return vim.split( input, " " , { trimempty = true })
end ,
},
{
type = "go" ,
name = "Debug tests" ,
request = "launch" ,
mode = "test" ,
program = "${file}" ,
},
}
-- キーマッピングの設定例
vim.keymap. set( "n" , "<leader>db" , dap.toggle_breakpoint, { desc = "Toggle Breakpoint" })
vim.keymap. set( "n" , "<leader>dc" , dap.continue, { desc = "Start Debugging" })
vim.keymap. set( "n" , "<leader>di" , dap.step_into, { desc = "Step Into" })
vim.keymap. set( "n" , "<leader>do" , dap.step_over, { desc = "Step Over" })
vim.keymap. set( "n" , "<leader>dO" , dap.step_out, { desc = "Step Out" })
end ,
}
ポイント program と cwd の設定単一ファイルの場合は ${file}、複数ファイルを含むパッケージの場合は ${workspaceFolder} を指定します。 動的 CLI 引数入力args を関数にして、デバッグ開始時にユーザーから CLI 引数を入力させるようにしています。 nvim-dap-ui の導入と設定 続いて、視覚的にデバッグ情報を表示するために nvim-dap-ui を設定します。
nvim-dap-ui は nvim-dap に依存するため、LazyVim の設定では dependencies を指定しておきます。
Read more... Posted: 2025-03-10
| Categories:
neovim
| Tags:
golang ,
neotest ,
neovim
この記事では、Neovim で Golang のテストを実行するまでの手順を紹介します
必要なツールと前提条件 Neovim: v0.10.5 Go: Go の実行環境および go.mod で管理されたプロジェクトが必要です。 LazyVim / lazy.nvimNeovim の設定管理ツールとして LazyVim を使用しています。 プラグイン neotest の基本設定 私はrafi/vim-config を利用しています。
“extras” plugins として lazyvim.plugins.extras.test.core がリストの中にありました。
:LazyExtras でLazyVimのメニューを出し、testで検索、xで有効、neovimの再起動でインストールされました。
neotest 使い方 <leader> t でテスト関連のメニューが開き
t テストファイルを開いた状態で実行すると、そのテストファイルの内容が実行される T と押すと全てのテストが実行 まずは、nvim-dap を LazyVim の仕組みを利用して設定します。
以下のサンプル設定では、Go 用のアダプタとして Delve を利用し、単一ファイル実行と動的な CLI 引数入力の2種類のデバッグ構成を用意しています。
-- ~/.config/nvim/lua/plugins/nvim-dap.lua
return {
"mfussenegger/nvim-dap" ,
event = "VeryLazy" , -- lazy.nvim の遅延読み込みイベント
config = function ()
local dap = require( "dap" )
-- Go 用のアダプタ設定(Delve を利用)
dap.adapters. go = {
type = "executable" ,
command = "dlv" ,
args = { "dap" },
}
-- デバッグ構成の定義
dap.configurations. go = {
{
type = "go" ,
name = "Launch file" ,
request = "launch" ,
program = "${file}" ,
cwd = "${workspaceFolder}" ,
},
{
type = "go" ,
name = "Launch file (with arguments)" ,
request = "launch" ,
program = "${file}" ,
cwd = "${workspaceFolder}" ,
args = function ()
local input = vim.fn. input( "Enter CLI arguments: " )
return vim.split( input, " " , { trimempty = true })
end ,
},
{
type = "go" ,
name = "Launch package (with arguments)" ,
request = "launch" ,
program = "${workspaceFolder}" , -- パッケージ全体をビルド対象にする
cwd = "${workspaceFolder}" ,
args = function ()
local input = vim.fn. input( "Enter CLI arguments: " )
return vim.split( input, " " , { trimempty = true })
end ,
},
{
type = "go" ,
name = "Debug tests" ,
request = "launch" ,
mode = "test" ,
program = "${file}" ,
},
}
-- キーマッピングの設定例
vim.keymap. set( "n" , "<leader>db" , dap.toggle_breakpoint, { desc = "Toggle Breakpoint" })
vim.keymap. set( "n" , "<leader>dc" , dap.continue, { desc = "Start Debugging" })
vim.keymap. set( "n" , "<leader>di" , dap.step_into, { desc = "Step Into" })
vim.keymap. set( "n" , "<leader>do" , dap.step_over, { desc = "Step Over" })
vim.keymap. set( "n" , "<leader>dO" , dap.step_out, { desc = "Step Out" })
end ,
}
ポイント program と cwd の設定単一ファイルの場合は ${file}、複数ファイルを含むパッケージの場合は ${workspaceFolder} を指定します。 動的 CLI 引数入力args を関数にして、デバッグ開始時にユーザーから CLI 引数を入力させるようにしています。 nvim-dap-ui の導入と設定 続いて、視覚的にデバッグ情報を表示するために nvim-dap-ui を設定します。
nvim-dap-ui は nvim-dap に依存するため、LazyVim の設定では dependencies を指定しておきます。
Read more...