On 19-Dec-2011 13:07, Дмитрий Франк wrote:

> line2byte() does not care multi-byte characters.
> 
> For example, if my buffer has file-encoding utf-8, and there's some
> cyrillic characters in the buffer (each cyrillic charater takes 2
> bytes), then line2byte('.') returns wrong result (it doesn't care
> about multi-byte characters)

As stated in the help, line2byte() is about byte indexes, not character counts,
like many other Vim functions (stridx(), strlen(), etc.) You have to convert to
a character count yourself:

    let cnt = strchars(str) " new in Vim 7.3
    let cnt = strlen(substitute(str, '.', 'x', 'g'))
This seems to be much faster for long strings:
    let cnt = len(split(str, '\zs'))

-- regards, ingo

-- 
You received this message from the "vim_dev" 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

Raspunde prin e-mail lui