Я знаю, как скопировать слово, но я, кажется, переписываю то, что находится в моем буфере обмена, потому что, когда я пытаюсь скопировать слово, он, похоже, не работает.
Чтобы скопировать слово:
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