Копирование слова и вставка слова - PullRequest
18 голосов
/ 17 октября 2011

Я знаю, как скопировать слово, но, похоже, я перезаписываю то, что находится в моем буфере обмена, потому что, когда я пытаюсь скопировать слово, оно, похоже, не работает.

Чтобы скопировать слово:

bye

Как скопировать слово?

Ответы [ 7 ]

23 голосов
/ 17 октября 2011

Возможно, вы просто хотите сделать это:

viwp

, который визуально выберет новое слово и вставит его.

Теперь, если вы не хотите потерять свой регистр при этом, вы также можете вставить свой vimrc:

xnoremap p pgvy
4 голосов
/ 18 октября 2011

Скопируйте слово как обычно (например, с yiw) и используйте

viw"0p

, чтобы вставить слово. Поскольку команда p в визуальном режиме (см. :help v_p) не изменяет пронумерованный регистр 0, содержащий текст наиболее недавняя команда yank, одно и то же скопированное слово можно вставлять снова и снова.

2 голосов
/ 19 октября 2011

Сделайте это один раз:

ciw<C-r>0

Затем для замены слов всегда используйте набранный вами текст:

.

Выможно использовать поиск с ним так:

/foo<Cr>

.n.n.n

Это работает, потому что:

ciw заменяет внутреннее слово и

<C-r>0 использует последний замененный регистр для его замены, который затем использует ..

К сожалению, это не работает, если вы визуально выделяете текст, который хотите заменить и использовать ..

Обратите внимание, что если вы изначально использовали визуальное выделение для выбора текста для замены и сделали c<C-r>0, то после этого . заменит ту же длину символов, которая была включена в визуальное выделение.

1 голос
/ 17 октября 2011

Когда вы удаляете слово, оно помещается в регистр ", который является регистром по умолчанию для вставки, поэтому при удалении слова, которое вы хотите заменить, оно займет место предыдущего слова в регистре ". Однако предыдущее слово будет в регистре 0, предыдущее слово в 1 и т. Д. - вы можете в любое время увидеть это, набрав :reg и увидеть содержимое регистров. Таким образом, чтобы заменить слово, вы можете сначала скопировать первое слово (yiw), затем «изменить» слово, которое вы хотите заменить (ciw), а затем вставить из регистра 0, нажав ctrl-r, 0. (Вы также можете сначала удалить слово (diw), а затем вставить из регистра 0: "0p.

1 голос
/ 17 октября 2011

Вы можете использовать регистр 0, который содержит только что перезаписанный текст «буфера обмена».Например, вы можете вставить текст для вставки, поместить курсор где-нибудь в слово «пока» и набрать

ciw [cut in word;удаляет слово под курсором и переходит туда в режим вставки]

ctrl-r 0 [регистр 0;вставить текст из регистра 0]

Вы можете увидеть, что находится во всех регистрах с помощью :disp.Как говорит Daenyth, вы можете вставить в конкретный регистр команду "x [del / cut / yank] и вставить с помощью "xp из командного режима или ctrl-r x из вставки / замены.

1 голос
/ 17 октября 2011

Самое простое решение - сделать это наоборот: сначала вставьте новое слово, затем удалите старое.

0 голосов
/ 17 октября 2011

Вы можете y ank войти в регистр, добавив к нему "a (где a - имя регистра). Смотрите Как использовать vim регистры

b"aye

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...