Am 06.11.2011 20:22, schrieb Axel Bender:
Thanks for the replies!

The problem however isn't solved...

Having obtained the current byte index using col("."), I can't simply add n
to/subtract n from the return value of col(".") to find the beginning of
the next/previous multi-byte character (the -1 offset is ok because there's
a base bias).
I could use col(".") repeatedly but I would have to move the cursor
("normal l" or "normal h") beforehand.
Also, I could write a function that would analyze the UTF-8 header bits
("11110", "1110", "110", or "10") to determine the required position, but I
was hoping that there's another (easier) way to accomplish this.

Don't worry too much, you're not the first man on the Vim planet ;-)

Is there any function that lets me determine the byte position of the
beginning of the next/previous multi-byte character? I've seen none in the
docs...

Get the byte-position just after the match:
    :echo matchend(getline("."), ".", col(".")-1)

Get a list of characters in the current line:
    :echo split(getline("."), '\zs')

Get a list of characters in the line, starting at the cursor position:
    :echo split(strpart(getline("."), col(".")-1), '\zs')

--
Andy

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