Vim Tips Wiki
(+ 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, 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.
+
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 <code>^X^L</code> anytime on the command-line even in the middle of typing a new command. In normal mode you can always use <code>^L</code> directly so this is not needed, if you enter Ex mode through <code>gQ</code> command ({{help|gQ}}), you can use this to quickly redraw the screen.
+
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==
 
== <code>GetVimCmdOutput()</code> from genutils.vim <small><small>(2.5, released 2009-09-17, still most current as of 2014-01-08)</small></small> ==
+
<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)
function! genutils#GetVimCmdOutput(cmd)
 
  +
" adapted from genutils.vim 2.5 ( http://www.vim.org/scripts/script.php?script_id=197 )
 
function! GetVimCmdOutput(cmd)
 
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

Tip 952 Printable Monobook Previous Next

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')

Comments[]