return { { "voldikss/vim-floaterm", enabled = true, lazy = false, config = function() -- Floaterm config vim.g.floaterm_autoinsert = true vim.g.floaterm_autohide = 2 vim.g.floaterm_autoclose = 1 vim.g.floaterm_borderchars = "-¦-¦⌌⌍⌏⌎" vim.g.floaterm_opener = "vsplit" -- Config for interacting with terminals vim.g.floaterm_lastused = "" local term_group = vim.api.nvim_create_augroup("terminal", { clear = true }) local terminal_callback = function() vim.wo.colorcolumn = tostring(-1) vim.opt.stc = "" vim.b.number = false vim.b.relativenumber = false vim.b.winfixwidth = false end vim.api.nvim_create_autocmd({ "TermOpen" }, { pattern = { "*" }, group = term_group, callback = terminal_callback }) vim.api.nvim_create_autocmd({ "BufWinEnter", "WinEnter" }, { pattern = { "term://*" }, group = term_group, callback = function() terminal_callback(); vim.cmd(":startinsert"); end }) vim.api.nvim_create_autocmd({ "BufEnter" }, { pattern = { "*" }, group = term_group, callback = function() vim.defer_fn(function() vim.schedule(function() if (vim.bo.filetype ~= "floaterm") then vim.cmd(":FloatermHide " .. vim.g.floaterm_lastused) end end) end, 100) end }) -- Configure eight homerow terminals function MakeTerm(shortcut, name, command, options) vim.cmd(":nnoremap " .. shortcut .. " :lua vim.g.floaterm_lastused='" .. name .. "'; vim.api.nvim_exec2(\"FloatermShow " .. name .. "\", {})") vim.cmd(":FloatermNew --name=" .. name .. " --title=" .. name .. " --silent --titleposition=left " .. options .. " /bin/zsh -c \"while true; do; " .. command .. "; done;\"") end MakeTerm("stt", "Alpha", "clear; zsh", "--width=1.0 --height=0.99") MakeTerm("sts", "Beta", "clear; zsh", "--width=1.0 --height=0.99") MakeTerm("str", "Gamma", "clear; zsh", "--width=1.0 --height=0.99") MakeTerm("sta", "Delta", "clear; zsh", "--width=1.0 --height=0.99") MakeTerm("stn", "Epsilon", "clear; zsh", "--width=80 --height=40") MakeTerm("ste", "Zeta", "clear; zsh", "--width=80 --height=40") MakeTerm("sti", "Eta", "lazydocker", "--width=2.0 --height=2.0") MakeTerm("sto", "Theta", "lazygit", "--width=2.0 --height=2.0") -- Keymaps vim.keymap.set("t", "", ":FloatermHide") vim.keymap.set("t", "", "") vim.keymap.set("t", "", "") vim.keymap.set("t", "", "") vim.keymap.set("t", "", ":FloatermHide") vim.keymap.set("t", "", ":FloatermNext") end } }