-- Set leader {{{ vim.api.nvim_set_keymap('n', '', '', { noremap = true, silent = true }) vim.g.mapleader = ' ' -- }}} -- resize {{{ vim.api.nvim_set_keymap('n', '', 'resize -2', { noremap = true, silent = true }) vim.api.nvim_set_keymap('n', '', 'resize +2', { noremap = true, silent = true }) vim.api.nvim_set_keymap('n', '', 'vertical resize -2', { noremap = true, silent = true }) vim.api.nvim_set_keymap('n', '', 'vertical resize -2', { noremap = true, silent = true }) -- }}} -- indent {{{ vim.api.nvim_set_keymap('v', '<', '', '>gv', { noremap = true, silent = true }) -- }}} -- open/close folds with enter key {{{ vim.api.nvim_set_keymap('n', '', "@=(foldlevel('.')?'za':\"\")", { noremap = true, silent = true }) -- }}} -- terminal {{{ vim.api.nvim_set_keymap('n', '', 'Lazy profile', { noremap = true, silent = true }) vim.api.nvim_set_keymap('n', '', 'ToggleTerm direction=horizontal', { noremap = true, silent = true }) vim.api.nvim_set_keymap('t', '', 'ToggleTerm direction=horizontal', { noremap = true, silent = true }) vim.api.nvim_set_keymap('v', '', 'ToggleTerm direction=horizontal', { noremap = true, silent = true }) vim.api.nvim_set_keymap('i', '', 'ToggleTerm direction=horizontal', { noremap = true, silent = true }) vim.api.nvim_set_keymap('n', '', 'ToggleTerm direction=vertical', { noremap = true, silent = true }) vim.api.nvim_set_keymap('t', '', 'ToggleTerm direction=vertical', { noremap = true, silent = true }) vim.api.nvim_set_keymap('v', '', 'ToggleTerm direction=vertical', { noremap = true, silent = true }) vim.api.nvim_set_keymap('i', '', 'ToggleTerm direction=vertical', { noremap = true, silent = true }) -- }}} -- misc {{{ vim.api.nvim_set_keymap('v', '', '"_dp', { noremap = true, silent = true }) vim.api.nvim_set_keymap('x', 'E', ":move '<-2gv-gv", { noremap = true, silent = true }) vim.api.nvim_set_keymap('x', 'N', ":move '>+1gv-gv", { noremap = true, silent = true }) vim.api.nvim_set_keymap('n', '', 'z=1', { noremap = true, silent = true }) -- vim.api.nvim_set_keymap( -- 'n', -- 'lf', -- 'lua vim.lsp.buf.format { async = true }', -- { noremap = true, silent = true } -- ) -- }}} -- vim.api.nvim_set_keymap("n", "", "", { noremap = true, silent = true }) vim.api.nvim_set_keymap('n', '', ':', { noremap = true }) vim.api.nvim_set_keymap('n', ';', ':', { noremap = true }) vim.api.nvim_set_keymap('n', 'rs', ':s///gI', { noremap = true }) vim.api.nvim_set_keymap('n', 'rr', ':%s///gI', { noremap = true }) vim.api.nvim_set_keymap('v', 'r', ':s///gI', { noremap = true }) vim.api.nvim_set_keymap('n', 'xl', 'TroubleToggle loclist', { silent = true, noremap = true }) vim.api.nvim_set_keymap('n', 'xq', 'TroubleToggle quickfix', { silent = true, noremap = true }) vim.api.nvim_set_keymap('n', 'gR', 'TroubleToggle lsp_references', { silent = true, noremap = true }) vim.api.nvim_set_keymap('n', 'xx', 'TroubleToggle', { silent = true, noremap = true }) vim.api.nvim_set_keymap( 'n', 'xw', 'TroubleToggle workspace_diagnostics', { silent = true, noremap = true } ) vim.api.nvim_set_keymap( 'n', 'xd', 'TroubleToggle document_diagnostics', { silent = true, noremap = true } ) vim.api.nvim_set_keymap('n', 'D', '"_d', { noremap = true }) function MapDHM() vim.api.nvim_set_keymap('n', 'i', 'l', { noremap = true }) vim.api.nvim_set_keymap('n', 'n', 'j', { noremap = true }) vim.api.nvim_set_keymap('n', 'e', 'k', { noremap = true }) vim.api.nvim_set_keymap('v', 'l', 'i', { noremap = true }) vim.api.nvim_set_keymap('v', 'i', 'l', { noremap = true }) vim.api.nvim_set_keymap('v', 'n', 'j', { noremap = true }) vim.api.nvim_set_keymap('v', 'e', 'k', { noremap = true }) vim.api.nvim_set_keymap('n', 'l', 'i', { noremap = true }) vim.api.nvim_set_keymap('n', 'N', 'J', { noremap = true }) vim.api.nvim_set_keymap('n', 'j', 'n', { noremap = true }) vim.api.nvim_set_keymap('n', 'J', 'N', { noremap = true }) vim.api.nvim_set_keymap('n', '', 'I', { noremap = true }) end function UnMapDHM() vim.api.nvim_del_keymap('n', 'l') vim.api.nvim_del_keymap('n', 'j') vim.api.nvim_del_keymap('v', 'l') vim.api.nvim_del_keymap('v', 'j') vim.api.nvim_del_keymap('v', 'k') vim.api.nvim_del_keymap('n', 'i') vim.api.nvim_del_keymap('n', 'J') vim.api.nvim_del_keymap('n', 'n') vim.api.nvim_del_keymap('n', 'N') end if os.getenv 'SSH_TTY' then MapDHM() else local handle = io.popen 'lsusb | grep -c Sofle' if handle == nil then return end local automap = handle:read '*n' handle:close() if automap == 1 then MapDHM() end end local wk = require 'which-key' -- which-key {{{ wk.setup { plugins = { marks = true, -- shows a list of your marks on ' and ` registers = true, -- shows your registers on " in NORMAL or in INSERT mode -- the presets plugin, adds help for a bunch of default keybindings in Neovim -- No actual key bindings are created presets = { operators = true, -- adds help for operators like d, y, ... motions = true, -- adds help for motions text_objects = false, -- help for text objects triggered after entering an operator windows = true, -- default bindings on nav = true, -- misc bindings to work with windows z = true, -- bindings for folds, spelling and others prefixed with z g = true, -- bindings for prefixed with g }, }, icons = { breadcrumb = '»', -- symbol used in the command line area that shows your active key combo separator = '➜ ', -- symbol used between a key and it's label group = '+', -- symbol prepended to a group }, window = { border = 'none', -- none, single, double, shadow position = 'bottom', -- bottom, top margin = { 1, 0, 1, 0 }, -- extra window margin [top, right, bottom, left] padding = { 1, 1, 1, 1 }, -- extra window padding [top, right, bottom, left] }, layout = { height = { min = 4, max = 25 }, -- min and max height of the columns width = { min = 20, max = 50 }, -- min and max width of the columns spacing = 3, -- spacing between columns }, hidden = { '', '', '', '', 'call', 'lua', '^:', '^ ' }, -- hide mapping boilerplate show_help = true, -- show help message on the command line when the popup is visible } local opts = { mode = 'n', -- NORMAL mode prefix = '', buffer = nil, -- Global mappings. Specify a buffer number for buffer local mappings silent = true, -- use `silent` when creating keymaps noremap = true, -- use `noremap` when creating keymaps nowait = false, -- use `nowait` when creating keymaps } -- }}} -- leader mappings {{{ -- TODO create entire treesitter section local mappings = { [''] = { function() require('buffer_manager.ui').toggle_quick_menu() end, 'Buffers', }, ['.'] = { 'Oil', 'Oil' }, ['f'] = { 'e ~/.config/nvim/ ', 'Neovim config' }, ['rr'] = 'Search and replace all', ['rs'] = 'Search and replace', ['b'] = { function() require('buffer_manager.ui').toggle_quick_menu() end, 'List buffers', }, ['n'] = { function() require('buffer_manager.ui').nav_next() end, 'Next buffer', }, ['p'] = { function() require('buffer_manager.ui').nav_prev() end, 'Previous buffer', }, ['h'] = { 'TSBufToggle highlight', 'Enable TS highlight' }, ['1'] = { function() require('buffer_manager.ui').nav_file(1) end, 'Buffer 1', }, ['2'] = { function() require('buffer_manager.ui').nav_file(2) end, 'Buffer 2', }, ['3'] = { function() require('buffer_manager.ui').nav_file(3) end, 'Buffer 3', }, ['4'] = { function() require('buffer_manager.ui').nav_file(4) end, 'Buffer 4', }, ['5'] = { function() require('buffer_manager.ui').nav_file(5) end, 'Buffer 5', }, ['g'] = { 'Neogit', 'Neogit' }, l = { name = 'LSP', f = { 'lua vim.lsp.buf.format { async = true }', 'Format' }, e = { 'Lazy load null-ls.nvim', 'Enable null-ls' }, i = 'Lsp Info', a = 'Code action', j = 'Next diagnostic', k = 'Prev diagnostic', r = 'Rename', s = 'Signature Help', q = 'Set LocList', n = { 'Lazy load null-ls.nvim', 'Load Null Ls' }, }, [''] = { name = 'Tab', n = { 'tabnew', 'New' }, p = { 'tabp', 'Previous' }, d = { 'tabclose', 'Close' }, [''] = { 'tabnext', 'Next' }, ['1'] = { '1gt', 'Go to tab 1' }, ['2'] = { '2gt', 'Go to tab 2' }, ['3'] = { '3gt', 'Go to tab 3' }, ['4'] = { '4gt', 'Go to tab 4' }, ['5'] = { '5gt', 'Go to tab 5' }, ['6'] = { '6gt', 'Go to tab 6' }, ['7'] = { '7gt', 'Go to tab 7' }, ['8'] = { '8gt', 'Go to tab 8' }, ['9'] = { '9gt', 'Go to tab 9' }, }, w = { name = 'Window', v = { 'v', 'Vertical split' }, h = { 's', 'Horizontal split' }, }, } -- }}} wk.register(mappings, opts)