vim.keymap.set('n', '', function() -- Get the current file's directory (handles unsaved files too) local cwd = vim.fn.expand '%:p:h' if cwd == '' then cwd = vim.fn.getcwd() -- fallback to current working dir end -- Open a horizontal split and terminal vim.cmd 'split' vim.cmd 'terminal' vim.cmd 'startinsert' -- Safely cd into the folder, even if it has spaces vim.fn.chansend(vim.b.terminal_job_id, 'cd "' .. cwd .. '"\n') end, { desc = "Open terminal in current file's directory" }) local harpoon = require 'harpoon' vim.keymap.set('n', 'a', function() harpoon:list():add() end, { desc = 'Add file to Harpoon' }) vim.keymap.set('n', 'h', function() harpoon.ui:toggle_quick_menu(harpoon:list()) end, { desc = 'Toggle Harpoon menu' }) vim.keymap.set('n', '1', function() harpoon:list():select(1) end) vim.keymap.set('n', '2', function() harpoon:list():select(2) end) vim.keymap.set('n', '3', function() harpoon:list():select(3) end) vim.keymap.set('n', '4', function() harpoon:list():select(4) end) -- In your keybindings configuration (e.g., lua/config/keymaps.lua or init.lua) vim.keymap.set('n', 'w', 'NvimTreeToggle', { desc = 'Toggle NvimTree' }) vim.keymap.set({ 'n', 't' }, 'rr', function() local chan = vim.b.terminal_job_id if not chan then vim.notify('Not in a terminal buffer', vim.log.levels.ERROR) return end vim.api.nvim_chan_send(chan, 'source venv/bin/activate\n') end, { desc = 'Activating VENV virtual environment (if it exists LOL)' })