Лого на страниците (малко).

Заглавна страница > Четива > Четива за глотометрията > cream в режим „expert“ > 17. Регистри

 

Александър Иванов

cream в режим „expert“

17. Регистри

В терминологията на vim „регистър“ се нарича паметта за временно съхраняване (clipboard).

Vim поддържа множество „регистри“, впрочем, това правят вече и операционните системи. Със знака кавичка (") предупреждавате програмата, че се обръщате към регистър, след това трябва да въведете името на регистъра: това са малките латински букви от a до z, както и някои други символи, имена на „стандартни“ регистри.

Тази последователност трябва да предшества командата, например "ayy ще копира реда, където е курсорът (yy), в регистър "a.

Ако копирате текст в даден регистър, например в регистъра "x, и се обърнете към него с главна буква X, например "Xy, това е инструкция новият текст да се добави към съществуващия в регистъра, а не да го замести, тоест това е действието append, приложено към съдържанието на регистъра.

Всички регистри и съдържанието им може да видите с :registers (или :reg) Както при отметките, има и регистри със специални имена, например регистърът с име " се използва като подразбираща се памет за временно съхраняване. Така командата p и ""p правят едно и също нещо.

Регистърът "+ съдържа последният текст, записан в системната памет за временно съхраняване, а ако копирате там текст, той ще се прехвърли и в системния буфер, с което става достъпен и за други програми.

Регистърът "_ е „черна дупка“ — всичко, записано в него се загубва. Така "_dd ще изтрие безвъзвратно реда, на който е курсорът. (Е, не съвсем безвъзвратно, защото undo работи.) Когато казах, че във vim няма истински Delete, не бях съвсем прав — може да изтриете напълно текст, ако го запишете в регистъра "_. Когато се чете от този регистър, чете се просто… нищо. Така командата

:let @x = @_

ще препише „нищо“ в регистъра x, тоест ще изчисти съдържанието на регистъра x.

Друг начин да изчистите регистъра е следният: qxq. Командата q записва действията ви в регистъра (в примера — в регистър x). При това съдържанието на регистъра се изчиства, а аз веднага приключвам записа (с второто q).

Ама какво значи да записваш действията си в регистър?

Това значи, че действията ти се запомнят в регистъра и след това можеш многократно да ги повтаряш. Да дам пример.

Имате следния списък:

	Гошо
	Петров
	Стоянов
	Нели
	Кирова
	Карабашева
	Стефан
	Радев
	Овчаров
		

Очевидно тук всеки три реда съдържат лично, бащино и фамилно име. Искате да наредите трите имена на всеки човек на един ред, разделени със запетайка. Направете така:

— преместете курсора на първия ред (gg);

— включете записа в регистър "x (qx);

— маркирайте първия ред (V);

— преместете курсора с един ред надолу (j);

— заместете в маркираните редове символа за край на реда със запетая (:s:\n:,: и натиснете Enter);

— преместете курсора на долния ред (j);

— спрете записа (q).

Сега (вижте с :reg) в регистъра "x има:

"x   Vj:s:\n:,: ^Mj

Тоест, записани са вашите действия. Kурсорът е на втория ред (това вече е Нели) и с @x може да повторите командата. Разбира се, с числов префикс пред @x може многократно да изпълните командата и да си обработите списъка до края. При по-дълъг списък никак не е лошо.

Когато напускате cream, съдържанието на регистрите се запомня — така при следващото стартиране на програмата съдържанието на регистрите се възстановява.

Страница: А. И.
Електронна поща
Дата на публикуване: 15.V.2014
Последна редакция: 27.IV.2023
Съобразено с
html5/css3