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


85

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

Пример:

line1
line2
line3

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

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


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

Ответы:


133

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

"айы
"Эй
"ап

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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.