Когда мне нужно заменить слово другим словом, которое я раньше дергал, я обычно использую рабочий процесс, который мне кажется неестественным:
Допустим, у меня есть этот текст:
foo bar buzz
И я хочу дернуть foo
и заменить bar
тем, что я дергал раньше.
После дергания foo
я вижу следующие варианты:
Опция 1
Поместите курсор на
bar
сw
Положите
foo
передbar
сP
Наведите курсор на
b
оставшеесяbar
и удалите слово с помощьюde
Вариант 2
Поместите курсор на панель с
w
Используйте,
de
чтобы стеретьbar
Поместить содержимое регистра 0 с
"0P
(так как я стерbar
,foo
больше не доступен с простымp
)
Оба способа кажутся мне слишком сложными, и я уверен, что есть более эффективный способ добиться этого, но я не могу найти, как это сделать. Эта идея состояла бы в том, чтобы объединить действия удаления и ввода только в одном или, по крайней мере, избежать сохранения удаленного слова в регистре янки, чтобы я мог поместить желаемое слово простым p
.
Также я знаю режим замены, вызванный, R
но он не позволяет поставить то, что было выдернуто.
TL; DR : Как заменить слово содержимым янки?
источник
Я нашел другой способ сделать это, он немного похож на вариант 2, но имеет то преимущество, что не портит состояние регистров.
Идея состоит в том, чтобы использовать « регистр черной дыры »: этот регистр доступен через
"_
и имеет особенности, которые вы можете записывать в него, но не читать из него, поэтому, подобно черной дыре, этот регистр полностью пропускает все, что попадает в него. Здесь мы можем использовать его, чтобыfoo
оставаться в реестре янки даже послеbar
удаления.При таком решении рабочий поток после восстановления
foo
будет:bar
сW
(или любое нужное слово, конечно)bar
с"_de
foo
из янки, регистрируюсь сP
. Регистр янки все еще содержит,foo
так какbar
вошел в черную дыру.Я не уверен, что это лучшее решение, чем у @ Carpersmoker ( с точки зрения победы vimgolf @Carpetsmoker ), но я не знал о регистре черной дыры, и я подумал, что некоторые могут быть заинтересованы в этом.
источник
Перейти к началу "Foo". Нажмите
yiw
. Это дергает внутреннее слово.Идем в «бар» нажатием на букву
w
. Затем выберите его и верните назад:viw"0p
Я пользуюсь
ciw
иyiw
много.источник
iw
интересного, но ваше решение на самом деле такое же, как у @ CarpetSmoker: визуально выберите второе слово и поместите первое. Я также думаю, что ваше решение будет работать с простымp
вместо использования"0
регистра.Когда курсор находится в любом месте слова,
yiw
- восстановить слово и сохранить его в0
реестре.Перейти к целевому слову для замены
ciw
удалит слово и переведет вас в режим вставки.ctrl-r
,"
Появится попросив регистр , который будет вызван.0
вставит дерганное слово.Набранные слова (обычно!) Хранятся в
0
регистре. Смотрите,:registers
чтобы просмотреть сохраненные буферы. Это может показаться длительной процедурой, ИМХО это открывает путь к гораздо более сложным приемам регистрации.источник