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

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

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

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

Ответ 1

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

xnoremap p pgvy

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

Ответ 2

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

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

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

Ответ 3

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

set clipboard=unnamed

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

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

Ответ 4

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

Ответ 5

используйте np, где n - это количество времени, в которое вы хотите вставить строки, например 3p будет вставлять 3 строки.

Ответ 6

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

  • yiw Янь внутреннее слово (скопируйте слово под курсором, скажем "первым" ).
  • ... Переместите курсор на другое слово (например, "второе" ).
  • ciw<C-r>0 Измените "second", заменив его "первым" (это Ctrl-R).
  • ... Переместите курсор на другое слово (например, "третье" ).
  • . Измените "третий", заменив его "первым" .