{ programs.nixvim = { plugins = { snacks.settings = { picker.enable = true; explorer.enable = true; }; oil.enable = true; which-key.settings.spec = [ { __unkeyed-1 = "f"; mode = "n"; group = "+find"; } { __unkeyed-1 = "g"; mode = "n"; group = "+git"; } { __unkeyed-1 = "s"; mode = "n"; group = "+search"; } ]; }; keymaps = [ # Top Pickers & Explorer { key = " "; action = "lua Snacks.picker.smart()"; options.desc = "Smart Find Files"; } { key = ","; action = "lua Snacks.picker.buffers()"; options.desc = "Buffers"; } { key = "/"; action = "lua Snacks.picker.grep()"; options.desc = "Grep"; } { key = ":"; action = "lua Snacks.picker.command_history()"; options.desc = "Command History"; } { key = "e"; action = "lua Snacks.explorer()"; options.desc = "File Explorer"; } { key = "-"; action = "Oil"; options.desc = "Oil"; } # Find { key = "fb"; action = "lua Snacks.picker.buffers()"; options.desc = "Buffers"; } { key = "fc"; action = '' lua Snacks.picker.files({ cwd = vim.fn.stdpath("config") })''; options.desc = "Find Config File"; } { key = "ff"; action = "lua Snacks.picker.files()"; options.desc = "Find Files"; } { key = "fg"; action = "lua Snacks.picker.git_files()"; options.desc = "Find Git Files"; } { key = "fp"; action = "lua Snacks.picker.projects()"; options.desc = "Projects"; } { key = "fr"; action = "lua Snacks.picker.recent()"; options.desc = "Recent"; } { key = "fn"; action = "lua Snacks.picker.notifications()"; options.desc = "Notification History"; } # Git { key = "gb"; action = "lua Snacks.picker.git_branches()"; options.desc = "Git Branches"; } { key = "gL"; action = "lua Snacks.picker.git_log()"; options.desc = "Git Log Line"; } { key = "gs"; action = "lua Snacks.picker.git_status()"; options.desc = "Git Status"; } { key = "gS"; action = "lua Snacks.picker.git_stash()"; options.desc = "Git Stash"; } { key = "gd"; action = "lua Snacks.picker.git_diff()"; options.desc = "Git Diff (Hunks)"; } { key = "gf"; action = "lua Snacks.picker.git_log_file()"; options.desc = "Git Log File"; } # Grep { key = "sb"; action = "lua Snacks.picker.lines()"; options.desc = "Buffer Lines"; } { key = "sB"; action = "lua Snacks.picker.grep_buffers()"; options.desc = "Grep Open Buffers"; } { key = "sg"; action = "lua Snacks.picker.grep()"; options.desc = "Grep"; } { key = "sw"; action = "lua Snacks.picker.grep_word()"; options.desc = "Visual selection or word"; } # LSP { key = "gd"; action = "lua Snacks.picker.lsp_definitions()"; options.desc = "Goto Definition"; } { key = "gD"; action = "lua Snacks.picker.lsp_declarations()"; options.desc = "Goto Declaration"; } { key = "gr"; action = "lua Snacks.picker.lsp_references()"; options.desc = "References"; options.nowait = true; } { key = "gI"; action = "lua Snacks.picker.lsp_implementations()"; options.desc = "Goto Implementation"; } { key = "gy"; action = "lua Snacks.picker.lsp_type_definitions()"; options.desc = "Goto Type Definition"; } { key = "ss"; action = "lua Snacks.picker.lsp_symbols()"; options.desc = "LSP Symbols"; } { key = "sS"; action = "lua Snacks.picker.lsp_workspace_symbols()"; options.desc = "LSP Workspace Symbols"; } ]; }; }