# HG changeset patch # User zegervdv # Date 1641734830 -3600 # Node ID f845e2eba7e347b9b1d7bb7adf4f9e9916f12d00 # Parent d919c1590230c27e293c8ea5aa6d30e896f558f6 Use new keymap lua function to set keymaps diff -r d919c1590230 -r f845e2eba7e3 .chezmoitemplates/config.vim --- a/.chezmoitemplates/config.vim Sun Jan 09 14:26:16 2022 +0100 +++ b/.chezmoitemplates/config.vim Sun Jan 09 14:27:10 2022 +0100 @@ -38,79 +38,10 @@ " " Mappings -" Set leader to spacebar -map - -" See long lines as line breaks -noremap j (v:count? 'j' : 'gj') -noremap k (v:count? 'k' : 'gk') - -" Remap tag-search to better place -nnoremap g -nnoremap y g - -nnoremap - -" Move while in insert mode -inoremap - -" Switch between the last two files -" nnoremap - -" " Very Magic search patterns -nnoremap / /\v -vnoremap / /\v - -" Keep search matches in the middle of the window. -nnoremap n nzzzv -nnoremap N Nzzzv - -" Search for beginning of command -cnoremap -cnoremap - -" Move whole lines -nnoremap [e :execute 'move -1-'. v:count1 -nnoremap ]e :execute 'move +'. v:count1 - -" Insert empty lines -nnoremap [ :put! =repeat(nr2char(10), v:count1)'[ -nnoremap ] :put =repeat(nr2char(10), v:count1) - -" Clear highlight -nnoremap l :noh - -inoremap £ \ - -" Highlight last inserted text -nnoremap gV `[v`] " Highlight VCS conflict markers match ErrorMsg '^\(<\|=\|>\)\{7\}\([^=].\+\)\?$' -" Use backspace as delete in visual mode -vmap x - -" Redraw screen -nnoremap :redraw! - -" Keep selection when shifting -vmap > KeepVisualSelection(">") -vmap < KeepVisualSelection("<") - -function! KeepVisualSelection(cmd) - set nosmartindent - if mode() ==# "V" - return a:cmd . ":set smartindent\gv" - else - return a:cmd . ":set smartindent\" - endif -endfunction - -" Swap backticks and quotes -nnoremap ` ' -nnoremap ' ` - " Do not move on * nnoremap * :let stay_star_view = winsaveview()*:call winrestview(stay_star_view) diff -r d919c1590230 -r f845e2eba7e3 .chezmoitemplates/init.lua --- a/.chezmoitemplates/init.lua Sun Jan 09 14:26:16 2022 +0100 +++ b/.chezmoitemplates/init.lua Sun Jan 09 14:27:10 2022 +0100 @@ -214,14 +214,6 @@ end, } - -- Keymaps TODO: to be removed when #13823 is merged - use { - 'tjdevries/astronauta.nvim', - config = function() - require 'astronauta.keymap' - end, - } - -- Opening files use { 'wsdjeg/vim-fetch' } @@ -266,14 +258,14 @@ config = function() require('Navigator').setup { auto_save = 'current', disable_on_zoom = true } - local nnoremap = vim.keymap.nnoremap - nnoremap { '', require('Navigator').left, silent = true } - nnoremap { '', require('Navigator').down, silent = true } - nnoremap { '', require('Navigator').up, silent = true } - nnoremap { '', require('Navigator').right, silent = true } + local nmap = function(lhs, rhs, opts) + return vim.keymap.set('n', lhs, rhs, opts) + end + nmap('', require('Navigator').left, { silent = true }) + nmap('', require('Navigator').down, { silent = true }) + nmap('', require('Navigator').up, { silent = true }) + nmap('', require('Navigator').right, { silent = true }) end, - requires = 'tjdevries/astronauta.nvim', - after = 'astronauta.nvim', } -- Completion/snippets/LSP @@ -709,6 +701,62 @@ [[substitute(getline(v:foldstart),'\\t',repeat('\ ',&tabstop),'g').'...'.trim(getline(v:foldend)) . ' (' . (v:foldend - v:foldstart + 1) . ' lines)']] opt.foldenable = false +-- Clean up terminal codes from strings +local t = function(str) + return vim.api.nvim_replace_termcodes(str, true, true, true) +end + +-- General keymaps +local map = vim.keymap.set + +-- Set leader to space +map({ 'n', 'v', 'i', 'x' }, '', '', { remap = true }) + +-- Move while in insert mode +map('i', '', '') + +-- Keep search matches centered +map('n', 'n', 'nzzzv') +map('n', 'N', 'Nzzzv') + +-- Very magic search patterns +map({ 'n', 'v' }, '/', '/\\v') + +-- Move through long lines as breaks +map('n', 'j', '(v:count ? "j" : "gj")', { expr = true }) +map('n', 'k', '(v:count ? "k" : "gk")', { expr = true }) + +-- Command line search for commands +map('c', '', '') +map('c', '', '') + +-- Clear highlighs +map('n', 'l', 'noh', { silent = true }) + +-- Reselect last selection +map('n', 'gV', '`[v`]') + +-- Use backspace as normal in visual mode +map('v', '', 'x', { remap = true }) + +-- Keep selection when indenting +local keep_visual_selection = function(cmd) + return function() + vim.opt.smartindent = false + if vim.fn.mode() == 'V' then + return cmd .. t ':set smartindentgv' + else + return cmd .. t ':set smartindent' + end + end +end +map('v', '>', keep_visual_selection '>', { expr = true, silent = true, desc = 'Indent right while keeping selection' }) +map('v', '<', keep_visual_selection '<', { expr = true, silent = true, desc = 'Indent left while keeping selection' }) + +-- Swap backticks and quotes +map('n', '`', "'") +map('n', "'", '`') + local au = require 'au' -- Highlight yanked text @@ -756,38 +804,38 @@ local null_ls = require 'null-ls' local on_attach = function(client) - local nnoremap = vim.keymap.nnoremap - local inoremap = vim.keymap.inoremap + local map = vim.keymap.set + local nmap = function(lhs, rhs, opts) + return vim.keymap.set('n', lhs, rhs, opts) + end if client.resolved_capabilities.goto_definition == true then vim.bo.tagfunc = 'v:lua.vim.lsp.tagfunc' - nnoremap { 'gp', require('goto-preview').goto_preview_definition, silent = true, buffer = 0 } - nnoremap { 'gP', require('goto-preview').close_all_win, silent = true, buffer = 0 } + nmap('gp', require('goto-preview').goto_preview_definition, { silent = true, buffer = 0 }) + nmap('gP', require('goto-preview').close_all_win, { silent = true, buffer = 0 }) end - nnoremap { 'gd', vim.lsp.buf.declaration, silent = true, buffer = 0 } - nnoremap { 'K', vim.lsp.buf.hover, silent = true, buffer = 0 } - nnoremap { 'gD', vim.lsp.buf.implementation, silent = true, buffer = 0 } - nnoremap { '1gD', vim.lsp.buf.type_definition, silent = true, buffer = 0 } - nnoremap { 'gr', vim.lsp.buf.references, silent = true, buffer = 0 } - nnoremap { 'g0', vim.lsp.buf.document_symbol, silent = true, buffer = 0 } + nmap('gd', vim.lsp.buf.declaration, { silent = true, buffer = 0 }) + nmap('K', vim.lsp.buf.hover, { silent = true, buffer = 0 }) + nmap('gD', vim.lsp.buf.implementation, { silent = true, buffer = 0 }) + nmap('1gD', vim.lsp.buf.type_definition, { silent = true, buffer = 0 }) + nmap('gr', vim.lsp.buf.references, { silent = true, buffer = 0 }) + nmap('g0', vim.lsp.buf.document_symbol, { silent = true, buffer = 0 }) if client.resolved_capabilities.document_formatting == true then - nnoremap { - '', - function() - vim.lsp.buf.formatting_sync({}, 5000) - end, + nmap('', function() + vim.lsp.buf.formatting_sync({}, 5000) + end, { silent = true, buffer = 0, - } + }) end if client.resolved_capabilities.document_range_formatting == true then vim.bo.formatexpr = 'v:lua.vim.lsp.formatexpr()' end - inoremap { '', vim.lsp.buf.signature_help, silent = true, buffer = 0 } + map('i', '', vim.lsp.buf.signature_help, { silent = true, buffer = 0 }) vim.lsp.handlers['textDocument/hover'] = vim.lsp.with(vim.lsp.handlers.hover, { border = 'single' }) vim.lsp.handlers['textDocument/signatureHelp'] = vim.lsp.with(vim.lsp.handlers.hover, { border = 'single' })