Вставить несколько раз - PullRequest
       12

Вставить несколько раз

76 голосов
/ 23 августа 2011

Как лучше всего заменить несколько строк содержимым буфера обмена?

Проблема, с которой я сталкиваюсь, заключается в том, что, когда я вытаскиваю строку и вставляю ее поверх другой строки, «yank» заменяется строкой, которую я просто заменяю. Теперь, если я хочу заменить другую строку той же самой строкой, я должен вернуться назад и снова дернуть ее.

Должен быть лучший способ сделать это.

Ответы [ 6 ]

94 голосов
/ 23 августа 2011

У меня есть это в моем .vimrc:

xnoremap p pgvy

(примечание: это будет работать только с регистром по умолчанию, но это отображение легко запомнить).Написание более сложной версии было бы возможно.Кроме того, вы все еще можете использовать P, чтобы получить старое поведение.

23 голосов
/ 23 августа 2011

"0 должен иметь содержимое вашего янки.Набирать текст немного сложнее, но "0p должен делать то, что вы хотите.

В качестве альтернативы, не выбирайте и не заменяйте старые строки заранее.Если вы находите эти строки с помощью поиска, просто нажмите n. снова и снова (после начального p), затем, когда они все вставлены, выполните ndd, а затем столько n., сколько необходимо.

Самое большое умственное изменение, которое мне нужно было сделать при переходе на Vim, - это выяснить, как применять групповые изменения последовательно.Т.е. вместо того, чтобы делать кучу правок в строке, а затем делать кучу одинаковых правок в другой строке, я сделаю первое редактирование для ряда строк (используя . для большого эффекта), затем второе редактированиена связке строк и т. д. В качестве альтернативы использование макросов может помочь, поскольку они фантастические, но иногда немного более утомительные, чтобы правильно работать со «сложными» изменениями.

12 голосов
/ 23 августа 2011

Я часто использую другой реестр, копирую нужную строку в какой-то именованный реестр "ay, а затем вставляю оттуда "ap

11 голосов
/ 23 августа 2011

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

set clipboard=unnamed

Один из вариантов - удалить это и использовать явный регистр буфера обмена "+

Другой вариант - использовать любой из других регистров с явно заданными именами (az).Например, после первой вставки верните строку обратно в "c, а затем используйте "cp для вставки.

8 голосов
/ 23 августа 2011

use np где n - количество времени, которое вы хотите вставить строки, например, 3p вставит 3 строки.

4 голосов
/ 24 августа 2017

Вместо использования копирования / вставки часто лучше использовать команду текстового объекта, например ciw, для изменения внутреннего слова.Преимущество этого метода состоит в том, что его легко повторять с помощью команды повтора ..

  1. yiw Дергать внутреннее слово (скопировать слово под курсором, скажем «первый»).
  2. ... Переместите курсор к другому слову (скажем, «второй»).
  3. ciw<C-r>0 Измените «второй», заменив его на «первый» (это Ctrl-R).
  4. ... Переместите курсор на другое слово (скажем, «третье»).
  5. . Измените «третье», заменив его на «первое».
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...