{...}: let mk = key: action: desc: { mode = "n"; inherit key action; options = { silent = true; inherit desc; }; }; mkRaw = key: raw: desc: { mode = "n"; key = key; action.__raw = raw; options = { silent = true; desc = desc; }; }; in { programs.nixvim.keymaps = [ # Search (mk "" "nohlsearch" "検索ハイライトを解除") # Screen line movement { mode = "n"; key = "j"; action.__raw = "function() return vim.v.count == 0 and 'gj' or 'j' end"; options = { silent = true; expr = true; desc = "下へ移動(画面行優先)"; }; } { mode = "n"; key = "k"; action.__raw = "function() return vim.v.count == 0 and 'gk' or 'k' end"; options = { silent = true; expr = true; desc = "上へ移動(画面行優先)"; }; } # LSP (mkRaw "K" "vim.lsp.buf.hover" "LSPエラーのホバー表示") (mk "gd" "Glance definitions" "定義へ移動") (mk "gr" "Glance references" "参照を表示") (mkRaw "rn" "vim.lsp.buf.rename" "シンボル名を一括変換") (mkRaw "cf" "function() require('conform').format({ timeout_ms = 1000, lsp_format = 'fallback' }) end" "コードをフォーマット") (mkRaw "ca" "function() vim.lsp.buf.code_action({ context = { diagnostics = vim.diagnostic.get(0, { lnum = vim.fn.line('.') - 1 }) } }) end" "コードアクション") # Diagnostics (mkRaw "]d" "vim.diagnostic.goto_next" "次のエラー") (mkRaw "[d" "vim.diagnostic.goto_prev" "前のエラー") (mkRaw "dl" "vim.diagnostic.open_float" "エラー詳細") # File tree (mk "e" "Neotree toggle left" "ファイルツリー") # Terminal (mk "tt" "ToggleTerm direction=float" "ターミナル") # Diagnostics list (mk "xx" "Trouble diagnostics toggle" "エラー一覧") # Window navigation (mk "" "h" "左のウィンドウへ") (mk "" "j" "下のウィンドウへ") (mk "" "k" "上のウィンドウへ") (mk "" "l" "右のウィンドウへ") # Buffer Bar (mk "[b" "BufferPrevious" "前のバッファーに移動") (mk "]b" "BufferNext" "後のバッファーに移動") (mk "bc" "BufferClose" "バッファーを削除") # Git Conflict (mk "gco" "GitConflictChooseOurs" "現在のブランチを選択") (mk "gct" "GitConflictChooseTheirs" "相手のブランチを選択") (mk "gcb" "GitConflictChooseBoth" "両方を選択") (mk "gcx" "GitConflictListQf" "コンフリクト一覧") (mk "]x" "GitConflictNextConflict" "次のコンフリクト") (mk "[x" "GitConflictPrevConflict" "前のコンフリクト") # Git (mk "gl" "LazyGit" "LazyGitを開く") (mk "gd" "DiffviewOpen" "差分を開く") (mk "gH" "DiffviewFileHistory" "リポジトリ履歴") (mk "gh" "DiffviewFileHistory %" "ファイル履歴") (mk "gq" "DiffviewClose" "差分を閉じる") # Markview (mk "mp" "Markview splitToggle" "Markdownプレビュー") # Zen Mode (mk "zz" "ZenMode" "Zen Modeを開く/閉じる") # UFO (folding) (mkRaw "zR" "require('ufo').openAllFolds" "全て展開") (mkRaw "zM" "require('ufo').closeAllFolds" "全て折りたたむ") # Dropbar (mkRaw "dp" "function() require('dropbar.api').pick() end" "dropbarでナビゲート") # Snacks (mkRaw "sd" "function() Snacks.dim.toggle() end" "Dimモードをトグル") # Flash (mkRaw "s" "function() require('flash').jump() end" "Flashジャンプ") (mkRaw "S" "function() require('flash').treesitter() end" "Flashツリーシッタ選択") # Todo Comments (mk "]t" "TodoNext" "次のTODO") (mk "[t" "TodoPrev" "前のTODO") (mkRaw "ft" "function() Snacks.picker.todo_comments() end" "TODO一覧") # Spectre (mkRaw "sr" "function() require('spectre').toggle() end" "検索・置換") # Snacks Picker (mkRaw "ff" "function() Snacks.picker.files() end" "ファイルを探す") (mkRaw "fg" "function() Snacks.picker.grep() end" "文字列を全文検索") (mkRaw "fb" "function() Snacks.picker.buffers() end" "開いているバッファを探す") (mkRaw "fh" "function() Snacks.picker.help() end" "ヘルプ項目を探す") (mkRaw "fk" "function() Snacks.picker.keymaps() end" "キーマップを探す") (mkRaw "fc" "function() Snacks.picker.commands() end" "コマンドを探す") ]; }