как добавить строки в регистр vim, не перезаписывая его

85

Я хочу выдернуть строку в регистре: "{register}y но без перезаписи того, что было ранее в регистре. Мне часто нужно копировать несмежные строки в регистр, и я хотел бы иногда использовать регистры как стек.

Пример:

line1
line2
line3

Я хочу скопировать line1, поместив на него курсор и введя "ay, затем продолжаю line3и делаю "ay. Потом, когда сделаю "ap, ОБА line1И line3буду наклеена.

Возможно ли это без плагинов? с плагинами?

Mapad
источник
Отлично подходит для создания быстрого списка определений в верхней части файла.
Джо МакГрат

Ответы:

133

Если вы хотите добавить в именованный регистр, используйте соответствующий символ верхнего регистра. т.е. в вашем примере:

"айы
"Эй
"ап
MarkB
источник
11
Есть ли способ добавить в безымянный регистр? (главный)
Zaffy
Чтобы сэкономить людям посещение страницы ^^, ИМО проще использовать именованный регистр. Когда вы набираете «думаю, используя регистр а ...» «А» добавляется для регистрации а »
Роб Килти
12

Просто чтобы расширить ответ MarkB, знаете ли вы, что вы также можете использовать маркеры, чтобы выбрать блок текста для восстановления?

Перейдите к первой строке блока, который вы хотите восстановить, и введите команду отметки после выбора буквы в качестве маркера, например

ma  (entered in command mode, i.e. no colon)

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

:'a,.ya A

эта команда означает, что взять блок текста из строки, содержащей мой маркер, называемый a, до текущей строки, и скопировать его в буфер a. Применяются те же правила, что и упомянутый MarkB, используйте имя буфера в нижнем регистре для перезаписи буфера. Используйте имя буфера в верхнем регистре для добавления в буфер. Таким образом, в этом случае это будет добавлено к содержимому буфера a.

NB. «А», используемое для вашего маркера, не имеет ничего общего с «а», используемым для выбора вашего регистра. (AFAIK, но YMMV)

BTW 'a (апостроф a) относится к строке, содержащей маркер a. `a (обратная кавычка a) относится к символу под курсором при вводе ma.

`ad`b (also entered in command mode)

полезен, потому что он удалит текст между символом, отмеченным маркером a, до символа непосредственно перед символом, который вы отметили маркером b.

Роб Уэллс
источник
'a, .ya A работает, но когда я пытаюсь поставить галочку перед a -> `a, он говорит: E492: Не команда редактора:` a, .ya A. Помогло бы просто не использовать букву other чем маркер в примере, чтобы было понятно, какая буква какая штука :)
Justin W