39

Я хочу скопировать несколько строк в одном регистре в vim, чтобы легко вставлять различные текстовые шаблоны в документ.

Например, «iyy дергает только текущую строку, если я пытаюсь выбрать несколько строк в визуальном режиме, она не записывается в регистр.

Какие-либо предложения?

5 ответов5

55

Используйте 3Y чтобы вернуть 3 строки в регистр по умолчанию; "i3Y для того, чтобы войти в реестр i.

Кроме того, мой любимый способ - не подсчитывать строки, которые я хочу вытянуть, а выбирать их в визуальном режиме с помощью V и перемещать команды, а затем нажимать y чтобы восстановить или "_y чтобы восстановить в регистр.

Кроме того, я только что попытался выделить несколько строк в режиме Visual Line и нажать в регистр не по умолчанию, например, Vjjj"oy - и это работает.

23

В любом месте файла вы можете использовать следующее.

:2,5y a

Янки строки 2 - 5. В РЕГИСТРАЦИЮ

:7pu a

Вставьте регистр под строку 7.

8

Используйте m чтобы отметить начало, с именем буфера (так что вы можете набрать mx). Переместите курсор вниз, где вы хотите остановить копирование, и введите y'x (или d'x если вы вырезаете и вставляете). Затем переместите к точке, где вы хотите вставить, и введите p .

Шпаргалка команды Vim

6

Вы ставите команду перед числом, чтобы узнать, сколько строк нужно обработать. Вы также можете использовать «текстовый объект» (например, «]» для блока и «)» для абзаца) - это будет работать с несколькими строками в контексте - по умолчанию часто используется одна строка. Например, "r5yy будет вытягивать пять строк, начиная с курсора, в регистр« r ». (Или вы можете набрать :.,+4y r чтобы сделать то же самое в режиме ex.) Вы также можете комбинировать числа с текстовыми объектами; "r10y) .

1

Можно вырвать несколько строк в случае, когда это последний случай поиска.

Например, с учетом следующего многострочного не жадного шаблона:

/start\_.\{-}end/norm gn"iy

тогда у вас будет свой выдернутый многострочный шаблон (между start и end) в вашем регистре @i (печать с помощью echo @i).

Связанный: Как напечатать многострочное совпадение? в Vi

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .