як додати рядки до реєстру vim, не перезаписуючи його


85

Я хотів би вирвати рядок у реєстрі, "{register}yале без перезапису того, що було раніше в реєстрі. Мені часто потрібно копіювати несуміжні рядки в реєстрі, і я хотів би іноді використовувати регістри як стек.

Приклад:

line1
line2
line3

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

Чи можливо це без плагінів? з плагінами?


Чудово підходить для швидкого складання списку визначень у верхній частині файлу.
Джо Макграт,

Відповіді:


132

Якщо ви хочете додати до іменованого реєстру, використовуйте відповідний символ верхнього регістру. тобто у вашому прикладі:

"а-а-а
"Ай
"ап

11
Чи можливий спосіб долучення до неіменованого реєстру? (головний)
Заффі


Щоб зберегти людей на відвідуванні сторінки ^^, IMO простіше використовувати названий реєстр. Коли ви вводите "a think", використовуючи реєстрацію ... "" A ", що додається для реєстрації"
Роб Кілті

12

Щоб лише розширити відповідь MarkB, чи знаєте ви, що ви можете також використовувати маркери для вибору блоку тексту для своєї тяги?

Перейдіть до першого рядка блоку, який ви хочете потягнути, і введіть команду mark після вибору букви як маркера, наприклад

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

потім перейдіть до нижньої частини блоку, який ви хочете потягнути, і введіть команду:

:'a,.ya A

ця команда означає взяти блок тексту з рядка, що містить мій маркер, що називається a, до поточного рядка і витягнути його в буфер a. Застосовуються ті самі правила, що і згадані MarkB, використовуйте ім'я буфера в нижньому регістрі для перезапису буфера. Використовуйте велике ім’я буфера для додавання до буфера. Тож у цьому випадку це додасться до вмісту буфера a.

Примітка. "A", що використовується для вашого маркера, не має нічого спільного з "a", що використовується для вибору вашого реєстру. (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. Допомогло б просто не використовувати букву ніж a для маркера у прикладі, тому стає зрозуміло, який лист є що :)
justin w
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.