Как вставить функцию в слово, чтобы обернуть его? (ВИМ) - PullRequest
1 голос
/ 24 февраля 2012

Можно ли нажать на функцию и вставить ее в слово, чтобы оно приняло это слово в качестве параметра?Например, если у меня есть

def foo(name):
    pass

"John"

Есть ли способ вставить foo на "John", чтобы получить foo("John")

Ответы [ 2 ]

2 голосов
/ 24 февраля 2012

Конечно. Вы можете использовать макросы, подобные этим:

Yank:  <Esc>`<"ayf(f)"by`>
Paste: B"aPE"bp

Позволяет развернуть их. Макрос Yank предполагает, что у вас выбрана функция, и выполняет следующие действия:

  1. <Esc> - отменить текущий выбор
  2. `< - перейти к началу последнего выбора
  3. "ayf( - вернуть текст до и включая открывающую скобку в регистр "a"
  4. f) - перейти к закрывающей скобке
  5. "by'> - вытянуть все до конца последнего выбора в регистр "b"

Макрос Paste намного проще:

  1. B - перейти к началу текущего слова
  2. "aP - вставить содержимое регистра "a" перед текущей позицией
  3. E - перейти к концу текущего слова
  4. "bp вставить содержимое регистра "b" после текущей позиции
0 голосов
/ 24 февраля 2012

Если это одна вещь, вы можете просто использовать макрос:

:map q 0ifoo(^vESCA)^vESC

Просто нажмите «q» в каждой строке, которую вы хотите изменить. Если слово само по себе не в строке, вам нужно быть немного умнее.

...