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 <SID>insert_gates() nnoremap <space> za vnoremap <silent> . :normal .<CR> -nnoremap q: :q -nnoremap <leader>: q: +"nnoremap q: :q +"nnoremap <leader>: q: +nnoremap <silent> q :<C-u>call <SID>SmartQ()<CR> +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 <Left> <C-w>h map <Down> <C-w>j