fix: set terminal open in new tab

This commit is contained in:
bumpsoo 2025-04-04 11:01:53 +00:00
parent 8ed8f42731
commit f3fb31a81d

View file

@ -8,18 +8,38 @@ vim.keymap.set('n', '<leader>cd', function()
print("cd to " .. path)
end, { noremap = true, silent = true, desc = '현재 파일 경로로 cd' })
vim.keymap.set('n', '<leader>`', function()
local total_width = vim.o.columns
local target_width = math.floor(total_width * 0.3)
local terminal_tab_id = nil
local previous_tab_id = nil
vim.cmd('vsplit')
vim.cmd('wincmd l')
vim.cmd('vertical resize ' .. target_width)
vim.cmd('terminal')
vim.cmd('startinsert')
end, { noremap = true, silent = true, desc = '오른쪽에 터미널 열기 (30% 너비)' })
vim.keymap.set({'n', 't'}, '<leader>`', function()
local current_tab = vim.api.nvim_get_current_tabpage()
vim.keymap.set('t', '<Esc>', [[<C-\><C-n>]], { noremap = true, silent = true })
if terminal_tab_id and vim.api.nvim_tabpage_is_valid(terminal_tab_id) then
if current_tab == terminal_tab_id then
if previous_tab_id and vim.api.nvim_tabpage_is_valid(previous_tab_id) then
vim.api.nvim_set_current_tabpage(previous_tab_id)
end
else
previous_tab_id = current_tab
vim.api.nvim_set_current_tabpage(terminal_tab_id)
-- 이미 열린 터미널 탭일 경우에도 인서트 모드로
local bufnr = vim.api.nvim_get_current_buf()
if vim.bo[bufnr].buftype == "terminal" then
vim.cmd('startinsert')
end
end
else
previous_tab_id = current_tab
vim.cmd('tabnew')
vim.cmd('terminal bash')
vim.cmd('startinsert')
terminal_tab_id = vim.api.nvim_get_current_tabpage()
local bufnr = vim.api.nvim_get_current_buf()
vim.api.nvim_buf_set_name(bufnr, '[Terminal]')
end
end, { noremap = true, silent = true, desc = '터미널 탭 토글 (bash)' })
vim.keymap.set('n', '<leader>tn', ':tabnew<CR>')
vim.keymap.set('n', '<leader>tl', ':tabnext<CR>')