On 14-Mar-2010 17:49, Gregor Uhlenheuer wrote:
Hello,
I think the col() function does not work properly for lines with
apostrophe characters (`´).

:echo col([line('.'), '$']) returns 6 on the line below:

´foo

It should return 5 I think.

It depends on the encoding of the apostrophe character, as col() returns byte indices, not logical characters. You assume that the apostrophe uses only one byte, whereas it seems that it actually uses two bytes.

To investigate, check the 'encoding' and 'fileencoding' settings, and use the g8 command on the apostrophe character; it'll return the (UTF-8) byte sequence used to encode it. (This is a somewhat simplified explanation, it's a quite complex matter.)

For many scripting uses, Vim's byte-orientation makes it difficult to properly deal with multi-byte strings, but there are ways to cope. For example, to count the number of characters, use
    let len = strlen(substitute(str, ".", "x", "g"))

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