return { 'akinsho/toggleterm.nvim', config = function() function _G.set_terminal_keymaps(term) local opts = { noremap = true } if term.cmd ~= 'lazygit' then vim.api.nvim_buf_set_keymap(term.bufnr, 't', '', [[]], opts) end vim.api.nvim_buf_set_keymap(term.bufnr, 't', 'jk', [[]], opts) vim.api.nvim_buf_set_keymap(term.bufnr, 't', '', [[h]], opts) vim.api.nvim_buf_set_keymap(term.bufnr, 't', '', [[j]], opts) vim.api.nvim_buf_set_keymap(term.bufnr, 't', '', [[k]], opts) vim.api.nvim_buf_set_keymap(term.bufnr, 't', '', [[l]], opts) end require('toggleterm').setup({ on_open = set_terminal_keymaps, }) local Terminal = require('toggleterm.terminal').Terminal function _lazygit_toggle() local lazygit = Terminal:new({ cmd = 'lazygit', direction = 'float', cwd = function() return vim.fn.getcwd() end, float_opts = { border = 'double', }, -- function to run on opening the terminal on_open = function(term) vim.cmd('startinsert!') vim.api.nvim_buf_set_keymap(term.bufnr, 'n', 'q', 'close', { noremap = true, silent = true }) end, -- function to run on closing the terminal on_close = function(term) vim.cmd('startinsert!') end, }) lazygit:open() end end, keys = { { 'g', function() _lazygit_toggle() end, desc = 'LazyGit', }, }, cmd = 'ToggleTerm', }