diff --git a/.config/nvim/lua/bumpsoo/remap.lua b/.config/nvim/lua/bumpsoo/remap.lua index 3460283..cfab75e 100644 --- a/.config/nvim/lua/bumpsoo/remap.lua +++ b/.config/nvim/lua/bumpsoo/remap.lua @@ -8,18 +8,38 @@ vim.keymap.set('n', 'cd', function() print("cd to " .. path) end, { noremap = true, silent = true, desc = '현재 파일 경로로 cd' }) -vim.keymap.set('n', '`', 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'}, '`', function() + local current_tab = vim.api.nvim_get_current_tabpage() -vim.keymap.set('t', '', [[]], { 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', 'tn', ':tabnew') vim.keymap.set('n', 'tl', ':tabnext')