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


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

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

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

6 65

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 изменить внутреннее слово. Этот метод имеет то преимущество, что он легко повторяется с помощью . повтор команды.

  1. yiw дернуть внутреннее слово (скопировать слово под курсором, сказать "первый").
  2. ... Переместите курсор на другое слово (скажем "второй").
  3. ciw<C-r>0 изменить "второй", заменив его на" первый " (Это Ctrl-R).
  4. ... Переместить курсор на другое слово (скажем "третий").
  5. . изменить "третий", заменив его на "первый".