Posted: 2026-05-29
| Categories:
cheatsheet
| Tags:
cheatsheet ,
neovim ,
snacks
Snacks.nvim rafi/vim-config を LazyVim の現行寄りに使う前提の snacks.nvim チートシート。
<leader> は Space、<localleader> は ;。
起動キーは 2026-05-29 時点の手元環境で maparg() を見て確認したもの。
ファイラは lazyvim.plugins.extras.editor.snacks_explorer を有効にした Snacks Explorer を使う。
個人プラグイン側で Snacks Explorer を無効化する override は置かない。
起動 効果 キー picker 一覧 Space ;ファイル検索(root dir) Space Space, Space ffファイル検索(cwd) Space fFgit 管理ファイル検索 Space fgカーソル下の語でファイル検索 Space gf最近開いたファイル Space fr最近開いたファイル(cwd) Space fRgrep(root dir) Space /, Space sggrep(cwd) Space sGカーソル下/選択範囲を grep(root dir) Space swカーソル下/選択範囲を grep(cwd) Space sWbuffer 行検索 Space sbsearch and replace Space srpicker resume Space sRzoxide ;zspelling suggestion ;unotification history Space nscratch buffer toggle Space .scratch buffer 選択 Space SSnacks Explorer(root dir) ;e, Space e, Space feSnacks Explorer(cwd) ;E, Space E, Space fE現在ファイルを Explorer で reveal(root dir) ;a現在ファイルを Explorer で reveal(cwd) ;A
Picker 効果 キー 決定して開く Enterwindow を選んで開く Shift Enterキャンセル Esc, qhelp ?入力窓とリストの focus 切り替え /次/前へ移動 Ctrl j, Ctrl k, Ctrl n, Ctrl p, j, k下/上へスクロール Ctrl d, Ctrl upreview を下/上へスクロール Ctrl f, Ctrl bpreview を右/左へスクロール Ctrl l, Ctrl h複数選択して次/前へ Tab, Shift Tab全選択 Ctrl a, *quickfix へ送る Ctrl q, elocation list へ送る Esplit / vsplit / tab で開く Ctrl s, Ctrl v, Ctrl tsplit / vsplit / tab で開く(rafi 追加) sv, sg, sthidden files toggle Alt h, .ignored files toggle Alt i, ,preview toggle Alt pfollow mode toggle Alt flive grep toggle Ctrl gregex toggle Alt r最大化 toggle Alt mpicker window cycle Alt wflash jump ssinsert mode から抜ける jj選択して前/次へ進む K, J
files と grep source は hidden files を見る設定になっている。
そのため通常は dotfile も候補に出る。
ignored files は , または Alt i で切り替える。
Read more... 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... Posted: 2021-07-25
| Categories:
cli
| Tags:
cli ,
neovim ,
tmux ,
wezterm
背景 CLI関連のツール、tmux, w3m, weztermのキーバインドを揃えたい。ひとまずリストを出す。 ローカルのマシン(macOSなりLinuxなどのデスクトップ環境)ではWezTermとtmuxを用いている。
(以前はgnome-terminal, mltermを用いていたが、sixel対応と設定がluaで書ける点からWezTermを始めた)
将来的に下記の条件が成立したらgnome-terminal, mltermに戻るかも
tmuxのsixel対応が安定動作する macOS, Linuxの設定ファイルを共通にしたい(WezTermだとOSによってif文で設定を変えられる) tmuxもif-shellで振る舞いを分岐できるようになった 関連ページ 現在のキーバインド prefix WezTerm(tmux1) tmux2(ローカルで用いる) tmux3(リモートで用いる) ctrl + y ctrl + t ctrl + b
リモートサーバ上でtmuxを用いる場合はtmux3のprefixを使う。
ショートカット wezterm tmux neovim w3m 新しいウィンドウ(タブ)を作る c c tabnew Ctrl + T 現在のウィンドウ(タブ)を閉じる Ctrl + d でexit Ctrl + d でexit :wq Ctrl + Q ウィンドウ(タブ)を右に移動 n n gt } ウィンドウ(タブ)を左に移動 p p gT { ウィンドウ(タブ)のリスト Esc + t
設定が被らないように既存の設定を確認する 環境 表示方法 設定ファイル bash bind -P ~/.inputrc fish bind あるいは fish_key_reader ~/.config/fish/functions/fish_user_key_bindings.fish tmux prefix -> :list-keys ~/.config/tmux/tmux.conf w3m 起動中にHを押す ~/.w3m/keymap wezterm
Read more...