Шаблон редактирования, с которым я часто сталкиваюсь, заключается в следующем: я хочу вставить фрагмент текста в кавычки или скобки и заменить этот фрагмент текста в другой паре кавычек / скобок.
Например, если я хочу скопировать имя класса foo bar
и вставить его в другое место:
<span class="foo bar">
<div class="this-should-be-replaced-with-foo-and-bar">
Что я знаю, так это: если я перемещаюсь внутри класса диапазона, я использую, yi"
чтобы вытянуть текст внутри кавычек.
Теперь у меня есть это в моем реестре, поэтому я должен иметь возможность заменить содержимое класса div на него. Но я не могу найти удобный способ сделать это.
Если я использую ciw
это, это приводит к тому, что мой регистр перезаписывается содержимым для изменения, поэтому я теряю свой выдернутый текст.
Лучшее, что я могу придумать, это перейти к первой цитате класса div, нажать p
, а затем удалить до следующей цитаты dt"
.
Хотя обычно я облажаю свою позицию и вставляю ее где-то внутри кавычек, объединяющих две строки, и это все портит.
Я надеюсь, что есть какой-нибудь способ сделать комбинацию «замените внутренний текст на мой контент, пожалуйста», чтобы сделать это проще.
источник
Вы можете использовать пронумерованный регистр. Сначала дерните "foo-bar" с
yi"
, который заполнит"0
регистр, см:h "0
. Затем сделатьci"<c-r>0
для замены содержимого регистра 0.Смотрите
:h i_CTRL-R
описание последней части.источник
yi"
) и вставить его из реестра, в0
котором он хранится, после удаления текста в change (ci"<c-r>0
)? В терминах vimgolf вы выигрываете 2 нажатия клавиш и не путаетесь со своими регистрами.CTRL+r
раньшеa
, вот что<c-r>
значит.ciw
удаленный текст в неназванный регистр, но регистры сдвигаются, поэтому вы должны использовать<c-r>0
вместо<c-r>"
. См:h quote_number
."0
Регистр заполняется только командой копирования.Имя и не будет нарушена , напримерc
.Вот еще одно решение. Это не лучший в терминах Vimgolf, но он использует регистр черной дыры:
После того, как
foo bar
вы натянете веревку, вы можете потянуть ее, как обычноyi"
.Тогда внутри скобок поменять:
"_di"P
Который:
Преимущество регистра черной дыры состоит в том, что он не испортит ваши другие регистры. Смотрите
:h quote_
для более подробной информации.(Обратите внимание, что этот ответ только здесь, чтобы поговорить о регистре затемнения. Я лично использую визуальный отбор, как предложено @grodzik.)
источник
P
для этого. При наведенииdi"
ваш курсор останется на последних кавычках иp
будет вставлен после, где asP
будет вставлен перед текущей позицией.Мне нужно это так часто, я написал плагин для упрощения и обеспечения максимальной скорости: ReplaceWithRegister .
Этот плагин предлагает
gr
команду « два в одном», которая заменяет текст, охватываемый объектом {motion} / text, всей строкой (ами) или текущим выделением, содержимым регистра; старый текст удаляется в регистр черной дыры, т.е. Он прозрачно обрабатывает многие угловые случаи и позволяет быстро повторить с помощью стандартной.
команды. Если вам это не нравится, на его странице есть ссылки на альтернативы.источник