created 2005 · complexity basic · author hari_vim · version 6.0
If you are using command line completion while showing matches (^D etc.), often the display scrolls in such a way that at least part of the text in the buffers is not visible anymore. If you want to redraw the screen, you have the option of switching to the command-window, which will refresh the screen anyway, but the following shows a way to redraw the screen without needing to do that.
Install the genutils.vim script#197 plugin or just copy paste the GetVimCmdOutput()
function into your vimrc, and create the following cmap:
cnoremap <C-X><C-L> <C-R>=GetVimCmdOutput('redraw')<CR>
You can now type ^X^L anytime on the command-line even in the middle of typing a new command. In normal mode you can always use ^L directly so this is not needed, if you enter Ex mode through gQ command (:help gQ), you can use this to quickly redraw the screen.
GetVimCmdOutput() from genutils.vim[]
(This function was minimally adapted from version 2.5 of genutils.vim, released 2009-09-17, still most current as of 2014-01-08)
" function wrapper for :execute (an Ex command that runs Ex commands)
" adapted from genutils.vim 2.5 ( http://www.vim.org/scripts/script.php?script_id=197 )
function! GetVimCmdOutput(cmd)
let v:errmsg = ''
let output = ''
let _shortmess = &shortmess
try
set shortmess=
redir => output
silent exec a:cmd
catch /.*/
let v:errmsg = substitute(v:exception, '^[^:]\+:', '', '')
finally
redir END
let &shortmess = _shortmess
if v:errmsg != ''
let output = ''
endif
endtry
return output
endfunction
" shorthand Exe()
let Exe=function('GetVimCmdOutput')