Wat zijn Vim-registers

Wat Zijn Vim Registers



Vim-registers zijn opslagblokken die worden gebruikt om gekopieerde, verwijderde tekst en bewerkingen op te slaan. Deze registers zijn toegankelijk via hun tagnamen, die een cijfer, letter of symbool kunnen zijn.

Als u Vim gebruikt, moet u de Vim-registers gebruiken. Elke keer dat u tekst kopieert/verwijdert of een opdracht uitvoert, slaat Vim deze informatie op in de registers. Wanneer je het plakt, haalt Vim de gegevens uit het register en trekt deze naar de buffer. Met andere woorden, Vim-registers fungeren als een klembord om de tekst- en opdrachtgeschiedenis op te slaan.

Vim heeft in totaal 10 verschillende soorten registers, die elk een ander doel dienen. In deze tutorial zal ik Vim-registers, hun typen en gebruik onderzoeken.







Opmerking : Voor deze tutorial voer ik opdrachten uit op macOS. Vim is een platformonafhankelijke applicatie, daarom zijn de opdrachten die in deze handleiding worden vermeld van toepassing op alle Vim-versies, ongeacht het besturingssysteem.



Vim Register-operatoren

De registers in Vim kunnen worden gebruikt met bewerkingen zoals kopiëren, verwijderen of wijzigen. Elke bewerking heeft specifieke operators, zoals om tekst te kopiëren wordt de y-operator gebruikt, terwijl om tekst te verwijderen de d-operator wordt gebruikt. Hieronder vindt u een lijst met veelgebruikte operators:

jj Yanks (kopieert) de regel
dd Verwijdert de lijn
cc Verwijdert de regel en schakelt de INSERT-modus in
S Verwijdert het teken en start de INSERT-modus om te vervangen
X Verwijdert het teken onder de cursor
q Macro; slaat de reeks opdrachten op in een specifiek register

Om de opgeslagen tekst af te drukken, P of P operatoren worden gebruikt:

P Plaats (plak) de tekst na de cursor
P Plaats de tekst vóór de cursor

Deze opdrachten tellen ook mee. Als u bijvoorbeeld 10 regels wilt kopiëren, gebruikt u de 10jj commando, vergelijkbaar met het plakken van de 10 kopieën van een gerukt regelgebruik 10p .

Lijstregisters

Om alle registers weer te geven, gebruikt u de :register of :reg commando, en om het specifieke register weer te geven, gebruik de :reg, waarbij de registernaam is (bijvoorbeeld 0-9, a-z).

Op dezelfde manier gebruikt u de .om de inhoud van meerdere registers weer te geven :reg “ commando.

In de registerlijst ziet u drie kolommen: Naam, type en inhoud . Hier betekent het Type het inhoudstype, niet het registertype. Drie soorten van de inhoud kan worden gewijzigd met registers.

  • l : Lijnsgewijs
  • C : Karakteristiek
  • B : Bloksgewijs

Als de inhoud bijvoorbeeld regelsgewijs wordt gekopieerd (jj) dan zal het inhoudstype zijn l , als het karaktermatig is (Ja) dan zal het type zijn C , en of de inhoud bloksgewijs wordt gekopieerd (ctrl+v en y) dan wordt het type weergegeven als B .

Werken met Vim-registers

Vim-registers kunnen worden gebruikt om de inhoud op te slaan met behulp van de operatoren yank, delete en change. De opgeslagen inhoud is toegankelijk via de put-operatoren.

Tekst opslaan in een register
Wanneer u op de jj om een ​​regel te kopiëren, wordt deze opgeslagen in het standaardregister, het naamloze register (“”) . Om de gekopieerde regel in een specifiek register op te slaan, wordt het quote (“) gevolgd door de registernaam en operator worden gebruikt.

'

Bijvoorbeeld om een ​​regel naar een registernaam te kopiëren Met gebruik ' zy . Op dezelfde manier, als u meerdere regels heeft geselecteerd in de VISUAL-modus, gebruikt u “ zy om de lijnen in het z-register op te slaan.

Toegang tot het register
Om toegang te krijgen tot het Vim-register, het citaat (“) symbool wordt gebruikt met de registernaam en p/p exploitant.

'p

Als de registernaam bijvoorbeeld z is en u toegang wilt krijgen tot de inhoud van dit register, gebruikt u “ zp in de NORMAL-modus. Om dezelfde handeling uit te voeren in de INSERT-modus, gebruikt u echter ctrl+r z .

Normale modus Gebruik quote om de inhoud op te slaan (“) , registratienaam (a-z) , en operator (y, jj, d, c of cc)
p Normale modus Gebruik quote om de inhoud van een register te plakken (“) , registratienaam (a-z) En p/p exploitant
ctrl+r INSERT-modus Gebruik om de inhoud van een register te plakken ctrl+r en registratienaam (a-z)

Je hebt het basisidee van de Vim-registers. Nu ga ik voor een diepgaande bespreking van elk registertype en het gebruik ervan.

Soorten Vim-registers

In Vim zijn er 10 soorten registers, ontworpen voor specifieke doeleinden.

  1. Naamloze registratie (“”)
  2. Genummerde registers (0-9)
  3. Klein verwijderregister (“-)
  4. Genoemde registers (a-z of A-Z)
  5. Alleen-lezen registers (“:, “., “%)
  6. Alternatief bestandsregister (“#)
  7. Expressieregister (“=)
  8. Selectie- en neerzetregisters (“*, “+, +~)
  9. Register voor zwarte gaten (“_)
  10. Laatste zoekpatroonregistratie (“/)

1. Naamloos register (“”)

Het is het standaardregister van Vim om gekopieerde of verwijderde tekst op te slaan y, yy, d, dd, s, of X opdrachten.

De :reg “” commando kan worden gebruikt om de inhoud weer te geven die is opgeslagen in het naamloze register.

Gebruik de opdracht put om de naamloze registerinhoud te plakken (p of P) commando. Standaard is de P opdracht plaatst de inhoudswinkels in het naamloze register. Als alternatief kunnen de gegevens die zijn opgeslagen in het naamloze register ook worden geplakt met behulp van de opdracht “”p.

In het volgende voorbeeld heb ik een regel gekopieerd met behulp van jj commando en plaats het dan 5 keer met behulp van tel 5 met p (5p).

2. Genummerde registers (0-9)

De genummerde registers worden gebruikt om de laatst gekopieerde of verwijderde tekst op te slaan.

Het register 0 is anders dan registers 1-9 . Het register 0 slaat altijd de laatst gekopieerde tekst op. Als ik bijvoorbeeld een lijn ruk met behulp van jj commando, wordt de regel opgeslagen in zowel de naamloos en de 0 registreert.

Als ik nu een regel verwijder met dd , wordt de verwijderde regel opgeslagen in het naamloze register en register 1 terwijl de laatst gekopieerde tekst in het register blijft staan 0 . De laatst gekopieerde tekst is dus op elk moment toegankelijk via het register 0 .

De registers 1-9 sla de laatst verwijderde tekst op. Als ik bijvoorbeeld een regel verwijder met behulp van de dd commando, wordt de verwijderde tekst opgeslagen in zowel het naamloze als het register 1 . Register 1 slaat de laatst verwijderde tekst op. Als ik nog een regel verwijder, wordt de eerder verwijderde tekst verplaatst naar het register 2 , en de laatste wordt opgeslagen in de naamloze en register 1 . In wezen de genummerde registers (1-9) bewaar de geschiedenis van verwijderde tekst.

Laten we het genummerde register begrijpen met een voorbeeld. Het volgende Vim-tekstbestand bestaat uit 10 regels; laten we de rukken lijn 3 gebruik makend van jj commando. Laten we nu de status van de registers controleren met behulp van de opdracht :reg.

De getrokken lijn bevindt zich momenteel in de naamloos En 0 registreert. Laten we nu alle regels één voor één verwijderen met behulp van de dd commando. Dus als laatste lijn 10 bevindt zich in het naamloze register en register 1. Tegelijkertijd worden andere verwijderde regels in registers opgeslagen 2-9 in oplopende volgorde.

Deze lijnen zijn toegankelijk via de P commando. Om bijvoorbeeld de tekst van register 9 gebruik “9p . Bovendien, als u de waarde van register 9 5 keer, gebruik “95p .

3. Klein verwijderregister (“-)

Dit register slaat de verwijderde tekst op als deze minder dan een regel bedraagt, met behulp van opdrachten zoals x, daw, diw, dab, En opnieuw . Bovendien, als u wat tekst verwijdert met VISUEEL selectiemodus, en als het minder dan een regel is, wordt het opgeslagen in het kleine verwijderregister. In Vim betekent een regel een volledige zin die eindigt met een punt.

In het volgende bestand heb ik bijvoorbeeld 3 woorden geselecteerd samenwerking en ondersteuning van regelnummer 9 en verwijderde ze met de D exploitant. Het kleine verwijderregister zal worden gebruikt om deze selectie op te slaan, aangezien deze niet meer dan een regel lang is. Gebruik de :reg “- opdracht om de inhoud van het kleine verwijderregister weer te geven.

4. Registers op naam (a-z of A-Z)

De benoemde registers worden gebruikt om gebruikerspecifieke tekst op te slaan. Dus als u tekst in een aangepast register wilt opslaan, dan 26 registreert van A naar Met kan worden gebruikt.

Ik ruk bijvoorbeeld een regel in het volgende bestand met behulp van “ zy , wordt de tekst opgeslagen in de Met registreren zoals weergegeven in de volgende afbeelding.

De registers met kleine letters en hoofdletters hebben verschillende doeleinden. Als de tekst bijvoorbeeld in het kleineletterregister is opgeslagen, zal om de tekst van dat register te vervangen het kleineletterregister worden gebruikt. Om de tekst echter aan het kleineletterregister toe te voegen, wordt het hoofdletterregister met dezelfde naam gebruikt.

Laten we het begrijpen aan de hand van een voorbeeld. Uit het volgende bestand heb ik regel 8 in register opgeslagen X gebruik makend van ' xyy .

Om tekst na deze regel toe te voegen, selecteer ik eerst een paar woorden in de VISUELE modus. Om de geselecteerde tekst toe te voegen, gebruik ik de “Xy commando.

Om de tekst te vervangen, zal ik opnieuw de “ xyy .

5. Alleen-lezen registers (., %, 🙂

Vim heeft 3 alleen-lezen registers waarin de ingevoegde registers worden opgeslagen tekst, bestandsnaam, En laatst geëxecuteerd commando.

. Slaat de laatst ingevoegde tekst op
% Slaat de bestandsnaam op
: Slaat de laatst uitgevoerde opdracht op

Deze registers kunnen, zoals de naam suggereert, niet worden gewijzigd, maar zijn wel eenvoudig toegankelijk.

Om de laatst ingevoegde tekst te plaatsen, gebruikt u de '.P commando.

Om de bestandsnaam af te drukken, gebruikt u de '%P commando.

Om de laatste opdracht af te drukken, gebruikt u de ':P.

De @: commando kan worden gebruikt om het vorige commando in Vim te herhalen. In het volgende voorbeeld heb ik de eerste 3 regels verwijderd door op te drukken @: , worden nog 3 regels verwijderd, waardoor de vorige opdracht wordt herhaald.

6. Alternatief bufferregister (“#)

De alternatieve buffer is een bestand dat in de huidige buffer wordt geopend. Het “# register slaat de bestandsnaam van het gebufferde bestand op in de huidige buffer. Laten we een ander bestand in dezelfde buffer openen met behulp van de :e ~/.vimrc Houd er rekening mee dat de huidige bestandsnaam bestand.txt .

Om de geopende buffer te sluiten, gebruikt u de :bverwijder of :bwipeout commando. Nu is het mogelijk om de alternatieve bestandsnaam te zien die is opgeslagen in het “# register.

7. Uitdrukkingsregister (“=)

Het expressieregister is een uniek register dat niet wordt gebruikt om tekst op te slaan, maar waarin de expressie wordt opgeslagen. Als u bijvoorbeeld een paar getallen in het bestand hebt, worden Vim-expressies gebruikt om deze getallen op te tellen.

Dit register is toegankelijk via “= in de NORMAL-modus, en ctrl+r= in de INSERT-modus.

Om bijvoorbeeld het verschil tussen twee getallen te vinden, drukt u op “=, waarna het isgelijkteken in de statusbalk verschijnt; typ nu beide cijfers met het minteken (-) erin en druk op Binnenkomen sleutel. Om het verschil af te drukken, drukt u op P of gebruik de :neerzetten commando.

Om toegang te krijgen tot de waarde van het expressieregister, gebruikt u de :reg “= commando.

Op dezelfde manier kunt u de absolute waarde van twee getallen gebruiken =abs(waarde1-waarde2) uitdrukking.

Op dezelfde manier kan dit (expressie)register worden gebruikt om de uitvoer van het systeemcommando op te slaan. Als ik bijvoorbeeld de inhoud wil lezen van het bestand dat ik zal gebruiken =systeem(‘cat ’) , door op de Return-toets te drukken, wordt de inhoud van de uitvoer opgeslagen. De ... gebruiken P of :neerzetten commando, kan de inhoud van de uitvoer in de buffer worden geplaatst.

Er is een reeks uitdrukkingen die in Vim kunnen worden gebruikt. Gebruik voor meer informatie over Vim-expressies : help expressie En :help expressie-syntaxis opdrachten.

8. Selectie- en neerzetregisters (“*, “+, “~)

Vim heeft twee selectieregisters “* (quotestar) en “+ (quoteplus) die worden gebruikt om de tekst van de GUI op te slaan. Deze registers worden gebruikt om tekst uit externe programma's zoals browsers of andere tekstverwerkers te kopiëren.

Als u bijvoorbeeld een tekstselectie vanuit een browser kopieert met behulp van ctrl+c of cmd+c het wordt opgeslagen in de “* register. U kunt echter geen gebruik maken van P of :neerzetten om deze tekst in de Vim-editor te plakken. Gebruik '*P om de tekst in de Vim-editor te plaatsen die is gekopieerd uit externe applicaties.

Het is belangrijk op te merken dat beide “+ En “* registers zijn verbonden met het klembord, dus beide (“*p, “+p) kan worden gebruikt om de tekst in de Vim-editor te plakken. Op dezelfde manier gebruikt u om tekst uit Vim te plaatsen “*jj Gebruik om een ​​regel te kopiëren en deze vervolgens in een GUI-toepassing te plakken ctrl+v of cmd+v.

Het is essentieel op te merken dat als beide registers (* & +) doen hetzelfde, wat heeft het dan voor zin? Vim heeft twee selectieregisters “*, “+ doen hetzelfde werk en dat komt door het X11-venstersysteem. De X11 biedt twee methoden om de tekst op te slaan, één is selecties en de andere is snijbuffers . De selecties zijn eigendom van de applicatie en gaan verloren bij het sluiten van de applicatie, terwijl snijbuffers de tekst op de X-server bewaren. Voor deze twee soorten opslag worden de registers “* en “+” gebruikt. Gebruik om er meer over te weten te komen :help x11-selectie commando.

Vervolgens de laat register “~ die wordt gebruikt om de tekst van de laatste drag-and-drop-bewerking op te slaan. Als u bijvoorbeeld een tekstselectie uit een externe applicatie neerzet, wordt deze opgeslagen in het neerzetregister.

Als u het plakken vanuit de externe applicatie met behulp van drie verschillende toetsen moeilijk vindt, kunt u de selectie in kaart brengen die in het naamloze register moet worden opgeslagen.
Open de vimrc bestand, plaats ingesteld klembord=naamloos erin en sla het bestand op. Wanneer u nu vanuit een externe toepassing kopieert, kunt u deze eenvoudig plakken met behulp van de :neerzetten opdracht of p-toets.

Opmerking : Het dropregister (~) zal alleen beschikbaar zijn als de Vim is gecompileerd met +dnd. Momenteel is het alleen beschikbaar voor GTK GUI.

9. Register van zwarte gaten (“_)

Als u een kopieer- of verwijderbewerking uitvoert in de Vim-editor, wordt de tekst standaard in de registers opgeslagen. Als u de tekst wilt verwijderen zonder deze in een register op te slaan, gebruikt u het zwarte gatregister. Dit register zal het naamloze register (“”) niet wijzigen bij het verwijderen van tekst.

Als ik bijvoorbeeld alle regels wil verwijderen zonder ze op te slaan in het naamloze register, dan zal ik eerst alle regels selecteren met ggVG en druk vervolgens op '_D -toetsen om alle regels te verwijderen. Op dezelfde manier gebruikt u om een ​​enkele lijn naar een zwart gat te verwijderen “_dd .

10. Laatste zoekpatroonregistratie (“/)

Zoals de naam al doet vermoeden, slaat dit register het laatste zoekpatroon op met behulp van de / of ? exploitanten. Als u bijvoorbeeld zoekt /Linux , en vervolgens gebruiken '/P zal het Linux-woord plakken.

Vim gebruikt dit register voor navigatie met de N En N toetsen na het zoeken.

Het is een beschrijfbaar register, de inhoud ervan kan worden gewijzigd met behulp van de :let. Om Linux bijvoorbeeld in dit register op te slaan, gebruikt u :laat @/=’Linux’.

Registers en macro's

In Vim worden de macro's ook opgeslagen in de genoemde registers (a-z). Als u niet op de hoogte bent van macro's, zijn macro's ingestelde opdrachten die in een register zijn opgeslagen. Deze reeks opdrachten kan worden uitgevoerd door eenvoudigweg het @-teken te gebruiken, gevolgd door de macroregisternaam. In wezen elimineren macro's de noodzaak om meerdere opdrachten herhaaldelijk te typen.

Om bijvoorbeeld een macro in een register op te slaan M , Ik zal gebruiken qmq . Ik wil verhuizen naar de 5 lijnen naar beneden gebruiken 5j en verwijder de regel met dd . Gebruik, vierkante meter om de macro-opname te starten en druk vervolgens op 5j En dd . Om de macro-opname te beëindigen, drukt u op Q . Om te controleren of de macro is opgeslagen of niet, gebruikt u :reg “m of :reg m.

Om deze opdrachten met een macroregister uit te voeren, gebruikt u de :@M commando.

Een register wissen

Er is geen eenvoudige aanpak voor het wissen van een register, omdat de meeste registers niet hoeven te worden gewist omdat ze uiteindelijk zullen worden overschreven. Er zijn echter een paar technieken om een ​​registerwaarde in de Vim-editor te wissen.

1. Neem een ​​lege macro op om een ​​register te wissen. Om bijvoorbeeld register m te wissen, gebruikt u qmq .

2. Stel lege tekst in met behulp van de laten . Om bijvoorbeeld register m te wissen, gebruikt u :laat @m=”.

3. Gebruik de setreg() functie met een lege string als argument. Om bijvoorbeeld register m te wissen, gebruikt u :roep setreg(‘m’, ”).

Conclusie

Er zijn 10 verschillende registers met verschillende functionaliteiten, waardoor het bijna onmogelijk is om te onthouden. Als je een beginner bent, raad ik je aan om slechts drie registers in gedachten te houden, een naamloos register (“”) , genummerde registers (0-9) en benoemde registers (a-z) .

Gebruik een citaat om tekst in een register op te slaan (“) teken met de registernaam gevolgd door een operatoropdracht (y, d, c) . Om de tekst uit een register te plakken, gebruikt u p- of P-opdrachten voorafgegaan door een aanhalingsteken (“) en registratienaam.

Je hebt er vast wel eens van gehoord: als je een taak meer dan twee keer uitvoert, automatiseer deze dan. Vim-registers kunnen uiterst nuttig zijn om taken te automatiseren en uiteindelijk de ervaring te verbeteren. Voor meer informatie over Vim-registers gebruikt u de :help registreert commando.