-- Eryn Wells local map = vim.keymap.set local function init_key_options() vim.g.mapleader = "," end local function text_navigation_mappings() local options = { noremap = true } -- Navigate by soft-wrapped lines using Alt/Option/Meta + jk map({'n', 'v'}, '', 'gk', options) map({'n', 'v'}, '', 'gj', options) end local function clipboard_mappings() if not vim.fn.has('gui_running') then return end local options = { noremap = true } -- Copy to the system clipboard map('v', '', '"+y', options) -- Cut to the system clipboard map('v', '', '"+x', options) -- Paste from the system clipboard map({'i', 'v'}, '', '"+p', options) end local function window_key_mappings() local options = { silent = true } -- Allow starting commands with ; instead of typing Shift-;. Save lots of keypresses! map('n', ';', ':') map('n', '', 'h', options) map('n', '', 'j', options) map('n', '', 'k', options) map('n', '', 'l', options) map('n', '', ':bn', options) map('n', '', ':bp', options) map('n', '', function() vim.cmd [[ setlocal invhlsearch ]] end, options) end -- -- Language Server mappings -- local function diagnostic_mappings() local options = { noremap=true, silent=true } -- Basic diagnostic mappings, these will navigate to or display diagnostics map('n', 'd', vim.diagnostic.open_float, options) map('n', '[d', vim.diagnostic.goto_prev, options) map('n', ']d', vim.diagnostic.goto_next, options) map('n', 'q', vim.diagnostic.setloclist, options) end local function local_lsp_mappings(buffer_number) local options = { noremap=true, silent=true, buffer=buffer_number } map('n', 'ga', vim.lsp.buf.code_action, options) map('n', 'gD', vim.lsp.buf.declaration, options) map('n', 'gd', vim.lsp.buf.definition, options) map('n', 'gk', vim.lsp.buf.hover, options) map('n', 'gi', vim.lsp.buf.implementation, options) map('n', 'gK', vim.lsp.buf.signature_help, options) map('n', '', function() vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled({})) end, options) map('n', 'D', vim.lsp.buf.type_definition, options) map('n', 'rn', vim.lsp.buf.rename, options) map('n', 'ca', vim.lsp.buf.code_action, options) map('n', 'gr', vim.lsp.buf.references, options) -- Replace W in .vimrc.common map('n', 'W', function() vim.lsp.buf.format { async = true } end, options) end local function telescope_mappings() local builtin = require('telescope.builtin') map('n', 'ff', builtin.find_files, { desc = 'Telescope find files' }) map('n', 'fg', builtin.live_grep, { desc = 'Telescope live grep' }) map('n', 'fb', builtin.buffers, { desc = 'Telescope buffers' }) map('n', 'fh', builtin.help_tags, { desc = 'Telescope help tags' }) if vim.fn.has('gui_running') then map('n', 'D-O', builtin.buffers, { desc = 'Open existing' }) end end local function init_all_global_keybindings() init_key_options() clipboard_mappings() window_key_mappings() text_navigation_mappings() diagnostic_mappings() telescope_mappings() end return { init = init_all_global_keybindings, init_lsp_key_mappings = local_lsp_mappings, }