Hi,

Marc Weber write:
> You're hitting two problems:
> a) How to run a command and pass an args?
>   using exec. Exapmle:
>   exec "MyCommand ".arg1
>   You still have to quote spaces eg using substitute
> 
> b) How to get char under cursor. Sure, yanking works. But maybe you
>    don't want to change the registers. 
>   answer: 
>     getline('.')[col('.')-1]

you cannot use this getline()-expression reliably if encoding is set to
utf8 and your line contains non-ASCII characters, because getline()[i]
only returns *one* byte of a possible multi-byte sequence, e.g. with
this text

  123äöüabc

the commands

  let line = getline(1)

  for i in range(0, strlen(line) - 1)
    echo i . ': ' . line[i]
  endfor

prints

  0: 1
  1: 2
  2: 3
  3: <c3>
  4: <a4>
  5: <c3>
  6: <b6>
  7: <c3>
  8: <bc>
  9: a
  10: b
  11: c

In contrast, yanking the character under the cursor with

  normal yl

works correctly.

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.
For more information, visit http://www.vim.org/maillist.php
-~----------~----~----~----~------~----~------~--~---

Reply via email to