- Replace Kanagawa with Catppuccin Mocha theme - Add bufferline for tab management - Add toggleterm with lazygit, Python/Node REPLs - Add auto-session for project persistence - Add noice.nvim for enhanced UI/notifications - Add nvim-dap with Python and JS/TS debugging - Add LSP support: rust-analyzer, pyright, ruff, clangd - Add crates.nvim for Cargo.toml management - Add markdown-preview, vim-dadbod (DB), rest.nvim (HTTP) - Update treesitter with rust, python, c, sql parsers - Update conform with rustfmt, ruff, clang-format - Update LSP config to Neovim 0.11 API (vim.lsp.config) - Add comprehensive keybindings for all new features Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
99 lines
5.9 KiB
Lua
99 lines
5.9 KiB
Lua
-- Key mappings
|
|
local keymap = vim.keymap.set
|
|
|
|
-- File explorer
|
|
keymap('n', '<leader>e', ':NvimTreeToggle<CR>', { desc = "Toggle file explorer" })
|
|
|
|
-- Fuzzy finder
|
|
keymap('n', '<leader>ff', '<cmd>Telescope find_files<cr>', { desc = "Find files" })
|
|
keymap('n', '<leader>fg', '<cmd>Telescope live_grep<cr>', { desc = "Live grep" })
|
|
keymap('n', '<leader>fb', '<cmd>Telescope buffers<cr>', { desc = "Find buffers" })
|
|
keymap('n', '<leader>fr', '<cmd>Telescope oldfiles<cr>', { desc = "Recent files" })
|
|
|
|
-- Git (Telescope pickers)
|
|
keymap('n', '<leader>gt', '<cmd>Telescope git_status<cr>', { desc = "Git status" })
|
|
keymap('n', '<leader>gc', '<cmd>Telescope git_commits<cr>', { desc = "Git commits" })
|
|
keymap('n', '<leader>gf', '<cmd>Telescope git_bcommits<cr>', { desc = "File commits" })
|
|
keymap('n', '<leader>gw', '<cmd>Telescope git_branches<cr>', { desc = "Git branches" })
|
|
|
|
-- Better window navigation
|
|
keymap('n', '<C-h>', '<C-w>h')
|
|
keymap('n', '<C-j>', '<C-w>j')
|
|
keymap('n', '<C-k>', '<C-w>k')
|
|
keymap('n', '<C-l>', '<C-w>l')
|
|
|
|
-- Quick save and quit
|
|
keymap('n', '<leader>w', ':w<CR>', { desc = "Save" })
|
|
keymap('n', '<leader>q', ':q<CR>', { desc = "Quit" })
|
|
|
|
-- Buffer navigation (bufferline)
|
|
keymap('n', '<leader>bp', '<cmd>BufferLineTogglePin<CR>', { desc = "Pin buffer" })
|
|
keymap('n', '<leader>bP', '<cmd>BufferLineGroupClose ungrouped<CR>', { desc = "Close non-pinned" })
|
|
keymap('n', '<leader>bo', '<cmd>BufferLineCloseOthers<CR>', { desc = "Close other buffers" })
|
|
keymap('n', '<leader>bl', '<cmd>BufferLineCloseRight<CR>', { desc = "Close buffers to right" })
|
|
keymap('n', '<leader>bh', '<cmd>BufferLineCloseLeft<CR>', { desc = "Close buffers to left" })
|
|
keymap('n', '<leader>1', '<cmd>BufferLineGoToBuffer 1<CR>', { desc = "Go to buffer 1" })
|
|
keymap('n', '<leader>2', '<cmd>BufferLineGoToBuffer 2<CR>', { desc = "Go to buffer 2" })
|
|
keymap('n', '<leader>3', '<cmd>BufferLineGoToBuffer 3<CR>', { desc = "Go to buffer 3" })
|
|
keymap('n', '<leader>4', '<cmd>BufferLineGoToBuffer 4<CR>', { desc = "Go to buffer 4" })
|
|
keymap('n', '<leader>5', '<cmd>BufferLineGoToBuffer 5<CR>', { desc = "Go to buffer 5" })
|
|
keymap('n', '<leader>bd', '<cmd>bdelete<CR>', { desc = "Delete buffer" })
|
|
keymap('n', '<S-l>', '<cmd>BufferLineCycleNext<CR>', { desc = "Next buffer" })
|
|
keymap('n', '<S-h>', '<cmd>BufferLineCyclePrev<CR>', { desc = "Previous buffer" })
|
|
|
|
-- Terminal (toggleterm)
|
|
keymap('n', '<leader>tf', '<cmd>ToggleTerm direction=float<CR>', { desc = "Float terminal" })
|
|
keymap('n', '<leader>th', '<cmd>ToggleTerm direction=horizontal<CR>', { desc = "Horizontal terminal" })
|
|
keymap('n', '<leader>tv', '<cmd>ToggleTerm direction=vertical<CR>', { desc = "Vertical terminal" })
|
|
keymap('n', '<leader>tt', '<cmd>ToggleTerm<CR>', { desc = "Toggle terminal" })
|
|
keymap('n', '<leader>tg', '<cmd>lua _LAZYGIT_TOGGLE()<CR>', { desc = "Lazygit" })
|
|
keymap('n', '<leader>tp', '<cmd>lua _PYTHON_TOGGLE()<CR>', { desc = "Python REPL" })
|
|
keymap('n', '<leader>tn', '<cmd>lua _NODE_TOGGLE()<CR>', { desc = "Node REPL" })
|
|
|
|
-- Terminal mode escape
|
|
keymap('t', '<Esc>', [[<C-\><C-n>]], { desc = "Exit terminal mode" })
|
|
keymap('t', '<C-h>', [[<Cmd>wincmd h<CR>]], { desc = "Window left" })
|
|
keymap('t', '<C-j>', [[<Cmd>wincmd j<CR>]], { desc = "Window down" })
|
|
keymap('t', '<C-k>', [[<Cmd>wincmd k<CR>]], { desc = "Window up" })
|
|
keymap('t', '<C-l>', [[<Cmd>wincmd l<CR>]], { desc = "Window right" })
|
|
|
|
-- Session management
|
|
keymap('n', '<leader>ss', '<cmd>SessionSave<CR>', { desc = "Save session" })
|
|
keymap('n', '<leader>sr', '<cmd>SessionRestore<CR>', { desc = "Restore session" })
|
|
keymap('n', '<leader>sd', '<cmd>SessionDelete<CR>', { desc = "Delete session" })
|
|
|
|
-- DAP (debugging)
|
|
keymap('n', '<leader>db', '<cmd>lua require("dap").toggle_breakpoint()<CR>', { desc = "Toggle breakpoint" })
|
|
keymap('n', '<leader>dB', '<cmd>lua require("dap").set_breakpoint(vim.fn.input("Condition: "))<CR>', { desc = "Conditional breakpoint" })
|
|
keymap('n', '<leader>dc', '<cmd>lua require("dap").continue()<CR>', { desc = "Continue" })
|
|
keymap('n', '<leader>di', '<cmd>lua require("dap").step_into()<CR>', { desc = "Step into" })
|
|
keymap('n', '<leader>do', '<cmd>lua require("dap").step_over()<CR>', { desc = "Step over" })
|
|
keymap('n', '<leader>dO', '<cmd>lua require("dap").step_out()<CR>', { desc = "Step out" })
|
|
keymap('n', '<leader>dr', '<cmd>lua require("dap").repl.toggle()<CR>', { desc = "Toggle REPL" })
|
|
keymap('n', '<leader>dl', '<cmd>lua require("dap").run_last()<CR>', { desc = "Run last" })
|
|
keymap('n', '<leader>du', '<cmd>lua require("dapui").toggle()<CR>', { desc = "Toggle DAP UI" })
|
|
keymap('n', '<leader>dt', '<cmd>lua require("dap").terminate()<CR>', { desc = "Terminate" })
|
|
keymap('n', '<F5>', '<cmd>lua require("dap").continue()<CR>', { desc = "Debug: Continue" })
|
|
keymap('n', '<F10>', '<cmd>lua require("dap").step_over()<CR>', { desc = "Debug: Step Over" })
|
|
keymap('n', '<F11>', '<cmd>lua require("dap").step_into()<CR>', { desc = "Debug: Step Into" })
|
|
keymap('n', '<F12>', '<cmd>lua require("dap").step_out()<CR>', { desc = "Debug: Step Out" })
|
|
|
|
-- Noice (notifications)
|
|
keymap('n', '<leader>nl', '<cmd>Noice last<CR>', { desc = "Last notification" })
|
|
keymap('n', '<leader>nh', '<cmd>Noice history<CR>', { desc = "Notification history" })
|
|
keymap('n', '<leader>na', '<cmd>Noice all<CR>', { desc = "All notifications" })
|
|
keymap('n', '<leader>nd', '<cmd>Noice dismiss<CR>', { desc = "Dismiss notifications" })
|
|
|
|
-- Markdown preview
|
|
keymap('n', '<leader>mp', '<cmd>MarkdownPreviewToggle<CR>', { desc = "Toggle markdown preview" })
|
|
|
|
-- Database
|
|
keymap('n', '<leader>Du', '<cmd>DBUIToggle<CR>', { desc = "Toggle DBUI" })
|
|
keymap('n', '<leader>Df', '<cmd>DBUIFindBuffer<CR>', { desc = "Find DB buffer" })
|
|
keymap('n', '<leader>Da', '<cmd>DBUIAddConnection<CR>', { desc = "Add DB connection" })
|
|
|
|
-- HTTP client
|
|
keymap('n', '<leader>hr', '<cmd>lua require("rest-nvim").run()<CR>', { desc = "Run HTTP request" })
|
|
keymap('n', '<leader>hp', '<cmd>lua require("rest-nvim").run(true)<CR>', { desc = "Preview HTTP request" })
|
|
keymap('n', '<leader>hl', '<cmd>lua require("rest-nvim").last()<CR>', { desc = "Re-run last request" })
|