it-roy-ru.com

редактор vi, скопировать блок (не обычное действие)

В редакторе vi мне нужно скопировать блок. Есть много способов, но один из них очень быстрый.

  1. пометить первую строку каким-либо образом,

  2. затем пометить конец строки каким-либо образом,

  3. затем введите команду, чтобы скопировать помеченные строки.

  4. затем скопируйте, возможно, используя 'p', но не уверен.

Кто-нибудь знает команды (не yy или 10yy)? Заранее спасибо. 

36
Yang

Другим вариантом, который может быть легче запомнить, будет размещение отметок на двух строках с ma а также mb, затем запустите :'a,'byank.

Множество разных способов выполнить эту задачу, просто предлагая другую.

31
Randy Morris

просто используйтеVвыбрать строки илиvвыбрать символы илиCtrlvвыбрать блок.

Когда вы хотите скопировать, просто нажмитеyи использоватьpвставить его куда угодно ...

82
André Keller

Их документация гласит:

Вырезать и вставлять:

  1. Поместите курсор туда, где вы хотите начать резку.
  2. Нажмите v выбрать символы (или заглавные буквы V выбрать целые строки).
  3. Переместите курсор в конец того, что вы хотите вырезать.
  4. Нажмите d резать (или y копировать).
  5. Переместитесь туда, куда вы хотели бы вставить.
  6. Нажмите P вставить перед курсором, или p вставить после.

Копирование и вставка выполняется с теми же шагами, за исключением шага 4, где вы нажимаете y вместо d:

d = delete = cut

y = yank = copy

45
Kaleem Ullah

Звучит так, как будто вы хотите разместить метки в файле.

mx помещает отметку с именем x под курсором

y'x восстанавливает все между текущей позицией курсора и строкой, содержащей метку x .

Ты можешь использовать 'x просто переместить курсор на строку с вашей отметкой.

Ты можешь использовать `x (обратная галочка), чтобы перейти к точному местоположению знака.


Одна вещь, которую я делаю все время, - это перетаскивать все между курсором и пометить x в буфере обмена .

Вы можете сделать это так:

"+y'x

ПРИМЕЧАНИЕ. В некоторых средах буфер буфера обмена представляется * вместо +.


Подобные вопросы с некоторыми хорошими ответами:

15
jahroy

Сочетания клавиш для этого:

  1. Для копирования: наведите курсор на начало блока и нажмите md , а затем перейдите к концу блока и нажмите y'd . Это выберет блок, чтобы вставить его, нажмите p

  2. Для вырезания: поместите курсор на начало блока и нажмите ma , затем перейдите к концу блока и нажмите d'a . Это выберет блок, чтобы вставить его, нажмите p

3
Aman Khare

Команда ниже показалась мне более удобной. Если вы хотите скопировать строки с 6 по 12 и вставить из текущей позиции курсора.

:6,12 co .

Если вы хотите скопировать строки с 6 по 12 и вставить из 100-й строки.

:6,12t100

Источник: https://www.reddit.com/r/vim/comments/8i6vbd/efficient_ways_of_copying_few_lines/

3
catuf

Вы можете сделать это так же, как в vi, например, чтобы восстановить строки от 3020 до конца, выполнить эту команду (записать блок в файл):

: 3020, $ w/tmp/yank

А чтобы записать этот блок в другую строку/файл, перейдите в нужную позицию и выполните следующую команду (вставьте файл, написанный ранее):

: r/tmp/yank

(Напоминание: не забудьте удалить файл:/tmp/yank)

0
user9091660