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