Вставить несколько раз
как лучше всего заменить несколько строк с содержимым буфера обмена?
проблема, с которой я сталкиваюсь, заключается в том, что когда я дергаю строку и вставляю ее поверх другой строки, "yank" заменяется на строку, которую я просто заменяю. Теперь, если я хочу заменить другую линию той же линией, я должен вернуться и снова дернуть ее.
должен быть лучший способ сделать это.
6 ответов:
У меня это в моем .vimrc:
xnoremap p pgvy
(Примечание: это будет работать только с регистром по умолчанию, но такое сопоставление легко запомнить). Написание более сложной версии было бы возможно. Кроме того, вы сможете использовать P, чтобы получить старое поведение.
"0
должно быть содержимое вашего Янка. Это немного более утомительно печатать, но"0p
должны делать то, что вы хотите.кроме того, не выбирайте и не заменяйте старые линии спереди. Если вы найдете эти строки с поиском, просто нажмите
n.
снова и снова (после первогоp
), затем, когда они все обклеить, сделатьndd
затем столько жеn.
s по мере необходимости.самый большой ментальный переключатель, который мне нужно было сделать при переходе на Vim, - это выяснить как применять групповые изменения последовательно. Т. е. вместо того, чтобы делать кучу изменений в строке, а затем делать кучу тех же изменений в другой строке, я сделаю первое редактирование на куче строк (используя
.
для большего эффекта), затем второе редактирование на куче строк и т. д. Кроме того, использование макросов может помочь, поскольку они фантастичны, но иногда немного более утомительны, чтобы правильно работать с "сложными" изменениями.
Я часто использую другой реестр, скопируйте строку, которая вам нужна, в какой-то именованный реестр
"ay
а потом вставить оттуда"ap
когда вы вставляете выделение в Vim, он заменит регистр по умолчанию содержимым выделения. Если вставка над выделением стирает содержимое регистра буфера обмена, то очень вероятно, что у вас есть следующая строка в вашем .vimrc
set clipboard=unnamed
один из вариантов-удалить это и использовать явный регистр буфера обмена
"+
другой вариант-использовать любой из других явно именованных регистров (a-z). После первой вставки дерните за леску назад в
"c
например, а затем использовать"cp
вставить из этого.
использовать
np
здесьn
- это количество того, сколько времени вы хотите вставить строки, например3p
вставит 3 строки.
вместо копирования / вставки часто лучше использовать команду текстового объекта, такую как
ciw
изменить внутреннее слово. Этот метод имеет то преимущество, что он легко повторяется с помощью.
повтор команды.
yiw
дернуть внутреннее слово (скопировать слово под курсором, сказать "первый").- ... Переместите курсор на другое слово (скажем "второй").
ciw<C-r>0
изменить "второй", заменив его на" первый " (Это Ctrl-R).- ... Переместить курсор на другое слово (скажем "третий").
.
изменить "третий", заменив его на "первый".