(+ GetVimCmdOutput() code; etc.) |
m (→GetVimCmdOutput() from genutils.vim: +comments, shorthand Exe()) |
||
(4 intermediate revisions by 2 users not shown) | |||
Line 12: | Line 12: | ||
|category2= |
|category2= |
||
}} |
}} |
||
− | If you are using command line completion while showing matches (^D etc), often |
+ | If you are using command line completion while showing matches (<kbd>^D</kbd> 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|id=197}} plugin or just copy paste the GetVimCmdOutput() function into your vimrc, and create the following cmap: |
+ | Install the genutils.vim {{script|id=197}} plugin or just copy paste the <code>GetVimCmdOutput()</code> function into your vimrc, and create the following cmap: |
<source lang="vim"> |
<source lang="vim"> |
||
cnoremap <C-X><C-L> <C-R>=GetVimCmdOutput('redraw')<CR> |
cnoremap <C-X><C-L> <C-R>=GetVimCmdOutput('redraw')<CR> |
||
</source> |
</source> |
||
− | You can now type < |
+ | You can now type <kbd>^X^L</kbd> anytime on the command-line even in the middle of typing a new command. In normal mode you can always use <kbd>^L</kbd> directly so this is not needed, if you enter Ex mode through <kbd>gQ</kbd> command ({{help|gQ}}), you can use this to quickly redraw the screen. |
+ | ==GetVimCmdOutput() from genutils.vim== |
||
− | |||
− | + | <small><small>(This function was minimally adapted from version 2.5 of genutils.vim, released 2009-09-17, still most current as of 2014-01-08)</small></small> |
|
<source lang="vim"> |
<source lang="vim"> |
||
+ | " 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 ) |
||
⚫ | |||
let v:errmsg = '' |
let v:errmsg = '' |
||
let output = '' |
let output = '' |
||
Line 43: | Line 45: | ||
return output |
return output |
||
endfunction |
endfunction |
||
+ | " shorthand Exe() |
||
+ | let Exe=function('GetVimCmdOutput') |
||
</source> |
</source> |
||
Latest revision as of 15:25, 18 January 2014
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')