Какво представляват регистрите на Vim

Kakvo Predstavlavat Registrite Na Vim



Vim регистрите са блокове за съхранение, използвани за съхраняване на изтеглен, изтрит текст и операции. Тези регистри могат да бъдат достъпни с помощта на техните имена на тагове, които могат да бъдат цифра, буква или символ.

Ако използвате Vim, тогава трябва да използвате регистрите на Vim. Всеки път, когато копирате/изтриете текст или изпълнявате командна операция, Vim съхранява тази информация в регистрите. Когато го поставите, Vim получава данните от регистъра и ги изтегля в буфера. С други думи, регистрите на Vim действат като клипборд за съхраняване на текста и историята на командите.

Vim има общо 10 различни типа регистри, всеки от които служи за различна цел. В този урок ще проуча регистрите на Vim, техните типове и употреба.







Забележка : За този урок изпълнявам команди на macOS. Vim е приложение за различни платформи, следователно командите, споменати в това ръководство, ще се прилагат за всички версии на Vim, независимо от операционната система.



Оператори на регистър на Vim

Регистрите във Vim могат да се използват чрез операции като копиране, изтриване или промяна. Всяка операция има специфични оператори, като например за изтегляне на текст се използва оператор y, докато за изтриване на текст се използва оператор d. По-долу е даден списък с често използвани оператори:

yy Янки (копира) линията
дд Изтрива реда
вв Изтрива реда и активира режима INSERT
с Изтрива знака и стартира режим INSERT за заместване
х Изтрива знака под курсора
q Макро; съхранява набора от команди в определен регистър

За да отпечатате съхранения текст, стр или П се използват оператори:

стр Поставете (поставете) текста след курсора
П Поставете текста пред курсора

Тези команди също взимат броя. Например, за да копирате 10 реда, използвайте 10yy команда, подобно на поставяне на 10-те копия на изтръгнат ред 10p .

Регистри за вписвания

За да изброите всички регистри, използвайте :регистрирам или :рег и за списък на конкретния регистър използвайте :рег, където е името на регистъра (напр. 0-9, a-z).

По същия начин, за да изброите съдържанието на множество регистри, използвайте :reg “ команда.

В списъка с регистри ще видите три колони, Име, тип и съдържание . Тук типът означава тип съдържание, а не тип регистър. Три видове на съдържанието може да се променя с регистри.

  • л : По линия
  • ° С : По отношение на характера
  • b : Блоково

Например, ако съдържанието се копира с помощта на поредна операция (yy) тогава типът съдържание ще бъде л , ако е характерно (да) тогава типът ще бъде ° С и ако съдържанието се копира блоково (ctrl+v и y) тогава типът ще бъде показан като b .

Работа с Vim Registers

Регистрите на Vim могат да се използват за съхраняване на съдържанието с помощта на операторите yank, delete и change. Съхраненото съдържание може да бъде достъпно с помощта на операторите put.

Запазване на текст в регистър
Когато натиснете yy за копиране на ред, той ще бъде записан в регистъра по подразбиране, наречен регистър без име (“”) . За да съхраните копирания ред в конкретен регистър, котировката (“) следвани от името на регистъра и оператора.

'<рег><оператор>

Например, за да копирате ред в име на регистър с използвай ' зий . По същия начин, ако сте избрали няколко реда във ВИЗУАЛЕН режим, използвайте „ зи за съхраняване на редовете в регистъра z.

Достъп до регистъра
За достъп до регистъра на Vim, цитатът (“) символът се използва с името на регистъра и п/п оператор.

'стр

Например, ако името на регистъра е z и за достъп до съдържанието на този регистър, използвайте „ zp в НОРМАЛЕН режим. Въпреки това, за да извършите същата операция в режим INSERT, използвайте ctrl+r z .

“<рег><оператор> Нормален режим За да запазите съдържанието, използвайте цитат (“) , регистрирайте име (a-z) и оператор (y, yy, d, c или cc)
стр Нормален режим За да поставите съдържанието на регистър, използвайте цитат (“) , регистрирайте име (a-z) и п/п оператор
ctrl+r Режим INSERT За да поставите съдържанието на регистър, използвайте ctrl+r и регистрирайте име (a-z)

Имате основната идея за регистрите на Vim. Сега ще разгледам по-задълбочено всеки тип регистър и неговото използване.

Видове регистри на Vim

Във Vim има 10 типа регистри, предназначени за специфични цели.

  1. Регистър без име („“)
  2. Номерирани регистри (0-9)
  3. Малък регистър за изтриване (“-)
  4. Именувани регистри (a-z или A-Z)
  5. Регистри само за четене (“:, “., “%)
  6. Регистър на алтернативен файл („#)
  7. Регистър на изрази (“=)
  8. Регистри за избор и изпускане (“*, “+, +~)
  9. Регистър на черните дупки („_)
  10. Последен регистър на модела за търсене (“/)

1. Регистър без име („“)

Това е регистърът по подразбиране на Vim за съхраняване на изтеглен или изтрит текст с помощта на y, yy, d, dd, s, или х команди.

The :reg “” командата може да се използва за изброяване на съдържанието, съхранено в ненаименования регистър.

За да поставите неименуваното съдържание на регистъра, използвайте командата put (p или P) команда. По подразбиране, стр командата поставя хранилищата на съдържание в неименувания регистър. Като алтернатива, данните, съхранени в ненаименования регистър, също могат да бъдат поставени с помощта на командата “”p.

В следващия пример копирах ред с помощта на yy и след това го поставете 5 пъти, като използвате броене 5 с p (5p).

2. Номерирани регистри (0-9)

Номерираните регистри се използват за съхраняване на последния изтеглен или изтрит текст.

Регистърът 0 се различава от регистрите 1-9 . Регистърът 0 винаги ще съхранява последния изтеглен текст. Например, ако дръпна ред с помощта на yy команда, редът ще бъде съхранен както в без име и на 0 регистри.

Сега, ако изтрия ред с помощта на дд , изтритият ред ще бъде съхранен в безименния регистър и регистър 1 докато последният изтеглен текст ще остане в регистъра 0 . Така че последният изтеглен текст може да бъде достъпен по всяко време чрез регистър 0 .

Регистрите 1-9 съхранява последния изтрит текст. Например, ако изтрия ред с помощта на дд команда, изтритият текст ще бъде съхранен както в безименния, така и в регистъра 1 . Регистър 1 ще съхранява последния изтрит текст. Ако изтрия друг ред, изтритият преди това текст ще се премести в регистъра 2 , а последният ще се съхранява в безименния и регистър 1 . По същество номерираните регистри (1-9) съхранявайте историята на изтрития текст.

Нека разберем номерирания регистър с пример. Следният текстов файл на Vim се състои от 10 реда; нека дръпнем ред 3 използвайки yy команда. Сега нека проверим състоянието на регистрите с помощта на командата :reg.

Изтегленият ред в момента е в без име и 0 регистри. Сега нека изтрием всички редове един по един с помощта на дд команда. И така, последно ред 10 ще бъде в неименувания регистър и регистър 1. В същото време други изтрити редове ще бъдат съхранени в регистри 2-9 във възходящ ред.

Тези редове могат да бъдат достъпни с помощта на стр команда. Например, за да поставите текста на регистъра 9 използване „9p . Освен това, ако искате да поставите стойността на register 9 5 пъти, използвайте „95p .

3. Малък регистър за изтриване (“-)

Този регистър съхранява изтрития текст, ако е по-малък от ред, използвайки команди като x, daw, diw, dab, и отново . Освен това, ако изтриете текст с помощта на ВИЗУАЛЕН режим на избор и ако е по-малко от ред, тогава ще бъде съхранен в малкия регистър за изтриване. Във Vim ред означава пълно изречение, завършващо с точка.

Например в следния файл избрах 3 думи сътрудничество и подкрепа от ред номер 9 и ги изтри с помощта на д оператор. Малкият регистър за изтриване ще се използва за запазване на тази селекция, тъй като не е по-дълъг от един ред. Използвай :reg “- команда за изброяване на съдържанието на малкия регистър за изтриване.

4. Именувани регистри (a-z или A-Z)

Именуваните регистри се използват за съхраняване на специфичен за потребителя текст. Така че, ако искате да съхранявате текст в персонализиран регистър, тогава 26 регистри от а да се с може да се използва.

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

Регистрите с малки и главни букви имат различни цели. Например, ако текстът е записан в регистъра с малки букви, за да се замени текстът от този регистър, ще се използва регистърът с малки букви. Но за добавяне на текста към регистъра с малки букви ще се използва регистърът с главни букви със същото име.

Нека го разберем чрез пример. От следния файл съхраних ред 8 в регистъра х използвайки ' xyy .

За да добавя текст след този ред, първо ще избера няколко думи във ВИЗУАЛЕН режим. За да добавя избрания текст, ще използвам „Xy команда.

За да заменя текста, отново ще използвам „ xyy .

5. Регистри само за четене (., %, 🙂

Vim има 3 регистъра само за четене, които съхраняват вмъкнатите текст, име на файл, и последно изпълнено команда.

. Съхранява последния вмъкнат текст
% Съхранява името на файла
: Съхранява последната изпълнена команда

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

За да поставите последния вмъкнат текст, използвайте “.p команда.

За да отпечатате името на файла, използвайте „%p команда.

За да отпечатате последната команда, използвайте “:стр.

The @: може да се използва за повторение на предишната команда във Vim. В следващия пример изтрих първите 3 реда при натискане @: , още 3 реда се изтриват, следователно се повтаря предишната команда.

6. Алтернативен буферен регистър ('#)

Алтернативният буфер е файл, който се отваря в текущия буфер. Регистърът “# съхранява името на файла на буферирания файл в текущия буфер. Нека отворим друг файл в същия буфер, като използваме :e ~/.vimrc команда, имайте предвид, че текущото име на файл е file.txt .

За да затворите отворения буфер, използвайте :bdelete или :bwipeout команда. Сега е възможно да видите алтернативното име на файл, записано в „# регистрирам.

7. Регистър на израза (“=)

Регистърът на израза е уникален регистър, който не се използва за съхраняване на текст, вместо това той съхранява израза. Например, ако имате няколко числа във файла, за сумиране на тези числа ще се използват изрази на Vim.

Този регистър може да бъде достъпен чрез „= в НОРМАЛЕН режим и ctrl+r = в режим INSERT.

Например, за да намерите разликата между две числа, натиснете “= и знакът за равенство ще се появи в лентата на състоянието; сега въведете и двете числа със знака минус (-) в тях и натиснете Въведете ключ. Сега, за да отпечатате разликата, натиснете стр или използвайте :слагам команда.

За достъп до стойността на регистъра на израза използвайте :reg “= команда.

По същия начин, за да получите абсолютната стойност на две числа, използвайте =abs(стойност1-стойност2) изразяване.

По същия начин, за съхраняване на изхода на системната команда, може да се използва този регистър (израз). Например, ако искам да прочета съдържанието на файла, който ще използвам =system(‘cat ’) , при натискане на клавиша Return съдържанието на изхода ще бъде съхранено. Използвайки стр или :слагам команда, съдържанието на изхода може да бъде поставено в буфера.

Има набор от изрази, които могат да се използват във Vim. За да научите повече за изразите на Vim, използвайте :помощен израз и :помощ израз синтаксис команди.

8. Регистри за избор и изпускане (“*, “+, “~)

Vim има два регистъра за избор „* (цитатор) и „+ (quoteplus), които се използват за съхраняване на текста от GUI. Тези регистри се използват за копиране на текст от външни програми като браузъри или друг текстообработващ процесор.

Например, ако копирате избран текст от браузър, като използвате ctrl+c или cmd+c ще се съхранява в „* регистрирам. Въпреки това не можете да използвате стр или :слагам за да поставите този текст в редактора на Vim. Използвайте „*стр за да поставите текста в редактора на Vim, който е копиран от външни приложения.

Важно е да се отбележи, че и двете „+ и „* регистрите са свързани към клипборда, така че и двете („*p, „+p) може да се използва за поставяне на текст в редактора на Vim. По същия начин, за да поставите текст от Vim, използвайте „*yy за да издърпате ред и след това да го поставите във всяко GUI приложение, използвайте ctrl+v или cmd+v.

Важно е да се отбележи, че ако и двата регистъра (* & +) правите едно и също нещо, тогава какъв е смисълът? Vim има два регистъра за избор „*, „+ върши същата работа и това се дължи на прозоречната система X11. X11 предоставя два метода за съхраняване на текста, единият е селекции а другото е изрязващи буфери . Селекциите са собственост на приложението и се губят при затваряне на приложението, докато изрязаните буфери запазват текста, съхранен в X-сървъра. За тези два типа съхранение се използват регистрите „*“ и „+“. За да научите повече за това, използвайте :help x11-селекция команда.

След това, пуснете регистър „~ който се използва за съхраняване на текста от последната операция плъзгане и пускане. Например, ако пуснете селекция от текст от външно приложение, тя ще бъде съхранена в регистъра за пускане.

Ако установите, че поставянето от външно приложение с помощта на три различни ключа е трудно, тогава можете да картографирате селекцията, която да бъде съхранена в неименования регистър.
Отвори vimrc файл, комплект място клипборд=неименуван в него и запазете файла. Сега, когато копирате от външно приложение, то може лесно да бъде поставено с помощта на :слагам команда или клавиш p.

Забележка : Регистърът за изхвърляне (~) ще бъде достъпен само ако Vim е компилиран с +dnd. В момента е наличен само за GTK GUI.

9. Регистър на черните дупки („_)

Ако извършите операция за копиране или изтриване в редактора на Vim, по подразбиране той съхранява текста в регистрите. Ако искате да изтриете текста, без да го съхранявате в регистър, използвайте регистъра на черната дупка. Този регистър няма да промени неименования регистър („”) при изтриване на текст.

Например, ако искам да изтрия всички редове, без да ги съхранявам в неименования регистър, тогава първо ще избера всички редове с ggVG и след това натиснете '_д клавиши за изтриване на всички редове. По същия начин, за да изтриете един ред към черна дупка, използвайте „_dd .

10. Последен регистър на модела за търсене (“/)

Както подсказва името, този регистър записва последния модел за търсене с помощта на / или ? оператори. Например, ако търсите /Linux , след което използвате “/стр ще постави думата Linux.

Vim използва този регистър за навигация с н и н ключове след търсенето.

Това е записваем регистър, съдържанието му може да се променя с помощта на :let. Например, за да запишете Linux в този регистър, използвайте :нека @/='Linux'.

Регистри и макроси

Във Vim макросите също се записват в наименуваните регистри (a-z). Ако не сте наясно с макросите, тогава макросите са зададени команди, съхранени в регистър. Този набор от команди може да се изпълни просто чрез използване на знака @, последван от името на регистъра на макроса. По същество макросите премахват необходимостта от многократно въвеждане на множество команди.

Например, за да съхраните макрос в регистър м , Ще използвам qm<набор-команди>q . Искам да се преместя в 5 линии надолу с помощта 5j и изтрийте реда с помощта на дд . Използвайте, qm за да започнете записа на макрос, и след това натиснете 5j и дд . Сега, за да спрете записа на макроси, натиснете р . За да проверите дали макросът е съхранен или не се използва, :reg “m или :reg m.

За да изпълните тези команди с макро регистър, използвайте :@м команда.

Изчистване на регистър

Няма директен подход за изчистване на регистър, тъй като повечето регистри не трябва да се изчистват, защото в крайна сметка ще бъдат презаписани. Има обаче няколко техники за изчистване на стойност на регистър в редактора на Vim.

1. Запишете празен макрос, за да изчистите регистър. Например, за да изчистите регистър m, използвайте qmq .

2. Задайте празен текст, като използвате позволявам . Например, за да изчистите регистъра m, използвайте :нека @m=”.

3. Използвайте setreg() функция с празен низ като аргумент. Например, за да изчистите регистър m, използвайте :повикване setreg('m', ”).

Заключение

Има 10 различни регистъра с различни функционалности, което го прави почти невъзможно за запомняне. Ако сте начинаещ, бих препоръчал да имате предвид само три регистъра, регистър без име (“”) , номерирани регистри (0-9) и именувани регистри (a-z) .

За да съхраните текст в регистър, използвайте цитат (“) подпишете с името на регистъра, последвано от команда на оператор (y, d, c) . За да поставите текста от регистър, използвайте команди p или P, предшествани от кавички (“) и регистрирайте име.

Трябва да сте чували за това, ако правите задача повече от два пъти, автоматизирайте я. Регистрите на Vim могат да бъдат изключително полезни за автоматизиране на задачи и в крайна сметка за подобряване на изживяването. За да научите повече за регистрите на Vim, използвайте :help регистрира команда.