return { -- "gc" to comment visual regions/lines { 'numToStr/Comment.nvim', opts = {} }, -- Undo browsing 'mbbill/undotree', -- Tabstops autodetected 'tpope/vim-sleuth', { "kylechui/nvim-surround", version = "^3.0.0", -- Use for stability; omit to use `main` branch for the latest features event = "VeryLazy", config = true, }, { 'inkarkat/vim-ReplaceWithRegister', keys = { { 'rp', 'ReplaceWithRegisterOperator' }, { 'rpp', 'ReplaceWithRegisterLine' }, { 'rp', 'ReplaceWithRegisterVisual', mode = 'x' }, }, }, { 'ggandor/leap.nvim', opts = { safe_labels = {}, }, dependencies = { "tpope/vim-repeat", }, keys = { { '\\', '(leap)', mode = { 'n', 'x', 'o' } }, { 'gs', '(leap-from-window)', mode = { 'n', 'x', 'o' } }, } }, { 'Wansmer/treesj', dependencies = { 'nvim-treesitter/nvim-treesitter' }, opts = { use_default_keymaps = false, }, keys = { { 'tg', function() require('treesj').toggle() end, desc = "[T]ree to[g]gle one-line" }, { 'tj', function() require('treesj').join() end, desc = "[T]ree [J]oin one-line" }, { 'ts', function() require('treesj').split() end, desc = "[T]ree [S]plit one-line" }, }, }, -- rehighlight search on n or N { 'nvimdev/hlsearch.nvim', event = 'BufRead', config = true, }, { 'mizlan/iswap.nvim', event = 'VeryLazy', keys = { { 'cs', 'ISwapWith', desc = 'I[S]wap' }, { 'cS', 'ISwap', desc = 'I[S]wapWith' }, { 'cn', 'ISwapNodeWith', desc = 'ISwap[N]ode' }, { 'cN', 'ISwapNode', desc = 'ISwap[N]ode' }, }, }, { 'aaronik/treewalker.nvim', keys = { { 'ch', 'Treewalker Left', desc = 'Tree Left' }, { 'cj', 'Treewalker Down', desc = 'Tree Down' }, { 'ck', 'Treewalker Up', desc = 'Tree Up' }, { 'cl', 'Treewalker Right', desc = 'Tree Right' }, { 'cJ', 'Treewalker SwapDown', desc = 'Tree Swap Down' }, { 'cK', 'Treewalker SwapUp', desc = 'Tree Swap Up' }, }, }, }