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


9

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

M:mock(Baz)

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

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

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

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

Я хочу иметь:

M:mock(Fnord)


1
@Rich Приведенный вопрос охватывает более общий случай замены дерганного слова. Я думаю, что этот вопрос немного более конкретен и не привлекает одинаковых ответов.
k0pernikus

Подсказка: 0регистр будет содержать последний дерганный текст. :h quote0
Питер Ринкер

1
Та же идея из принятого ответа на упомянутый вопрос может быть применена здесь. С курсором в скобках просто нажмите vi)p. Это то же самое, что и в этом ответе, только с i)текстовым объектом вместо wтекстового объекта,
EvergreenTree

1
@ k0pernikus Боюсь, нам придется согласиться с этим не согласиться. Для меня важной частью обоих вопросов является замена, а не текстовый объект, используемый для его применения.
Рич

Ответы:


13

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

vi(p

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

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


10

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

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

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

"_di(P

3

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

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.