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