Я знаю, как скопировать слово, но я, кажется, переписываю то, что находится в моем буфере обмена, потому что, когда я пытаюсь скопировать слово, он, похоже, не работает.
Чтобы скопировать слово:
bye
Как скопировать слово?
Я знаю, как скопировать слово, но я, кажется, переписываю то, что находится в моем буфере обмена, потому что, когда я пытаюсь скопировать слово, он, похоже, не работает.
Чтобы скопировать слово:
bye
Как скопировать слово?
Возможно, вы просто хотите это сделать:
viwp
который будет визуально выбирать новое слово и вставлять его.
Теперь, если вы не хотите потерять свой реестр при этом, вы также можете добавить vimrc:
xnoremap p pgvy
Простое решение - сделать это наоборот: сначала вставьте новое слово, а затем удалите старый.
Вы можете использовать регистр 0, который содержит только что перезаписанный текст "буфер обмена". Для вашего примера вы можете вытащить текст для вставки, поместить курсор где-нибудь в слово "bye" и набрать
ciw [сокращение слова; удаляет слово под курсором и переходит в режим вставки]
ctrl-r 0 [register 0; вставить текст из регистра 0]
Вы можете видеть, что во всех регистрах с :disp. Как говорит Даенит, вы можете вырваться в конкретный регистр с помощью команды "x [del/cut/yank] и вставить с помощью "xp из командного режима или ctrl-r x из вставки/замены.
Когда вы удаляете слово, оно помещается в регистр ", который является регистром по умолчанию для вставки, поэтому, когда вы удаляете слово, которое хотите заменить, оно займет место предыдущего слова в регистре ". Однако предыдущее слово будет в регистре 0, раньше в 1 и т.д. - вы можете в любое время увидеть это, запустив :reg и просмотрите содержимое регистров. Итак, чтобы заменить слово, вы можете сначала скопировать первое слово (yiw), затем "изменить" слово, которое вы хотите заменить (ciw), а затем вставить из регистра 0, нажав ctrl-r, 0. (Вы также можете сначала удалить слово (diw), а затем вставить из регистра 0: "0p.
Скопируйте слово как обычно (например, yiw) и используйте
viw"0p
для вставки над словом. Поскольку команда p в визуальном режиме (см. :help v_p)
не меняет нумерованный регистр 0, содержащий текст из самых
недавняя команда yank, одно и то же скопированное слово может быть вставлено снова и снова.
Сделайте это один раз:
ciw<C-r>0
Затем, чтобы заменить слова, всегда используя текст, который вы дернули, выполните:
.
Вы можете использовать поиск следующим образом:
/foo<Cr>
.n.n.n
Это работает, потому что:
ciw заменяет внутреннее слово и
<C-r>0 использует последний зарегистрированный регистр для замены, который затем использует ..
К сожалению, это не работает, если вы визуально выбираете текст, который хотите заменить, и используйте ..
Обратите внимание, что если вы первоначально использовали визуальный выбор для выбора текста для замены и сделали c<C-r>0, то после этого . заменит ту же длину символов, что и в визуальном выборе.
Вы можете y ank в регистр, добавив его с помощью "a (где a - имя регистра). См. Как использовать регистры vim
b"aye