Как заменить текст внутри () с ранее выдернутым текстом?

9

Предположим, у меня есть текст, который Fnordвыдернули раньше, и что мой курсор находится в Bстроке:

M:mock(Baz)

Как я могу изменить текст внутри () с ранее выдернутым текстом?

В настоящее время я часто совершаю ошибку, выполняя:

  • di( aka "delete inside ()"
  • SHIFT + P

все же, что снова оставляет мне точный текст, так как удаленный текст будет перемещен в реестр.

Я хочу иметь:

M:mock(Fnord)
k0pernikus
источник
1
@Rich Приведенный вопрос охватывает более общий случай замены дерганного слова. Я думаю, что этот вопрос немного более конкретен и не привлекает одинаковых ответов.
k0pernikus
Подсказка: 0регистр будет содержать последний дерганный текст. :h quote0
Питер Ринкер
1
Та же идея из принятого ответа на упомянутый вопрос может быть применена здесь. С курсором в скобках просто нажмите vi)p. Это то же самое, что и в этом ответе, только с i)текстовым объектом вместо wтекстового объекта,
EvergreenTree
1
@ k0pernikus Боюсь, нам придется согласиться с этим не согласиться. Для меня важной частью обоих вопросов является замена, а не текстовый объект, используемый для его применения.
Рич

Ответы:

13

Вы можете использовать визуальный выбор, чтобы выделить текст для замены, а затем вставить его следующим образом:

vi(p

vi(выбирает Baz (потому что он заключен в скобки), pвставляет поверх него Fnord.

Тем не менее, это приведет Baz к регистру после вставки, что может быть не тем, что вы хотите.

Alex
источник
10

Если вы не укажете регистр, p(или P) будет использовать последний заполненный регистр. Безымянный регистр ""содержит самый последний восстановленный или удаленный текст (если не был указан другой регистр, например, с помощью "ay), но он также "0применяется для янки или "1для удаления / изменения. Смотрите регистры .

Если последний текст был вырван с помощью, yвы можете вставить его из 0реестра с помощью "0P. Если он был удален, вы можете получить к нему доступ с помощью 2регистра "2P( "1сейчас Baz).

В качестве альтернативы вы можете избежать путаницы с вашими регистрами и удалить их в регистр blackhole"_ :

"_di(P
Стив
источник
3

Если установка плагинов является опцией, вы можете использовать yankstack.vim . Тогда вы можете сохранить текущий рабочий процесс:

В настоящее время я часто совершаю ошибку, выполняя:

  • ди (иначе "удалить внутри ()"
  • SHIFT + P
  • Alt + p - цикл до предыдущего рывка
mMontu
источник
1

Предполагая, что «Fnord» находится в регистре, который вы можете сделать (с курсором в начале строки) f(ci(<c-r>a

Кристиан Брабандт
источник