Vad är Vim-register

Vad Ar Vim Register



Vim-register är lagringsblock som används för att lagra ryckt, raderad text och operationer. Dessa register kan nås med deras taggnamn, som kan vara en siffra, bokstav eller symbol.

Om du använder Vim måste du använda Vim-registren. Varje gång du kopierar/tar bort text, eller utför en kommandooperation, lagrar Vim denna information i registren. När du klistrar in den får Vim data från registret och drar in den i bufferten. Med andra ord fungerar Vim-register som ett urklipp för att lagra text och kommandohistorik.

Vim har totalt 10 olika typer av register, som vart och ett tjänar ett distinkt syfte. I den här handledningen kommer jag att utforska Vim-register, deras typer och användning.







Notera : För den här handledningen utför jag kommandon på macOS. Vim är en plattformsoberoende applikation, därför kommer kommandona som nämns i den här guiden att gälla för alla Vim-versioner oavsett operativsystem.



Vim Register Operatörer

Registren i Vim kan användas med operationer som kopiering, radering eller ändring. Varje operation har specifika operatorer, som att rycka text y används medan operatorn d används för att radera text. En lista över vanliga operatörer ges nedan:

åå Rycker (kopierar) raden
dd Tar bort raden
cc Tar bort raden och aktiverar INSERT-läget
s Tar bort tecknet och startar INSERT-läget för att ersätta
x Tar bort tecknet under markören
q Makro; lagrar uppsättningen kommandon i ett specifikt register

För att skriva ut den lagrade texten, sid eller P operatorer används:

sid Sätt (klistra in) texten efter markören
P Placera texten före markören

Dessa kommandon tar också räkningen. Använd till exempel för att kopiera 10 rader 10 åå kommando, på samma sätt som att klistra in de 10 kopiorna av en dragrad linje 10p .

Noteringsregister

För att lista alla register använd :Registrera eller :reg kommandot och för att lista det specifika registret använd :reg ', där är registernamnet (t.ex. 0-9, a-z).

På samma sätt, för att lista innehållet i flera register, använd :reg “ kommando.

I registerlistan ser du tre kolumner, Namn, typ och innehåll . Här betyder typen innehållstypen, inte registertypen. Tre typer innehåll kan modifieras med register.

  • l : Linjemässigt
  • c : Karaktärsmässigt
  • b : Blockmässigt

Till exempel om innehållet kopieras med linjevis operation (åå) då blir innehållstypen l , om det är karaktärsmässigt (ja) då blir typen c , och om innehållet kopieras blockvis (ctrl+v och y) då kommer typen att visas som b .

Arbeta med Vim Register

Vim-register kan användas för att lagra innehållet med hjälp av operatörerna för att rycka, ta bort och ändra. Det lagrade innehållet kan nås med hjälp av put-operatorerna.

Spara text i ett register
När du trycker på åå för att kopiera en rad, kommer den att sparas i standardregistret som kallas det namnlösa registret ('') . För att lagra den kopierade raden i ett specifikt register, offerten (“) följt av registernamn och operatör används.

'

Till exempel för att kopiera en rad till ett registernamn Med använda sig av ' zyy . På liknande sätt, om du har valt flera rader i VISUAL-läget, använd ' zy för att lagra raderna i z-registret.

Tillgång till registret
För att komma åt Vim-registret, offerten (“) symbolen används med registernamnet och p/P operatör.

's

Till exempel, om registernamnet är z och för att komma åt innehållet i DETTA register, använd ' Z P i NORMAL-läget. Men för att utföra samma operation i INSERT-läget, använd ctrl+r z .

' Normalt läge Använd citat för att lagra innehållet (“) , registrera namn (a-z) , och operatör (y, åå, d, c eller cc)
'sid Normalt läge Använd offert för att klistra in innehållet i ett register (“) , registrera namn (a-z) och p/P operatör
ctrl+r INSERT-läge För att klistra in innehållet i ett register, använd ctrl+r och registrera namn (a-z)

Du har grundidén med Vim-registren. Nu ska jag gå för en djupgående diskussion om varje registertyp och dess användning.

Typer av Vim-register

I Vim finns det 10 typer av register, designade för specifika ändamål.

  1. Namnlös registrering ('')
  2. Numrerade register (0-9)
  3. Litet raderingsregister (“-)
  4. Namngivna register (a-z eller A-Z)
  5. Skrivskyddade register (“:, “., “%)
  6. Alternativt filregister ('#)
  7. Uttrycksregister (“=)
  8. Urvals- och släppregister ('*, '+, +~)
  9. Black Hole Register (“_)
  10. Senaste sökmönsterregistret (“/)

1. Namnlös registrering ('')

Det är standardregistret för Vim att lagra ryckt eller raderad text med hjälp av å, åå, d, dd, s, eller x kommandon.

De :reg '' kommandot kan användas för att lista innehållet lagrat i det namnlösa registret.

För att klistra in det namnlösa registerinnehållet, använd kommandot put (p eller P) kommando. Som standard är sid kommandot placerar innehållslagringarna i det namnlösa registret. Alternativt kan data som lagras i det namnlösa registret också klistras in med hjälp av kommandot “”p.

I följande exempel har jag kopierat en rad med hjälp av åå kommandot och sätt det sedan 5 gånger med hjälp av räkna 5 med p (5p).

2. Numrerade register (0-9)

De numrerade registren används för att lagra den senast dragna eller raderade texten.

Registret 0 skiljer sig från register 1-9 . Registret 0 kommer alltid att lagra den senast ryckte texten. Till exempel, om jag drar en linje med hjälp av åå kommandot kommer raden att lagras i både namnlös och den 0 register.

Nu, om jag tar bort en rad med dd , kommer den raderade raden att lagras i det namnlösa registret och registret 1 medan den senast ryckte texten förblir i registret 0 . Så den senast ryckte texten kan nås när som helst via registret 0 .

Registren 1-9 lagra den senast raderade texten. Till exempel, om jag tar bort en rad med hjälp av dd kommandot kommer den raderade texten att lagras i både det namnlösa och registret 1 . Register 1 lagrar den senast raderade texten. Om jag tar bort en annan rad flyttas den tidigare raderade texten till registrering 2 , och det senaste kommer att lagras i det namnlösa och registret 1 . I huvudsak de numrerade registren (1-9) lagra historiken för raderad text.

Låt oss förstå det numrerade registret med ett exempel. Följande Vim-textfil består av 10 rader; låt oss rycka rad 3 använder sig av åå kommando. Låt oss nu kontrollera statusen för registren med kommandot :reg.

Den ryckte linjen är för närvarande i namnlös och 0 register. Låt oss nu ta bort alla rader en efter en med hjälp av dd kommando. Så sist rad 10 kommer att finnas i det namnlösa registret och register 1. Samtidigt kommer andra raderade rader att lagras i register 2-9 i stigande ordning.

Dessa linjer kan nås med hjälp av sid kommando. Till exempel att sätta texten i register 9 använda sig av '9p . Dessutom, om du vill sätta värdet på register 9 5 gånger, använd '95p .

3. Litet raderingsregister (“-)

Detta register lagrar den raderade texten om den är mindre än en rad, med hjälp av kommandon som x, daw, diw, dab, och igen . Dessutom, om du tar bort lite text med hjälp av VISUELL valläge, och om det är mindre än en rad, kommer det att lagras i det lilla raderingsregistret. I Vim betyder en rad en hel mening som slutar med punkt.

Till exempel, i följande fil, valde jag 3 ord samarbete och stöd från rad nummer 9 och raderade dem med hjälp av d operatör. Det lilla raderingsregistret kommer att användas för att spara detta val eftersom det inte är mer än en rad långt. Använd :reg '- kommando för att lista innehållet i det lilla raderingsregistret.

4. Namngivna register (a-z eller A-Z)

De namngivna registren används för att lagra användarspecifik text. Så, om du vill lagra text i ett anpassat register, då 26 register från a till Med kan användas.

Till exempel, jag rycker en rad i följande fil med ' zyy , kommer texten att lagras i Med registrera som visas i följande bild.

De namngivna registren med gemener och versaler har olika syften. Till exempel, om texten sparas i gemenregistret, så för att ersätta texten i det registret kommer gemenregistret att användas. Men för att lägga till texten i gemenregistret kommer versalregistret med samma namn att användas.

Låt oss förstå det genom ett exempel. Från följande fil lagrade jag rad 8 i register x använder sig av ' xyy .

För att lägga till text efter denna rad kommer jag först att välja några ord i VISUELL-läget. För att lägga till den markerade texten kommer jag att använda 'Xy kommando.

För att ersätta texten kommer jag återigen använda ' xyy .

5. Skrivskyddade register (., %, 🙂

Vim har 3 skrivskyddade register som lagrar det infogade text, filnamn, och senast avrättad kommando.

. Lagrar den senast infogade texten
% Lagrar filnamnet
: Lagrar det senast körda kommandot

Dessa register som namnet antydde kan inte ändras, men kan lätt nås.

För att sätta den senast infogade texten, använd '.s kommando.

För att skriva ut filnamnet, använd '%p kommando.

För att skriva ut det sista kommandot, använd ':s.

De @: kommandot kan användas för att upprepa det föregående kommandot i Vim. I följande exempel har jag tagit bort de första 3 raderna, när jag tryckte @: , 3 rader till raderas, därför upprepas föregående kommando.

6. Alternativt buffertregister ('#)

Den alternativa bufferten är en fil som öppnas i den aktuella bufferten. Registret '# lagrar filnamnet på den buffrade filen i den aktuella bufferten. Låt oss öppna en annan fil i samma buffert med hjälp av :e ~/.vimrc kommandot, notera att det aktuella filnamnet är file.txt .

För att stänga den öppnade bufferten, använd :bdelete eller :bwipeout kommando. Nu är det möjligt att se det alternativa filnamnet sparat i '# Registrera.

7. Uttrycksregister (“=)

Uttrycksregistret är ett unikt register som inte används för att lagra text, istället lagrar det uttrycket. Till exempel, om du har några siffror i filen, för att summera dessa siffror, kommer Vim-uttryck att användas.

Detta register kan nås med hjälp av '= i NORMAL-läget, och ctrl+r = i INSERT-läget.

Till exempel, för att hitta skillnaden mellan två siffror, tryck på '=, så visas likhetstecknet i statusfältet; skriv nu båda siffrorna med minustecknet (-) i dem och tryck på Stiga på nyckel. Tryck nu för att skriva ut skillnaden sid eller använd :sätta kommando.

För att komma åt värdet på uttrycksregistret, använd :reg “= kommando.

På samma sätt, för att få det absoluta värdet av två tal, använd =abs(värde1-värde2) uttryck.

På samma sätt, för att lagra utdata från systemkommandot, kan detta (uttrycks)register användas. Till exempel, om jag vill läsa innehållet i filen kommer jag att använda =system('katt ') , när du trycker på returtangenten kommer innehållet i utdata att lagras. Använda sid eller :sätta kommando kan innehållet i utdata placeras i bufferten.

Det finns en rad olika uttryck som kan användas i Vim. För att lära dig mer om Vim-uttryck, använd :hjälp uttryck och :hjälp uttryckssyntax kommandon.

8. Urvals- och släppregister ('*, '+, '~)

Vim har två urvalsregister '* (quotestar) och '+ (quoteplus) som används för att lagra texten från GUI. Dessa register används för att kopiera text från externa program som webbläsare eller andra ordbehandlare.

Om du till exempel kopierar ett textval från en webbläsare med hjälp av ctrl+c eller cmd+c den kommer att lagras i '* Registrera. Du kan dock inte använda sid eller :sätta för att klistra in denna text i Vim-redigeraren. Använda sig av '*s för att lägga in texten i Vim-redigeraren som kopieras från externa applikationer.

Det är viktigt att notera att båda '+ och '* register är anslutna till urklipp, så båda ('*p, '+p) kan användas för att klistra in texten i Vim-redigeraren. På samma sätt, för att lägga text från Vim, använd '*ååå för att rycka en rad och sedan klistra in den i valfri GUI-applikation, använd ctrl+v eller cmd+v.

Det är viktigt att notera att om båda registrerar sig (* & +) gör samma sak, vad är då poängen? Vim har två urvalsregister '*, '+ gör samma jobb och det är på grund av X11-fönstersystemet. X11 tillhandahåller två metoder för att lagra texten, en är urval och den andra är cut-buffertar . Valen ägs av applikationen och går förlorade när applikationen stängs, medan klippta buffertar håller texten lagrad i X-servern. För dessa två typer av lagring används registren '* och '+. För att lära dig mer om det, använd :hjälp x11-val kommando.

Nästa, den släpp register '~ som används för att lagra texten från den senaste dra och släpp-operationen. Om du till exempel släpper ett textval från en extern applikation, kommer det att lagras i släppregistret.

Om du tycker att det är svårt att klistra in från den externa applikationen med tre olika nycklar, kan du mappa det urval som ska lagras i det namnlösa registret.
Öppna vimrc fil, platsuppsättning urklipp=namnlös i den och spara filen. Nu, när du kopierar från ett externt program, kan det enkelt klistras in med hjälp av :sätta kommando eller p-tangent.

Notera : Släppregistret (~) kommer bara att vara tillgängligt om Vim är kompilerat med +dnd. För närvarande är det endast tillgängligt för GTK GUI.

9. Black Hole Register (“_)

Om du utför en kopierings- eller raderingsoperation i Vim-redigeraren lagrar den texten som standard i registren. Om du vill radera texten utan att lagra den i ett register, använd registret för svarta hål. Det här registret kommer inte att ändra det namnlösa registret (“”) vid radering av text.

Om jag till exempel vill radera alla rader utan att lagra dem i det namnlösa registret, så väljer jag först alla rader med ggVG och tryck sedan på '_d för att radera alla rader. På samma sätt, för att ta bort en enstaka rad till ett svart hål, använd '_dd .

10. Register för senaste sökmönster (“/)

Som namnet antyder sparar detta register det senaste sökmönstret med hjälp av / eller ? operatörer. Till exempel om du söker /Linux , använd sedan '/sid kommer att klistra in Linux-ordet.

Vim använder detta register för navigering med n och N nycklar efter sökningen.

Det är ett skrivbart register, dess innehåll kan ändras med hjälp av :let. Till exempel, för att spara Linux i detta register, använd :låt @/=’Linux’.

Register och makron

I Vim sparas makron även i de namngivna registren (a-z). Om du inte är medveten om makron är makron inställningskommandon som lagras i ett register. Denna uppsättning kommandon kan utföras genom att helt enkelt använda @-tecknet följt av makroregisternamnet. I huvudsak eliminerar makron behovet av att skriva flera kommandon upprepade gånger.

Till exempel för att lagra ett makro i ett register m , Jag kommer använda qmq . Jag vill flytta till 5 rader ner med hjälp av 5j och radera raden med dd . Använda sig av, qm för att starta makroinspelningen och tryck sedan på 5j och dd . Nu, för att avsluta makroinspelningen, tryck q . För att verifiera om makrot är lagrat eller inte används, :reg 'm eller :reg m.

För att utföra dessa kommandon med ett makroregister, använd :@m kommando.

Rensa ett register

Det finns ingen enkel metod för att rensa ett register eftersom de flesta register inte behöver rensas eftersom de så småningom kommer att skrivas över. Det finns dock några tekniker för att rensa ett registervärde i Vim-redigeraren.

1. Spela in ett tomt makro för att rensa ett register. Till exempel, för att rensa register m, använd qmq .

2. Ställ in tom text med hjälp av låta . Till exempel, för att rensa registret m, använd :låt @m=”.

3. Använd setreg() funktion med en tom sträng som argument. Till exempel för att rensa register m använd :call setreg(‘m’, ”).

Slutsats

Det finns 10 olika register med olika funktionalitet, vilket gör det nästan omöjligt att komma ihåg. Om du är nybörjare så skulle jag rekommendera att bara tänka på tre register, namnlösa register ('') , numrerade register (0-9) , och namngivna register (a-z) .

För att lagra text i ett register, använd en offert (“) tecken med registernamnet följt av ett operatörskommando (å, d, c) . För att klistra in texten från ett register, använd p- eller P-kommandon som föregås av citattecken (“) och registrera namn.

Du måste ha hört talas om det, om du gör en uppgift mer än två gånger, automatisera den sedan. Vim-register kan vara extremt användbara för att automatisera uppgifter och i slutändan förbättra upplevelsen. För att lära dig mer om Vim-register, använd :hjälp registrerar kommando.