Как лучше всего заменить несколько строк содержимым буфера обмена?
Проблема, с которой я сталкиваюсь, заключается в том, что когда я выдергиваю строку и вставляю ее поверх другой строки, «выдергивание» заменяется строкой, которую я только что заменил. Теперь, если я хочу заменить другую строку той же строкой, я должен вернуться и снова выдернуть ее.
Должен быть способ сделать это лучше.
vnoremap
). В файле справки Vimversion7.txt
указано, что в этой версии появились xmap и smap.xnoremap
ниvnoremap
работает"0
должно быть содержимое вашего янк. Это немного утомительнее печатать, но вы"0p
должны делать то, что хотите.В качестве альтернативы не выбирайте и не заменяйте старые строки заранее. Если вы найдете эти строки с помощью поиска, просто нажимайте
n.
снова и снова (после инициалаp
), а затем, когда они все вставлены, сделайте,ndd
за которым следует столькоn.
s, сколько необходимо.Самый большой мысленный переход, который мне нужно было сделать при переходе на Vim, - это выяснить, как применять групповые изменения последовательно. Т.е. вместо того, чтобы делать кучу правок в строке, а затем делать кучу тех же правок в другой строке, я сделаю первое редактирование кучи строк (с
.
большим эффектом), а затем второе редактирование кучи строк и т. д. В качестве альтернативы, использование макросов может помочь, поскольку они прекрасны, но иногда немного утомительнее для правильной работы с "сложными" изменениями.источник
:%s/.../.../gc
командами типа подтверждения может быть ближе к тому, что вы хотите5@m
(для макроса с именемm
)xnoremap p "0p
в своем ~ / .vimrcЯ часто использую другой реестр, копирую нужную строку в какой-то именованный реестр,
"ay
а затем вставляю оттуда"ap
источник
Когда вы вставляете выделение в Vim, он заменяет регистр по умолчанию содержимым выделения. Если вставка выделенного фрагмента стирает содержимое регистра буфера обмена, то, скорее всего, в вашем .vimrc есть следующая строка
Один из вариантов - удалить это и использовать явный регистр буфера обмена
"+
Другой вариант - использовать любой из других явно названных регистров (az). После первой пасты вытащите леску, например, обратно,
"c
а затем используйте"cp
для вставки оттуда.источник
используйте
np
гдеn
- это количество времени, в течение которого вы хотите вставить строки, например3p
, вставит 3 строки.источник
Вместо копирования / вставки часто лучше использовать команду текстового объекта, например,
ciw
для изменения внутреннего слова. Преимущество этого метода заключается в том, что его легко.
повторить с помощью команды повтора.yiw
Подтвердите внутреннее слово (скопируйте слово под курсором, скажите "первое").ciw<C-r>0
Измените «второй», заменив его на «первый» (Ctrl-R)..
Измените «третий», заменив его «первым».источник
ciw<C-r>0
не работает в моем случае.ciw
переходит в режим вставки, где<C-r>
становится бесполезным. Есть ли этому простое объяснение? Может ли это иметь отношение к текстовому редактору (я использую не pur VIM, а привязки клавиатуры VIM в RStudio)<C-r>
предназначен для использования в режиме вставки, так как это способ вставки из регистра, не выходя из режима вставки, то есть в Vim; Я не знаком с RStudio, но полагаю, что вы правы, и они не реализовали эту конкретную привязку клавиш.