vitorpy's Dotfiles
at main 81 lines 2.3 kB view raw
1return { 2 "akinsho/toggleterm.nvim", 3 version = "*", 4 config = function() 5 require("toggleterm").setup({ 6 size = 20, 7 open_mapping = [[<c-\>]], 8 hide_numbers = true, 9 shade_terminals = true, 10 start_in_insert = true, 11 insert_mappings = true, 12 terminal_mappings = true, 13 persist_size = true, 14 direction = "float", 15 close_on_exit = true, 16 shell = vim.o.shell, 17 float_opts = { 18 border = "curved", 19 winblend = 0, 20 }, 21 }) 22 23 local Terminal = require("toggleterm.terminal").Terminal 24 25 -- Track current terminal index 26 local term_idx = 1 27 local terminals = {} 28 29 -- Function to get or create terminal 30 local function get_terminal(idx) 31 if not terminals[idx] then 32 terminals[idx] = Terminal:new({ 33 count = idx, 34 direction = "float", 35 on_close = function() 36 terminals[idx] = nil 37 end, 38 }) 39 end 40 return terminals[idx] 41 end 42 43 -- Toggle current terminal 44 vim.keymap.set("n", "<leader>t", function() 45 get_terminal(term_idx):toggle() 46 end, { desc = "Toggle terminal" }) 47 48 -- Create new terminal (next tab) 49 vim.keymap.set("n", "<leader>tn", function() 50 term_idx = term_idx + 1 51 get_terminal(term_idx):toggle() 52 end, { desc = "New terminal tab" }) 53 54 -- Cycle to next terminal 55 vim.keymap.set("n", "<leader>]", function() 56 get_terminal(term_idx):close() 57 term_idx = term_idx % 10 + 1 58 get_terminal(term_idx):open() 59 end, { desc = "Next terminal" }) 60 61 -- Cycle to previous terminal 62 vim.keymap.set("n", "<leader>[", function() 63 get_terminal(term_idx):close() 64 term_idx = term_idx - 1 65 if term_idx < 1 then term_idx = 10 end 66 get_terminal(term_idx):open() 67 end, { desc = "Previous terminal" }) 68 69 -- Close current terminal 70 vim.keymap.set("n", "<leader>tc", function() 71 get_terminal(term_idx):shutdown() 72 terminals[term_idx] = nil 73 end, { desc = "Close terminal" }) 74 75 -- Exit terminal mode 76 vim.keymap.set("t", "<esc>", [[<C-\><C-n>]], { desc = "Exit terminal mode" }) 77 78 -- Pass C-c to terminal 79 vim.keymap.set("t", "<C-c>", "<C-c>", { desc = "Send C-c to terminal" }) 80 end, 81}