From daaf57d1b88eb9778fe4a99e77789e8e1afce77e Mon Sep 17 00:00:00 2001 From: Alexander Gehrke Date: Wed, 3 Feb 2021 11:41:26 +0100 Subject: [PATCH] Fix q: mapping breaking "recording ..." display Adapted from https://stackoverflow.com/questions/43654089/vim-mapping-q-only-when-not-recording --- init.vim | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/init.vim b/init.vim index c191f4e..8d9c932 100644 --- a/init.vim +++ b/init.vim @@ -123,8 +123,27 @@ autocmd BufNewFile *.{h,hpp} call insert_gates() nnoremap za vnoremap . :normal . -nnoremap q: :q -nnoremap : q: +"nnoremap q: :q +"nnoremap : q: +nnoremap q :call SmartQ() +function! s:SmartQ() + if exists("g:recording_macro") + let r = g:recording_macro + unlet g:recording_macro + normal! q + execute 'let @'.r.' = @'.r.'[:-2]' + else + let c = nr2char(getchar()) + if c == ':' + call feedkeys(":q") + else + if c =~ '\v[0-9a-zA-Z"]' + let g:recording_macro = c + endif + execute 'normal! q'.c + endif + endif +endfunction map h map j