{ 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)"; } # g - git { mode = "n"; key = "gd"; action = ":DiffviewOpen"; } { mode = "n"; key = "gg"; action.__raw = '' function() require('toggleterm.terminal').Terminal:new({ cmd = 'jjui', direction = 'float' }):toggle() end ''; options.desc = "jjui"; } # 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.goto_next()"; options.desc = "Next diagnostic"; } { mode = "n"; key = "lk"; action = ":lua vim.diagnostic.goto_prev()"; 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"; } # 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"; } ]; }