diff options
| author | David T. Sadler <davidtsadler@googlemail.com> | 2026-02-13 17:00:18 +0000 |
|---|---|---|
| committer | David T. Sadler <davidtsadler@googlemail.com> | 2026-02-13 17:00:18 +0000 |
| commit | 310cd1a2decc6c3a19069ca09909d04e296f18c9 (patch) | |
| tree | f064a4d81ae97764bfebbc0bc6c38166e72f707f | |
| parent | ab78c4274a485398ea7dc61cdd11ba90e215fbd7 (diff) | |
Configure key mappings for pickers in Neovim
| -rw-r--r-- | nvim/.config/nvim/lua/config/keymaps.lua | 60 | ||||
| -rw-r--r-- | nvim/.config/nvim/lua/plugins/nord.lua | 4 | ||||
| -rw-r--r-- | nvim/.config/nvim/lua/plugins/snacks-nvim.lua | 1 |
3 files changed, 59 insertions, 6 deletions
diff --git a/nvim/.config/nvim/lua/config/keymaps.lua b/nvim/.config/nvim/lua/config/keymaps.lua index f3942cb..00d74ee 100644 --- a/nvim/.config/nvim/lua/config/keymaps.lua +++ b/nvim/.config/nvim/lua/config/keymaps.lua @@ -24,10 +24,10 @@ set('v', '<C-j>', ":<C-u>execute \"'<,'>move '>+\" . v:count1<cr>gv=gv", { desc set('v', '<C-k>', ":<C-u>execute \"'<,'>move '<-\" . (v:count1 + 1)<cr>gv=gv", { desc = 'Move Up' }) -- Buffer navigation. -set('n', '<S-h>', '<cmd>bprevious<cr>', { desc = 'Prev Buffer' }) -set('n', '<S-l>', '<cmd>bnext<cr>', { desc = 'Next Buffer' }) -set('n', '[b', '<cmd>bprevious<cr>', { desc = 'Prev Buffer' }) -set('n', ']b', '<cmd>bnext<cr>', { desc = 'Next Buffer' }) +set('n', '<,', '<cmd>bprevious<cr>', { desc = 'Prev Buffer' }) +set('n', '>.', '<cmd>bnext<cr>', { desc = 'Next Buffer' }) +set('n', '>b', '<cmd>bprevious<cr>', { desc = 'Prev Buffer' }) +set('n', '<b', '<cmd>bnext<cr>', { desc = 'Next Buffer' }) set('n', '<leader>bb', '<cmd>e #<cr>', { desc = 'Switch to Other Buffer' }) set('n', '<leader>`', '<cmd>e #<cr>', { desc = 'Switch to Other Buffer' }) set('n', '<leader>bd', function() Snacks.bufdelete() end, { desc = 'Delete Buffer' }) @@ -125,7 +125,6 @@ set('n', '<leader>xx', '<cmd>source %<cr>', { desc = 'Source Current File' }) set('n', '<leader>cl', function() Snacks.picker.lsp_config() end, { desc = "Lsp Info" }) set('n', 'gd', vim.lsp.buf.definition, { desc = 'Goto Definition' }) set('n', 'gr', vim.lsp.buf.references, { desc = 'References', nowait = true }) -set('n', 'gr', vim.lsp.buf.references, { desc = 'References', nowait = true }) set('n', 'gI', vim.lsp.buf.implementation, { desc = 'Goto Implementation' }) set('n', 'gy', vim.lsp.buf.type_definition, { desc = 'Goto T[y]pe Definition' }) set('n', 'gD', vim.lsp.buf.declaration, { desc = 'Goto Declaration' }) @@ -134,4 +133,53 @@ set('n', 'gK', function() return vim.lsp.buf.signature_help() end, { desc = 'Sig set({'n', 'x'}, '<leader>ca', vim.lsp.buf.code_action, { desc = 'Code Action' }) set({'n', 'x'}, '<leader>cc', vim.lsp.codelens.run, { desc = 'Run Codelens' }) set('n', '<leader>cR', function() Snacks.rename.rename_file() end, { desc = 'Rename File' }) -set('n', 'leader>cr', vim.lsp.buf.rename, { desc = 'Rename' }) +set('n', '<leader>cr', vim.lsp.buf.rename, { desc = 'Rename' }) + +-- Pickers +local getSmartOpts = function(overrides) + local cwd = vim.uv.cwd() or '' + -- Show hidden files in picker when editing the .dotfiles directory. + local is_dotfiles = not not cwd:find(".dotfiles", 1, true) + + local defaults = { + hidden = is_dotfiles, + exclude = { '.git', '.gitmodules' }, + root = true, + } + + return vim.tbl_extend("force", defaults, overrides or {}) +end +---- Find +set('n', '<leader><space>', function() Snacks.picker.files(getSmartOpts()) end, { desc = 'Find Files (Root Dir)' }) +set('n', '<leader>ff', function() Snacks.picker.files(getSmartOpts()) end, { desc = 'Find Files (Root Dir)' }) +set('n', '<leader>fF', function() Snacks.picker.files(getSmartOpts({ root = false })) end, { desc = 'Find Files (CWD)' }) +set('n', '<leader>,', function() Snacks.picker.buffers() end, { desc = 'Buffers' }) +set('n', '<leader>fb', function() Snacks.picker.buffers() end, { desc = 'Buffers' }) +---- Grep +set('n', '<leader>/', function() Snacks.picker.grep(getSmartOpts()) end, { desc = 'Grep (Root Dir)' }) +set('n', '<leader>sg', function() Snacks.picker.grep(getSmartOpts({ live = true} )) end, { desc = 'Grep (Root Dir)' }) +set('n', '<leader>sG', function() Snacks.picker.grep(getSmartOpts({ live = true, root = false })) end, { desc = 'Grep (CWD)' }) +set('n', '<leader>sb', function() Snacks.picker.lines() end, { desc = 'Buffer Lines' }) +set('n', '<leader>sB', function() Snacks.picker.grep_buffers() end, { desc = 'Grep Open Buffers' }) +set('n', '<leader>:', function() Snacks.picker.command_history() end, { desc = 'Command History' }) +set({'n', 'x'}, '<leader>sw', function() + Snacks.picker.grep_word(getSmartOpts()) +end, { desc = 'Visual selection or word (Root Dir)' }) +set({'n', 'x'}, '<leader>sW', function() + local opts = getSmartOpts() + opts.root = false + Snacks.picker.grep_word(opts) +end, { desc = 'Visual selection or word (CWD)' }) +-- Search +set('n', '<leader>sc', function() Snacks.picker.command_history() end, { desc = 'Command History' }) +set('n', '<leader>sC', function() Snacks.picker.commands() end, { desc = 'Commands' }) +set('n', '<leader>sd', function() Snacks.picker.diagnostics() end, { desc = 'Diagnostics' }) +set('n', '<leader>sD', function() Snacks.picker.diagnostics_buffer() end, { desc = 'Buffer Diagnostics' }) +set('n', '<leader>sh', function() Snacks.picker.help() end, { desc = 'Help Pages' }) +set('n', '<leader>sH', function() Snacks.picker.highlights() end, { desc = 'Highlights' }) +set('n', '<leader>si', function() Snacks.picker.icons() end, { desc = 'Icons' }) +set('n', '<leader>sj', function() Snacks.picker.jumps() end, { desc = 'Jumps' }) +set('n', '<leader>sk', function() Snacks.picker.keymaps() end, { desc = 'Keymaps' }) +set('n', '<leader>sm', function() Snacks.picker.marks() end, { desc = 'Marks' }) +set('n', '<leader>sR', function() Snacks.picker.resume() end, { desc = 'Resume' }) +set('n', '<leader>sq', function() Snacks.picker.qflist() end, { desc = 'Quickfix List' }) diff --git a/nvim/.config/nvim/lua/plugins/nord.lua b/nvim/.config/nvim/lua/plugins/nord.lua index 046d8ad..4f7ced5 100644 --- a/nvim/.config/nvim/lua/plugins/nord.lua +++ b/nvim/.config/nvim/lua/plugins/nord.lua @@ -1,3 +1,7 @@ vim.pack.add({'https://github.com/shaunsingh/nord.nvim'}) vim.cmd[[colorscheme nord]] + +-- Make directory paths in the Snacks picker readable. +vim.api.nvim_set_hl(0, "SnacksPickerDir", { link = "Directory" }) +vim.api.nvim_set_hl(0, "SnacksPickerPathHidden", { link = "Comment" }) diff --git a/nvim/.config/nvim/lua/plugins/snacks-nvim.lua b/nvim/.config/nvim/lua/plugins/snacks-nvim.lua index 91a953f..b912ad9 100644 --- a/nvim/.config/nvim/lua/plugins/snacks-nvim.lua +++ b/nvim/.config/nvim/lua/plugins/snacks-nvim.lua @@ -4,4 +4,5 @@ require('snacks').setup({ bigfile = { enabled = true }, bufdelete = { enabled = true }, terminal = { enabled = true }, + picker = { enabled = true }, }) |
