local status_ok, toggleterm = pcall(require, "toggleterm") if not status_ok then return end toggleterm.setup { size = 20, open_mapping = [[]], hide_numbers = true, shade_filetypes = {}, shade_terminals = true, shading_factor = 2, start_in_insert = true, insert_mappings = true, persist_size = true, direction = "float", close_on_exit = true, shell = vim.o.shell, float_opts = { border = "curved", winblend = 0, highlights = { border = "Normal", background = "Normal", }, }, } function _G.set_terminal_keymaps() local opts = { noremap = true } -- vim.api.nvim_buf_set_keymap(0, 't', '', [[]], opts) -- vim.api.nvim_buf_set_keymap(0, "t", "jk", [[]], opts) vim.api.nvim_buf_set_keymap(0, "t", "", [[h]], opts) vim.api.nvim_buf_set_keymap(0, "t", "", [[j]], opts) vim.api.nvim_buf_set_keymap(0, "t", "", [[k]], opts) vim.api.nvim_buf_set_keymap(0, "t", "", [[l]], opts) end vim.cmd "autocmd! TermOpen term://* lua set_terminal_keymaps()" local Terminal = require("toggleterm.terminal").Terminal local lazygit = Terminal:new { cmd = "lazygit", hidden = true, direction = "float", float_opts = { border = "none", width = 100000, height = 100000, }, on_open = function(_) vim.cmd "startinsert!" -- vim.cmd "set laststatus=0" end, on_close = function(_) -- vim.cmd "set laststatus=3" end, count = 99, } function _LAZYGIT_TOGGLE() lazygit:toggle() end local node = Terminal:new { cmd = "node", hidden = true } function _NODE_TOGGLE() node:toggle() end local ncdu = Terminal:new { cmd = "ncdu", hidden = true } function _NCDU_TOGGLE() ncdu:toggle() end local htop = Terminal:new { cmd = "htop", hidden = true } function _HTOP_TOGGLE() htop:toggle() end local python = Terminal:new { cmd = "python", hidden = true } function _PYTHON_TOGGLE() python:toggle() end local cargo_run = Terminal:new { cmd = "cargo run", hidden = true } function _CARGO_RUN() cargo_run:toggle() end local cargo_test = Terminal:new { cmd = "cargo test", hidden = true } function _CARGO_TEST() cargo_test:toggle() end local float_term = Terminal:new { direction = "float", on_open = function(term) vim.cmd "startinsert!" vim.api.nvim_buf_set_keymap( term.bufnr, "n", "", "1ToggleTerm direction=float", { noremap = true, silent = true } ) vim.api.nvim_buf_set_keymap( term.bufnr, "t", "", "1ToggleTerm direction=float", { noremap = true, silent = true } ) vim.api.nvim_buf_set_keymap( term.bufnr, "i", "", "1ToggleTerm direction=float", { noremap = true, silent = true } ) vim.api.nvim_buf_set_keymap(term.bufnr, "", "", "", { noremap = true, silent = true }) vim.api.nvim_buf_set_keymap(term.bufnr, "", "", "", { noremap = true, silent = true }) end, count = 1, } function _FLOAT_TERM() float_term:toggle() end vim.api.nvim_set_keymap("n", "", "lua _FLOAT_TERM()", { noremap = true, silent = true }) vim.api.nvim_set_keymap("i", "", "lua _FLOAT_TERM()", { noremap = true, silent = true }) local vertical_term = Terminal:new { direction = "vertical", on_open = function(term) vim.cmd "startinsert!" vim.api.nvim_buf_set_keymap( term.bufnr, "n", "", "2ToggleTerm size=60 direction=vertical", { noremap = true, silent = true } ) vim.api.nvim_buf_set_keymap( term.bufnr, "t", "", "2ToggleTerm size=60 direction=vertical", { noremap = true, silent = true } ) vim.api.nvim_buf_set_keymap( term.bufnr, "i", "", "2ToggleTerm size=60 direction=vertical", { noremap = true, silent = true } ) vim.api.nvim_buf_set_keymap(term.bufnr, "", "", "", { noremap = true, silent = true }) end, count = 2, } function _VERTICAL_TERM() vertical_term:toggle(60) end vim.api.nvim_set_keymap("n", "", "lua _VERTICAL_TERM()", { noremap = true, silent = true }) vim.api.nvim_set_keymap("i", "", "lua _VERTICAL_TERM()", { noremap = true, silent = true }) local horizontal_term = Terminal:new { direction = "horizontal", on_open = function(term) vim.cmd "startinsert!" vim.api.nvim_buf_set_keymap( term.bufnr, "n", "", "3ToggleTerm size=10 direction=horizontal", { noremap = true, silent = true } ) vim.api.nvim_buf_set_keymap( term.bufnr, "t", "", "3ToggleTerm size=10 direction=horizontal", { noremap = true, silent = true } ) vim.api.nvim_buf_set_keymap( term.bufnr, "i", "", "3ToggleTerm size=10 direction=horizontal", { noremap = true, silent = true } ) vim.api.nvim_buf_set_keymap(term.bufnr, "", "", "", { noremap = true, silent = true }) end, count = 3, } function _HORIZONTAL_TERM() horizontal_term:toggle(10) end vim.api.nvim_set_keymap("n", "", "lua _HORIZONTAL_TERM()", { noremap = true, silent = true }) vim.api.nvim_set_keymap("i", "", "lua _HORIZONTAL_TERM()", { noremap = true, silent = true })