2011-12-23 3 views
2

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

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

EDIT Источник добавлен. Я написал его в 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? 
+0

Huh. Вы пытаетесь заменить текущее слово на себя? У вас есть пример? – sehe

+0

@sehe Я имею в виду сохранение его после обработки. – satoru

+0

Обновленный мой ответ – sehe

ответ

1

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

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

будет делать трюк.

4

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

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

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. _replace слово под курсором, ранее дернутое слово?

Это было бы

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

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

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

Теперь, делая уяW (дергать внутренний WORD), F (обратно :)

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

Теперь viWр заменяет текущий СЛОВО:

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

просто заменил ваш y на v и +1, потому что это правильно. – Benoit

+0

Нет, я получаю содержимое слова под курсором и делаю что-то с ним (например, добавляю конечный «X»), а затем заменяю слово под курсором на это измененное содержимое. Я знаю, как это сделать в командном режиме, но я не знаю, как это сделать в функции. – satoru

+0

Обновлено мой ответ – sehe

Смежные вопросы