Вставить несколько раз
Как лучше всего заменить несколько строк содержимым буфера обмена?
Проблема, с которой я столкнулась, - это когда я держу строку и вставляю ее поверх другой строки, "янки" заменяются строкой, которую я просто заменяю. Теперь, если я хочу заменить другую строку той же строкой, я должен вернуться и снова выдернуть ее.
Там должен быть лучший способ сделать это.
Ответы
Ответ 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).
- ... Переместите курсор на другое слово (например, "третье" ).
-
.
Измените "третий", заменив его "первым" .