-- ======================================================================== -- CHEATSHEET - Comprehensive keymap reference -- ======================================================================== -- Complete cheatsheet including: -- - Vim default keymaps -- - Custom leader keymaps -- - Plugin-specific keymaps (Telescope, Neo-tree, etc.) -- - LSP keymaps -- - Language-specific keymaps -- ======================================================================== return { -- Enhanced cheatsheet with custom data { 'nvim-telescope/telescope.nvim', keys = { { 'sc', function() -- Create a custom cheatsheet picker local pickers = require 'telescope.pickers' local finders = require 'telescope.finders' local conf = require('telescope.config').values local actions = require 'telescope.actions' local action_state = require 'telescope.actions.state' -- Comprehensive keymap data local cheatsheet = { -- ============================================================ -- VIM ESSENTIALS -- ============================================================ { category = 'Vim: Motion', key = 'h/j/k/l', desc = 'Left/Down/Up/Right' }, { category = 'Vim: Motion', key = 'w/b/e', desc = 'Word forward/backward/end' }, { category = 'Vim: Motion', key = '0/$', desc = 'Start/end of line' }, { category = 'Vim: Motion', key = 'gg/G', desc = 'First/last line' }, { category = 'Vim: Motion', key = '{/}', desc = 'Previous/next paragraph' }, { category = 'Vim: Motion', key = '%', desc = 'Jump to matching bracket' }, { category = 'Vim: Motion', key = 'f/F{char}', desc = 'Find char forward/backward' }, { category = 'Vim: Motion', key = 't/T{char}', desc = 'Till char forward/backward' }, { category = 'Vim: Motion', key = ';/,', desc = 'Repeat f/t forward/backward' }, { category = 'Vim: Motion', key = '*/#', desc = 'Search word under cursor' }, { category = 'Vim: Motion', key = 'n/N', desc = 'Next/previous search result' }, { category = 'Vim: Editing', key = 'i/a', desc = 'Insert before/after cursor' }, { category = 'Vim: Editing', key = 'I/A', desc = 'Insert at line start/end' }, { category = 'Vim: Editing', key = 'o/O', desc = 'New line below/above' }, { category = 'Vim: Editing', key = 'x/X', desc = 'Delete char under/before cursor' }, { category = 'Vim: Editing', key = 'd{motion}', desc = 'Delete (dw, dd, d$)' }, { category = 'Vim: Editing', key = 'c{motion}', desc = 'Change (cw, cc, c$)' }, { category = 'Vim: Editing', key = 'y{motion}', desc = 'Yank/copy (yw, yy, y$)' }, { category = 'Vim: Editing', key = 'p/P', desc = 'Paste after/before cursor' }, { category = 'Vim: Editing', key = 'u/Ctrl-r', desc = 'Undo/redo' }, { category = 'Vim: Editing', key = '.', desc = 'Repeat last change' }, { category = 'Vim: Editing', key = 'r{char}', desc = 'Replace character' }, { category = 'Vim: Editing', key = 'J', desc = 'Join lines' }, { category = 'Vim: Editing', key = '~', desc = 'Toggle case' }, { category = 'Vim: Editing', key = '>>/<<', desc = 'Indent/unindent line' }, { category = 'Vim: Visual', key = 'v/V/Ctrl-v', desc = 'Visual/line/block mode' }, { category = 'Vim: Visual', key = 'o', desc = 'Go to other end of selection' }, { category = 'Vim: Visual', key = 'gv', desc = 'Reselect last visual' }, { category = 'Vim: Search', key = '/{pattern}', desc = 'Search forward' }, { category = 'Vim: Search', key = '?{pattern}', desc = 'Search backward' }, { category = 'Vim: Search', key = ':s/old/new/g', desc = 'Substitute in line' }, { category = 'Vim: Search', key = ':%s/old/new/g', desc = 'Substitute in file' }, { category = 'Vim: Search', key = ':noh', desc = 'Clear search highlight' }, { category = 'Vim: Windows', key = 'Ctrl-w s', desc = 'Split horizontal' }, { category = 'Vim: Windows', key = 'Ctrl-w v', desc = 'Split vertical' }, { category = 'Vim: Windows', key = 'Ctrl-w c', desc = 'Close window' }, { category = 'Vim: Windows', key = 'Ctrl-w o', desc = 'Close other windows' }, { category = 'Vim: Windows', key = 'Ctrl-w =', desc = 'Balance windows' }, { category = 'Vim: Windows', key = 'Ctrl-h/j/k/l', desc = 'Navigate windows' }, { category = 'Vim: Tabs', key = ':tabnew', desc = 'New tab' }, { category = 'Vim: Tabs', key = ':tabc', desc = 'Close tab' }, { category = 'Vim: Tabs', key = 'gt/gT', desc = 'Next/previous tab' }, { category = 'Vim: Files', key = ':w', desc = 'Save file' }, { category = 'Vim: Files', key = ':q', desc = 'Quit' }, { category = 'Vim: Files', key = ':wq or ZZ', desc = 'Save and quit' }, { category = 'Vim: Files', key = ':q! or ZQ', desc = 'Quit without saving' }, -- ============================================================ -- LEADER KEYMAPS (CORE) -- ============================================================ { category = 'Core: Quit', key = 'Q', desc = 'Quit all' }, { category = 'Core: Quit', key = 'q', desc = 'Quickfix diagnostics' }, { category = 'Core: Files', key = '\\', desc = 'Toggle Neo-tree' }, { category = 'Core: Terminal', key = 'Esc Esc', desc = 'Exit terminal mode (in terminal)' }, -- ============================================================ -- BUFFER OPERATIONS -- ============================================================ { category = 'Buffer', key = 'bd', desc = 'Delete buffer' }, { category = 'Buffer', key = 'bD', desc = 'Delete buffer (force)' }, { category = 'Buffer', key = 'bn', desc = 'Next buffer' }, { category = 'Buffer', key = 'bp', desc = 'Previous buffer' }, { category = 'Buffer', key = 'bo', desc = 'Delete other buffers' }, { category = 'Buffer', key = '', desc = 'Find buffers (Telescope)' }, -- ============================================================ -- WINDOW OPERATIONS -- ============================================================ { category = 'Window', key = 'ww', desc = 'Other window' }, { category = 'Window', key = 'wd', desc = 'Delete window' }, { category = 'Window', key = 'ws', desc = 'Split below' }, { category = 'Window', key = 'wv', desc = 'Split right' }, { category = 'Window', key = 'wm', desc = 'Maximize' }, { category = 'Window', key = 'w=', desc = 'Balance windows' }, { category = 'Window', key = 'wh/j/k/l', desc = 'Navigate windows' }, -- ============================================================ -- SEARCH (TELESCOPE) -- ============================================================ { category = 'Search', key = 'sh', desc = 'Help' }, { category = 'Search', key = 'sk', desc = 'Keymaps' }, { category = 'Search', key = 'sf', desc = 'Files' }, { category = 'Search', key = 'ss', desc = 'Select Telescope' }, { category = 'Search', key = 'sw', desc = 'Current word' }, { category = 'Search', key = 'sg', desc = 'Grep' }, { category = 'Search', key = 'sd', desc = 'Diagnostics' }, { category = 'Search', key = 'sr', desc = 'Resume' }, { category = 'Search', key = 's.', desc = 'Recent files' }, { category = 'Search', key = 's/', desc = 'In open files' }, { category = 'Search', key = 'sn', desc = 'Neovim config' }, { category = 'Search', key = 'sc', desc = 'Cheatsheet (this!)' }, { category = 'Search', key = 'sK', desc = 'All keymaps (which-key)' }, { category = 'Search', key = '/', desc = 'Fuzzy find in buffer' }, -- ============================================================ -- SESSION -- ============================================================ { category = 'Session', key = 'Ss', desc = 'Save session' }, { category = 'Session', key = 'Sr', desc = 'Restore session' }, { category = 'Session', key = 'Sd', desc = 'Delete session' }, -- ============================================================ -- UI OPERATIONS -- ============================================================ { category = 'UI', key = 'ul', desc = 'Open Lazy' }, { category = 'UI', key = 'um', desc = 'Open Mason' }, { category = 'UI', key = 'ui', desc = 'Inspect position' }, { category = 'UI', key = 'uI', desc = 'Inspect tree' }, { category = 'UI', key = 'un', desc = 'Dismiss notifications' }, -- ============================================================ -- TOGGLE -- ============================================================ { category = 'Toggle', key = 'th', desc = 'Inlay hints' }, -- ============================================================ -- DIAGNOSTICS -- ============================================================ { category = 'Diagnostics', key = 'xx', desc = 'Toggle diagnostics (Trouble)' }, { category = 'Diagnostics', key = 'xX', desc = 'Buffer diagnostics (Trouble)' }, { category = 'Diagnostics', key = 'xs', desc = 'Symbols (Trouble)' }, -- ============================================================ -- GIT -- ============================================================ { category = 'Git', key = 'hs', desc = 'Stage hunk' }, { category = 'Git', key = 'hr', desc = 'Reset hunk' }, { category = 'Git', key = 'hS', desc = 'Stage buffer' }, { category = 'Git', key = 'hu', desc = 'Undo stage hunk' }, { category = 'Git', key = 'hR', desc = 'Reset buffer' }, { category = 'Git', key = 'hp', desc = 'Preview hunk' }, { category = 'Git', key = 'hb', desc = 'Blame line' }, { category = 'Git', key = 'hd', desc = 'Diff this' }, { category = 'Git', key = 'hD', desc = 'Diff this ~' }, -- ============================================================ -- LSP (ALL LANGUAGES) -- ============================================================ { category = 'LSP', key = 'K', desc = 'Hover documentation' }, { category = 'LSP', key = 'grd', desc = 'Go to definition' }, { category = 'LSP', key = 'grD', desc = 'Go to declaration' }, { category = 'LSP', key = 'gri', desc = 'Go to implementation' }, { category = 'LSP', key = 'grr', desc = 'Go to references' }, { category = 'LSP', key = 'grt', desc = 'Go to type definition' }, { category = 'LSP', key = 'grn', desc = 'Rename' }, { category = 'LSP', key = 'gra', desc = 'Code action' }, { category = 'LSP', key = 'gO', desc = 'Document symbols' }, { category = 'LSP', key = 'gW', desc = 'Workspace symbols' }, -- ============================================================ -- DEBUG (ALL LANGUAGES) -- ============================================================ { category = 'Debug', key = 'F5 or dc', desc = 'Start/Continue' }, { category = 'Debug', key = 'F10 or dO', desc = 'Step over' }, { category = 'Debug', key = 'F11 or di', desc = 'Step into' }, { category = 'Debug', key = 'F12 or do', desc = 'Step out' }, { category = 'Debug', key = 'db', desc = 'Toggle breakpoint' }, { category = 'Debug', key = 'dB', desc = 'Conditional breakpoint' }, { category = 'Debug', key = 'dc or F5', desc = 'Continue' }, { category = 'Debug', key = 'di or F11', desc = 'Step into' }, { category = 'Debug', key = 'do or F12', desc = 'Step out' }, { category = 'Debug', key = 'dO or F10', desc = 'Step over' }, { category = 'Debug', key = 'dt', desc = 'Terminate' }, { category = 'Debug', key = 'dr', desc = 'Toggle REPL' }, { category = 'Debug', key = 'dl', desc = 'Run last' }, { category = 'Debug', key = 'dC', desc = 'Run to cursor' }, { category = 'Debug', key = 'du', desc = 'Toggle UI' }, { category = 'Debug', key = 'de', desc = 'Eval expression' }, -- ============================================================ -- FLUTTER (DART FILES) -- ============================================================ { category = 'Flutter', key = 'fr', desc = 'Run app' }, { category = 'Flutter', key = 'fR', desc = 'Hot restart' }, { category = 'Flutter', key = 'fh', desc = 'Hot reload' }, { category = 'Flutter', key = 'fq', desc = 'Quit app' }, { category = 'Flutter', key = 'fd', desc = 'Select device' }, { category = 'Flutter', key = 'fe', desc = 'Launch emulator' }, { category = 'Flutter', key = 'fo', desc = 'Toggle outline' }, { category = 'Flutter', key = 'ft', desc = 'Start DevTools' }, { category = 'Flutter', key = 'fa', desc = 'Attach to app' }, { category = 'Flutter', key = 'fD', desc = 'Detach from app' }, { category = 'Flutter', key = 'fL', desc = 'Toggle logs' }, { category = 'Flutter', key = 'fc', desc = 'Copy profiler URL' }, { category = 'Flutter', key = 'fl', desc = 'Restart LSP' }, { category = 'Flutter', key = '. or gra', desc = 'Code actions (Cmd+.)' }, -- ============================================================ -- RUST (RUST FILES) -- ============================================================ { category = 'Rust', key = 'rh', desc = 'Hover actions' }, { category = 'Rust', key = 'ra', desc = 'Code actions' }, { category = 'Rust', key = 're', desc = 'Explain error' }, { category = 'Rust', key = 'rC', desc = 'Open Cargo.toml' }, { category = 'Rust', key = 'rp', desc = 'Parent module' }, { category = 'Rust', key = 'rj', desc = 'Join lines' }, { category = 'Rust', key = 'rr', desc = 'Runnables' }, { category = 'Rust', key = 'rd', desc = 'Debuggables' }, { category = 'Rust', key = 'rm', desc = 'Expand macro' }, -- ============================================================ -- RUST CRATES (CARGO.TOML) -- ============================================================ { category = 'Rust: Crates', key = 'rct', desc = 'Toggle' }, { category = 'Rust: Crates', key = 'rcr', desc = 'Reload' }, { category = 'Rust: Crates', key = 'rcv', desc = 'Show versions' }, { category = 'Rust: Crates', key = 'rcf', desc = 'Show features' }, { category = 'Rust: Crates', key = 'rcd', desc = 'Show dependencies' }, { category = 'Rust: Crates', key = 'rcu', desc = 'Update crate' }, { category = 'Rust: Crates', key = 'rca', desc = 'Update all' }, { category = 'Rust: Crates', key = 'rcU', desc = 'Upgrade crate' }, { category = 'Rust: Crates', key = 'rcA', desc = 'Upgrade all' }, -- ============================================================ -- PYTHON (PYTHON FILES) -- ============================================================ { category = 'Python', key = 'pr', desc = 'Run file' }, { category = 'Python', key = 'pR', desc = 'Run with args' }, { category = 'Python', key = 'pe', desc = 'Select venv' }, { category = 'Python', key = 'pl', desc = 'Restart LSP' }, { category = 'Python', key = 'pi', desc = 'Organize imports' }, { category = 'Python', key = 'pf', desc = 'Format code' }, -- ============================================================ -- SVELTE (SVELTE FILES) -- ============================================================ { category = 'Svelte', key = 'vf', desc = 'Format with prettier' }, { category = 'Svelte', key = 'vl', desc = 'Restart Svelte LSP' }, { category = 'Svelte', key = 'vt', desc = 'Restart TypeScript LSP' }, { category = 'Svelte', key = 'vo', desc = 'Open component in split' }, -- ============================================================ -- TELESCOPE (INSIDE TELESCOPE) -- ============================================================ { category = 'Telescope', key = 'Ctrl-j/k or j/k', desc = 'Next/previous item' }, { category = 'Telescope', key = 'Ctrl-d/u', desc = 'Scroll preview down/up' }, { category = 'Telescope', key = 'Enter', desc = 'Open in current window' }, { category = 'Telescope', key = 'Ctrl-x', desc = 'Open in horizontal split' }, { category = 'Telescope', key = 'Ctrl-v', desc = 'Open in vertical split' }, { category = 'Telescope', key = 'Ctrl-t', desc = 'Open in new tab' }, { category = 'Telescope', key = 'Ctrl-c/Esc/q', desc = 'Close' }, { category = 'Telescope', key = 'Tab/Shift-Tab', desc = 'Toggle selection' }, { category = 'Telescope', key = 'Ctrl-q', desc = 'Send all to quickfix' }, { category = 'Telescope', key = 'Alt-q', desc = 'Send selected to quickfix' }, { category = 'Telescope', key = '? (normal)', desc = 'Show help' }, { category = 'Telescope', key = 'gg/G (normal)', desc = 'First/last item' }, -- ============================================================ -- NEO-TREE (INSIDE NEO-TREE) -- ============================================================ { category = 'Neo-tree', key = '\\, q, or Esc', desc = 'Close Neo-tree' }, { category = 'Neo-tree', key = 'Enter, o, or 2-click', desc = 'Open file' }, { category = 'Neo-tree', key = 'Ctrl-x or S', desc = 'Open in horizontal split' }, { category = 'Neo-tree', key = 'Ctrl-v or s', desc = 'Open in vertical split' }, { category = 'Neo-tree', key = 'Ctrl-t or t', desc = 'Open in new tab' }, { category = 'Neo-tree', key = 'w', desc = 'Open with window picker' }, { category = 'Neo-tree', key = 'Ctrl-j or >', desc = 'Next source (files/buffers/git)' }, { category = 'Neo-tree', key = 'Ctrl-k or <', desc = 'Previous source' }, { category = 'Neo-tree', key = 'P', desc = 'Toggle preview (float)' }, { category = 'Neo-tree', key = 'l', desc = 'Focus preview' }, { category = 'Neo-tree', key = 'R', desc = 'Refresh' }, { category = 'Neo-tree', key = 'H', desc = 'Toggle hidden files' }, { category = 'Neo-tree', key = '-', desc = 'Navigate up (parent dir)' }, { category = 'Neo-tree', key = '.', desc = 'Set root (cd into directory)' }, { category = 'Neo-tree', key = 'C', desc = 'Close node (collapse folder)' }, { category = 'Neo-tree', key = 'z', desc = 'Close all nodes' }, { category = 'Neo-tree', key = 'e', desc = 'Toggle auto expand width' }, { category = 'Neo-tree', key = 'a', desc = 'Add file' }, { category = 'Neo-tree', key = 'A', desc = 'Add directory' }, { category = 'Neo-tree', key = 'd', desc = 'Delete' }, { category = 'Neo-tree', key = 'r', desc = 'Rename' }, { category = 'Neo-tree', key = 'y', desc = 'Copy to clipboard' }, { category = 'Neo-tree', key = 'x', desc = 'Cut to clipboard' }, { category = 'Neo-tree', key = 'p', desc = 'Paste from clipboard' }, { category = 'Neo-tree', key = 'c', desc = 'Copy (with path input)' }, { category = 'Neo-tree', key = 'm', desc = 'Move (with path input)' }, { category = 'Neo-tree', key = '?', desc = 'Show help (in Neo-tree)' }, { category = 'Neo-tree', key = 'sf', desc = 'Telescope find from this dir' }, { category = 'Neo-tree', key = 'sg', desc = 'Telescope grep from this dir' }, -- ============================================================ -- MINI.AI (TEXT OBJECTS) -- ============================================================ { category = 'Text Objects', key = 'a/i + object', desc = 'Around/inside (w, p, [, {, ", \', `, t)' }, { category = 'Text Objects', key = 'daw', desc = 'Delete around word' }, { category = 'Text Objects', key = 'ciw', desc = 'Change inside word' }, { category = 'Text Objects', key = 'di"', desc = 'Delete inside quotes' }, { category = 'Text Objects', key = 'da(', desc = 'Delete around parentheses' }, { category = 'Text Objects', key = 'vit', desc = 'Visual inside tag' }, -- ============================================================ -- MINI.SURROUND -- ============================================================ { category = 'Surround', key = 'sa{motion}{char}', desc = 'Add surround' }, { category = 'Surround', key = 'sd{char}', desc = 'Delete surround' }, { category = 'Surround', key = 'sr{old}{new}', desc = 'Replace surround' }, { category = 'Surround', key = 'sf{char}', desc = 'Find right surround' }, { category = 'Surround', key = 'sF{char}', desc = 'Find left surround' }, { category = 'Surround', key = 'sh', desc = 'Highlight surround' }, } -- Create picker pickers .new({}, { prompt_title = ' Complete Cheatsheet', finder = finders.new_table { results = cheatsheet, entry_maker = function(entry) return { value = entry, display = string.format('%-20s %-25s %s', entry.category, entry.key, entry.desc), ordinal = entry.category .. ' ' .. entry.key .. ' ' .. entry.desc, } end, }, sorter = conf.generic_sorter {}, attach_mappings = function(prompt_bufnr, map) actions.select_default:replace(function() actions.close(prompt_bufnr) local selection = action_state.get_selected_entry() if selection then vim.notify( string.format('%s: %s\n%s', selection.value.category, selection.value.key, selection.value.desc), vim.log.levels.INFO, { title = 'Keymap' } ) end end) return true end, }) :find() end, desc = 'Cheatsheet (complete reference)', }, { '?', function() require('telescope.builtin').keymaps() end, desc = 'Search keymaps', }, }, }, -- Which-key can also show a searchable list { 'folke/which-key.nvim', keys = { { 'sK', function() require('which-key').show { global = true } end, desc = 'All keymaps (which-key)', }, }, }, }