Предположим, у меня есть текст, который Fnord
выдернули раньше, и что мой курсор находится в B
строке:
M:mock(Baz)
Как я могу изменить текст внутри () с ранее выдернутым текстом?
В настоящее время я часто совершаю ошибку, выполняя:
di(
aka "delete inside ()"- SHIFT + P
все же, что снова оставляет мне точный текст, так как удаленный текст будет перемещен в реестр.
Я хочу иметь:
M:mock(Fnord)
cut-copy-paste
normal-mode
register
k0pernikus
источник
источник
0
регистр будет содержать последний дерганный текст.:h quote0
vi)p
. Это то же самое, что и в этом ответе, только сi)
текстовым объектом вместоw
текстового объекта,Ответы:
Вы можете использовать визуальный выбор, чтобы выделить текст для замены, а затем вставить его следующим образом:
vi(p
vi(
выбирает Baz (потому что он заключен в скобки),p
вставляет поверх него Fnord.Тем не менее, это приведет Baz к регистру после вставки, что может быть не тем, что вы хотите.
источник
Если вы не укажете регистр,
p
(илиP
) будет использовать последний заполненный регистр. Безымянный регистр""
содержит самый последний восстановленный или удаленный текст (если не был указан другой регистр, например, с помощью"ay
), но он также"0
применяется для янки или"1
для удаления / изменения. Смотрите регистры .Если последний текст был вырван с помощью,
y
вы можете вставить его из0
реестра с помощью"0P
. Если он был удален, вы можете получить к нему доступ с помощью2
регистра"2P
("1
сейчасBaz
).В качестве альтернативы вы можете избежать путаницы с вашими регистрами и удалить их в регистр blackhole
"_
:источник
Если установка плагинов является опцией, вы можете использовать yankstack.vim . Тогда вы можете сохранить текущий рабочий процесс:
источник
Предполагая, что «Fnord» находится в регистре, который вы можете сделать (с курсором в начале строки)
f(ci(<c-r>a
источник