diff --git a/init.lua b/init.lua index 3301eb38..25539adb 100644 --- a/init.lua +++ b/init.lua @@ -226,11 +226,42 @@ require('lazy').setup({ filters = { dotfiles = true, }, } }, + { + 'kylechui/nvim-surround', + opts = { + version = "*", + config = {}, + } + }, + { + 'akinsho/toggleterm.nvim', + opts = { + version = "*", + size = 20, + open_mapping = [[c-\]], + hide_numbers = 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", + }, + }, + } + }, -- NOTE: Next Step on Your Neovim Journey: Add/Configure additional "plugins" for kickstart -- These are some example plugins that I've included in the kickstart repository. -- Uncomment any of the lines below to enable them. - -- require 'kickstart.plugins.autoformat', + require 'kickstart.plugins.autoformat', -- require 'kickstart.plugins.debug', -- NOTE: The import below can automatically add your own plugins, configuration, etc from `lua/custom/plugins/*.lua` @@ -507,6 +538,16 @@ require('which-key').register { ['r'] = { name = '[R]ename', _ = 'which_key_ignore' }, ['s'] = { name = '[S]earch', _ = 'which_key_ignore' }, ['w'] = { name = '[W]orkspace', _ = 'which_key_ignore' }, + --Toggle Term + ['t'] = { + name = "[T]erminal", + p = { "lua _PYTHON_TOGGLE()", "Python" }, -- Python Terminal + f = { "ToggleTerm direction=float", "Float" }, -- Floating Terminal + + -- Play with size according to your needs. + h = { "ToggleTerm size=10 direction=horizontal", "Horizontal" }, -- Horizontal Terminal, + v = { "ToggleTerm size=80 direction=vertical", "Vertical" }, -- Vertical Terminal + }, } -- mason-lspconfig requires that these setup functions are called in this order @@ -616,5 +657,23 @@ cmp.setup { }, } +-- configure toggleterm +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 python = Terminal:new({ cmd = "python3", hidden = true }) + +function _PYTHON_TOGGLE() + python:toggle() +end -- The line beneath this is called `modeline`. See `:help modeline` -- vim: ts=2 sts=2 sw=2 et