{ programs.nixvim.keymaps = [ # clipboard - OSC52 yank and paste { mode = ["n" "v"]; key = "y"; action = ''"+y''; options.desc = "Yank to system clipboard (OSC52)"; } # e - explore/edit { mode = "n"; key = "ef"; action = ":lua require('oil').open()"; options.desc = "File directory"; } { mode = "n"; key = "er"; action = ":lua require('grug-far').open()"; options.desc = "Search and replace"; } # f - find { mode = "n"; key = "f/"; action = ":Pick history scope='/'"; options.desc = "'/' history"; } { mode = "n"; key = "f:"; action = ":Pick history scope=':'"; options.desc = "':' history"; } { mode = "n"; key = "fa"; action = ":Pick git_hunks scope='staged'"; options.desc = "Added hunks (all)"; } { mode = "n"; key = "fA"; action = ":Pick git_hunks path='%' scope='staged'"; options.desc = "Added hunks (buffer)"; } { mode = "n"; key = "fb"; action = ":Pick buffers"; options.desc = "Buffers"; } { mode = "n"; key = "fd"; action = ":Pick diagnostic scope='all'"; options.desc = "Diagnostic (workspace)"; } { mode = "n"; key = "fD"; action = ":Pick diagnostic scope='current'"; options.desc = "Diagnostic (buffer)"; } { mode = "n"; key = "ff"; action = ":Pick files"; options.desc = "Search files"; } { mode = "n"; key = "fg"; action = ":Pick grep_live"; options.desc = "Grep"; } { mode = "n"; key = "fm"; action = ":Pick git_hunks"; options.desc = "Modified hunks (all)"; } { mode = "n"; key = "fM"; action = ":Pick git_hunks path='%'"; options.desc = "Modified hunks (buffer)"; } { mode = "n"; key = "fr"; action = ":Pick lsp scope='references'"; options.desc = "References (LSP)"; } { mode = "n"; key = "fs"; action = ":Pick lsp scope='workspace_symbol'"; options.desc = "Symbols (LSP, workspace)"; } { mode = "n"; key = "fS"; action = ":Pick lsp scope='document_symbol'"; options.desc = "Symbols (LSP, buffer)"; } { mode = "n"; key = "fv"; action = ":Pick visit_paths cwd=\"\""; options.desc = "Visit paths (all)"; } { mode = "n"; key = "fV"; action = ":Pick visit_paths"; options.desc = "Visit paths (cwd)"; } # v - vcs { mode = "n"; key = "va"; action = ":J annotate"; options.desc = "Annotate (blame)"; } { mode = "n"; key = "vc"; action = ":JJDiffConflicts"; options.desc = "Resolve conflicts"; } { mode = "n"; key = "vd"; action.__raw = '' function() require('jj.cmd').diff() end ''; options.desc = "Diff (current file)"; } { mode = "n"; key = "vD"; action.__raw = '' function() require('jj.diff').show_revision({}) end ''; options.desc = "Diff (all changes)"; } { mode = "n"; key = "ve"; action.__raw = '' function() require('jj.cmd').describe() end ''; options.desc = "Describe (edit message)"; } { mode = "n"; key = "vf"; action = ":J fetch"; options.desc = "Fetch"; } { mode = "n"; key = "vv"; action.__raw = '' function() require('toggleterm.terminal').Terminal:new({ cmd = 'jjui', direction = 'float' }):toggle() end ''; options.desc = "jjui"; } { mode = "n"; key = "vh"; action.__raw = '' function() require('jj.diff').show_revision({ rev = '@-' }) end ''; options.desc = "Diff parent revision"; } { mode = "n"; key = "vl"; action.__raw = '' function() require('jj.cmd').log() end ''; options.desc = "Log"; } { mode = "n"; key = "vn"; action.__raw = '' function() require('jj.cmd').new() end ''; options.desc = "New change"; } { mode = "n"; key = "vp"; action = ":J git push"; options.desc = "Push"; } { mode = "n"; key = "vq"; action = ":DiffviewClose"; options.desc = "Close diffview"; } { mode = "n"; key = "vR"; action.__raw = '' function() require('jj.diff').diff_revisions({ left = 'trunk()', right = '@' }) end ''; options.desc = "Review bookmark (trunk..@)"; } { mode = "n"; key = "vs"; action.__raw = '' function() require('jj.cmd').status() end ''; options.desc = "Status"; } # r - review { mode = ["n" "v"]; key = "rc"; action = ":CodeReviewComment"; options.desc = "Add comment"; } { mode = "n"; key = "rd"; action = ":CodeReviewDeleteComment"; options.desc = "Delete comment"; } { mode = "n"; key = "rl"; action = ":CodeReviewList"; options.desc = "List comments"; } { mode = "n"; key = "ro"; action = ":CodeReviewResolve"; options.desc = "Resolve thread"; } { mode = "n"; key = "rp"; action = ":CodeReviewPreview"; options.desc = "Preview review"; } { mode = "n"; key = "rr"; action = ":CodeReviewReply"; options.desc = "Reply to comment"; } { mode = "n"; key = "rs"; action = ":CodeReviewShowComment"; options.desc = "Show comment"; } { mode = "n"; key = "rx"; action = ":CodeReviewClear"; options.desc = "Clear all comments"; } { mode = "n"; key = "ry"; action = ":CodeReviewCopy"; options.desc = "Copy review to clipboard"; } # l - lsp/formatter { mode = "n"; key = "la"; action = ":lua vim.lsp.buf.code_action()"; options.desc = "Actions"; } { mode = "n"; key = "ld"; action = ":lua vim.diagnostic.open_float({ severity = { min = vim.diagnostic.severity.HINT } })"; options.desc = "Diagnostics popup"; } { mode = "n"; key = "lf"; action = ":lua require('conform').format({ lsp_fallback = true })"; options.desc = "Format"; } { mode = "n"; key = "li"; action = ":lua vim.lsp.buf.hover()"; options.desc = "Information"; } { mode = "n"; key = "lj"; action = ":lua vim.diagnostic.jump({ count = 1 })"; options.desc = "Next diagnostic"; } { mode = "n"; key = "lk"; action = ":lua vim.diagnostic.jump({ count = -1 })"; options.desc = "Prev diagnostic"; } { mode = "n"; key = "lr"; action = ":lua vim.lsp.buf.rename()"; options.desc = "Rename"; } { mode = "n"; key = "lR"; action = ":lua vim.lsp.buf.references()"; options.desc = "References"; } { mode = "n"; key = "ls"; action = ":lua vim.lsp.buf.definition()"; options.desc = "Source definition"; } # t - tab { mode = "n"; key = "tc"; action = ":tabclose"; options.desc = "Close tab"; } { mode = "n"; key = "tn"; action = ":tabnew"; options.desc = "New tab"; } { mode = "n"; key = "to"; action = ":tabonly"; options.desc = "Close other tabs"; } { mode = "n"; key = "th"; action = ":tabprevious"; options.desc = "Previous tab"; } { mode = "n"; key = "tl"; action = ":tabnext"; options.desc = "Next tab"; } # w - window { mode = "n"; key = "wh"; action = "h"; options.desc = "Go left"; } { mode = "n"; key = "wj"; action = "j"; options.desc = "Go down"; } { mode = "n"; key = "wk"; action = "k"; options.desc = "Go up"; } { mode = "n"; key = "wl"; action = "l"; options.desc = "Go right"; } { mode = "n"; key = "ws"; action = ":split"; options.desc = "Split horizontal"; } { mode = "n"; key = "wv"; action = ":vsplit"; options.desc = "Split vertical"; } { mode = "n"; key = "wc"; action = ":close"; options.desc = "Close window"; } { mode = "n"; key = "wq"; action = ":q"; options.desc = "Quit window"; } { mode = "n"; key = "wo"; action = ":only"; options.desc = "Close other windows"; } { mode = "n"; key = "w="; action = "="; options.desc = "Equalize windows"; } # other { mode = "n"; key = "j"; action = ":lua require('mini.jump2d').start(require('mini.jump2d').builtin_opts.query)"; options.desc = "Jump to character"; } { mode = "n"; key = "a"; action = ":lua require('harpoon'):list():add()"; options.desc = "Add harpoon"; } { mode = "n"; key = ""; action = ":lua require('harpoon').ui:toggle_quick_menu(require('harpoon'):list())"; options.desc = "Toggle harpoon quick menu"; } { mode = "n"; key = "1"; action = ":lua require('harpoon'):list():select(1)"; options.desc = "Go to harpoon 1"; } { mode = "n"; key = "2"; action = ":lua require('harpoon'):list():select(2)"; options.desc = "Go to harpoon 2"; } { mode = "n"; key = "3"; action = ":lua require('harpoon'):list():select(3)"; options.desc = "Go to harpoon 3"; } { mode = "n"; key = "4"; action = ":lua require('harpoon'):list():select(4)"; options.desc = "Go to harpoon 4"; } # z - zk (notes) { mode = "n"; key = "zn"; action = ":ZkNew { title = vim.fn.input('Title: ') }"; options.desc = "New note"; } { mode = "n"; key = "zo"; action = ":ZkNotes { sort = { 'modified' } }"; options.desc = "Open notes"; } { mode = "n"; key = "zt"; action = ":ZkTags"; options.desc = "Browse tags"; } { mode = "n"; key = "zf"; action = ":ZkNotes { sort = { 'modified' }, match = { vim.fn.input('Search: ') } }"; options.desc = "Find notes"; } { mode = "v"; key = "zf"; action = ":'<,'>ZkMatch"; options.desc = "Find notes matching selection"; } { mode = "n"; key = "zb"; action = ":ZkBacklinks"; options.desc = "Backlinks"; } { mode = "n"; key = "zl"; action = ":ZkLinks"; options.desc = "Outbound links"; } { mode = "n"; key = "zi"; action = ":ZkInsertLink"; options.desc = "Insert link"; } { mode = "v"; key = "zi"; action = ":'<,'>ZkInsertLinkAtSelection"; options.desc = "Insert link at selection"; } { mode = "v"; key = "zc"; action = ":'<,'>ZkNewFromTitleSelection"; options.desc = "Create note from selection"; } ]; }