Files
nvim.rc/lua/plugins/terminal.lua
2025-09-25 16:10:45 +08:00

60 lines
2.2 KiB
Lua

-- if true then return {} end
---@type LazySpec
return {
"akinsho/toggleterm.nvim",
cmd = { "ToggleTerm", "TermExec", "TermNew" },
version = false,
branch = "main",
keys = {
{ "<leader>tH", "<Cmd>TermNew size=20 direction=horizontal<CR>", desc = "New horizonal terminal" },
{ "<M-h>", "<Cmd>ToggleTerm size=20<CR>", desc = "Toggle terminal", mode = { "n", "t" } },
{
",tt",
function()
local term = require "toggleterm.terminal"
local id = term.get_focused_id()
local last = term.get_last_focused()
if id then
require("toggleterm").toggle(id)
elseif last then
require("toggleterm").toggle(last.id)
else
require("astrocore").notify("No terminal is opening", vim.log.levels.INFO, { title = "Toggle Term" })
end
end,
mode = { "n", "t" },
desc = "Toggle terminal",
},
-- select
{ ",ts", "<Cmd>TermSelect<CR>", desc = "Select Terminal", mode = { "t", "n" } },
-- toggle
{ ",tf", "<Cmd>ToggleTerm direction=float<CR>", desc = "Toggle terminal float", mode = { "t", "n" } },
-- { ",tn", "<Cmd>ToggleTerm direction=tab<CR>", desc = "Toggle terminal in tab" },
-- new
{ ",tn", desc = "New terminal" },
{ ",tnt", "<Cmd>TermNew name=tab direction=tab<CR>", desc = "New terminal in tab" },
{ ",tnh", "<Cmd>TermNew name=horiz direction=horizontal<CR>", desc = "New horizontal terminal" },
{ ",tnv", "<Cmd>TermNew name=verti direction=vertical<CR>", desc = "New vertical terminal" },
{ ",tnf", "<Cmd>TermNew name=float direction=float<CR>", desc = "New float terminal" },
{ "<C-Up>", "<Cmd>resize +2<CR>", desc = "Resize terminal up", mode = "t" },
{ "<C-Down>", "<Cmd>resize -2<CR>", desc = "Resize terminal down", mode = "t" },
},
config = function(plugin, opts)
-- override size
require("toggleterm").setup {
-- size can be a number or function which is passed the current terminal
size = function(term)
if term.direction == "horizontal" then
return vim.o.lines * 0.4
elseif term.direction == "vertical" then
return vim.o.columns * 0.4
end
end,
} --[[@type ToggleTermConfig]]
end,
}