Hi,

carlosp wrote:
> 
> Dear all, I would like to know if there is some non-baroque way of, when
> doing a selection of some text, set in the status line just the number of
> characters in the selection (and of course, when one modifies the selection,
> as moving the coursor in the visual mode) the status line should be updated
> automatically. The solutions that occurred to me involve using external
> commands (like wc -l) and then sending that to vim, each time I move the
> selection etc. Does anyone knows a clean way of doing such a thing? 

put the following function in your .vimrc or in a file named
~/.vim/plugin/VisualSelectionSize.vim

    function! VisualSelectionSize()
        if mode() == "v"
            " Exit and re-enter visual mode, because the marks
            " ('< and '>) have not been updated yet.
            exe "normal \<ESC>gv"
            if line("'<") != line("'>")
                return (line("'>") - line("'<") + 1) . ' lines'
            else
                return (col("'>") - col("'<") + 1) . ' chars'
            endif
        elseif mode() == "V"
            exe "normal \<ESC>gv"
            return (line("'>") - line("'<") + 1) . ' lines'
        elseif mode() == "\<C-V>"
            exe "normal \<ESC>gv"
            return (line("'>") - line("'<") + 1) . 'x' . (abs(col("'>") - 
col("'<")) + 1) . ' block'
        else
            return ''
        endif
    endfunction

and then change your 'statusline' option so that it contains

    %{VisualSelectionSize()}

at an appropriate place, e.g., with

    :set statusline.=%(\ %{VisualSelectionSize()}%)

you would append it to your current status line. The group %(...%) takes
care of removing the space if VisualSelectionSize() returns an empty
string when you are not in a visual mode.

Regards,
Jürgen

-- 
Sometimes I think the surest sign that intelligent life exists elsewhere
in the universe is that none of it has tried to contact us.     (Calvin)

-- 
You received this message from the "vim_use" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

Reply via email to