Как заменить слово под курсором в скрипте vim? - PullRequest
3 голосов
/ 23 декабря 2011

После получения текущего слова с помощью expand("<cWORD>") и обработки строки результата я пытаюсь заменить текущее слово на него.

Как я могу это сделать?

РЕДАКТИРОВАТЬ Источник добавлен.Я написал это на Python.

cur_word = vim.eval('expand("<cWORD>")')
parts = cur_word.split('.')
if parts:
    obj, accesses = parts[0], parts[1:]
    result = obj + ''.join("['%s']"%a for a in accesses)
    # how do I replace the current word with result?

Ответы [ 2 ]

4 голосов
/ 23 декабря 2011

Редактировать

Похоже, вы хотели это:

viW
:s/\%V\.\(\w\+\)\%V/\="['" . submatch(1) . "']"/g

Например, для следующего текста, curosr во второй строке:

x = a.get.property;
x = a.git.another.property;   # cursor on the first letter 'e'

Результат будет

x = a.get.property;
x = a['git']['another']['property'];

Вы, вероятно, хотели вас

  1. дергай одно слово , затем
  2. переместить курсор (о котором вы не упоминаете)
  3. _заменить слово под курсором на предыдущее слово?

Это было бы

у я W (переместить курсор вокруг) v я W р

Так, например ::1010 *

 the lazy cow mooned over the racy hump
 cursor here:   ----> +        

Теперь выполняем y i W (дергать внутреннее СЛОВО), F a (назад к :)

 the lazy cow mooned over the racy hump
  --> +        

Теперь v i W p заменяет текущее WORD:

 the over cow mooned over the racy hump
    --> +
2 голосов
/ 23 декабря 2011

В интерфейсе Python для Vim вы можете выполнить команду обычного режима, в вашем случае,

  vim.command("normal BcW%s" % result)

сделает свое дело.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...