Hva er Vim-registre

Hva Er Vim Registre



Vim-registre er lagringsblokker som brukes til å lagre rykket, slettet tekst og operasjoner. Disse registrene kan nås ved å bruke merkenavnene deres, som kan være et tall, bokstav eller symbol.

Hvis du bruker Vim, må du bruke Vim-registrene. Hver gang du kopierer/sletter tekst, eller utfører en kommandooperasjon, lagrer Vim denne informasjonen i registrene. Når du limer den inn, henter Vim dataene fra registeret og trekker dem inn i bufferen. Med andre ord fungerer Vim-registre som en utklippstavle for å lagre tekst- og kommandohistorikk.

Vim har totalt 10 forskjellige typer registre, som hver tjener et eget formål. I denne opplæringen skal jeg utforske Vim-registre, deres typer og bruk.







Merk : For denne opplæringen utfører jeg kommandoer på macOS. Vim er en tverrplattformapplikasjon, derfor vil kommandoene nevnt i denne veiledningen gjelde for alle Vim-versjoner uavhengig av operativsystem.



Vim Register Operatører

Registrene i Vim kan brukes ved å bruke operasjoner som kopiering, sletting eller endring. Hver operasjon har spesifikke operatorer, for eksempel å rykke tekst y brukes mens for å slette tekst brukes d-operatoren. En liste over ofte ansatte operatører er gitt nedenfor:

åå Rykker (kopierer) linjen
dd Sletter linjen
cc Sletter linjen og aktiverer INSERT-modus
s Sletter tegnet og starter INSERT-modus for å erstatte
x Sletter tegnet under markøren
q Makro; lagrer settet med kommandoer til et spesifikt register

For å skrive ut den lagrede teksten, s eller P operatører brukes:

s Sett (lim inn) teksten etter markøren
P Sett teksten foran markøren

Disse kommandoene tar også tellingen. For å kopiere 10 linjer, bruk for eksempel 10 år kommando, på samme måte som å lime inn de 10 kopiene av en trukket linjebruk 10 s .

Oppføringsregistre

For å liste opp alle registrene bruk :registrere eller :reg kommandoen, og for å liste opp det spesifikke registeret, bruk :reg «, der er registernavnet (f.eks. 0-9, a-z).

På samme måte, for å liste innholdet i flere registre, bruk :reg « « « kommando.

I registerlisten vil du se tre kolonner, Navn, type og innhold . Her betyr Type innholdstypen, ikke registertypen. Tre typer innhold kan endres med registre.

  • l : Linjemessig
  • c : Karaktermessig
  • b : Blokkvis

For eksempel hvis innholdet kopieres ved bruk av linjevis operasjon (åå) da blir innholdstypen l , hvis det er karaktermessig (ja) da blir typen c , og hvis innholdet kopieres blokkvis (ctrl+v og y) så vil typen vises som b .

Jobber med Vim Registers

Vim-registre kan brukes til å lagre innholdet ved å bruke operatørene for å trekke, slette og endre. Det lagrede innholdet kan nås ved å bruke put-operatørene.

Lagre tekst i et register
Når du trykker på åå tasten for å kopiere en linje, vil den bli lagret i standardregisteret kalt det navnløse registeret (“”) . For å lagre den kopierte linjen til et spesifikt register, tilbudet (“) etterfulgt av registernavn og operatør brukes.

'

For eksempel å kopiere en linje til et registernavn Med bruk ' zyy . På samme måte, hvis du har valgt flere linjer i VISUELL-modus, bruk ' zy for å lagre linjene i z-registeret.

Tilgang til registeret
For å få tilgang til Vim-registeret, sitatet (“) symbol brukes med registernavnet og p/P operatør.

«s

Hvis for eksempel registernavnet er z og for å få tilgang til innholdet i DETTE registeret, bruk ' zp i NORMAL-modus. For å utføre den samme operasjonen i INSERT-modus, bruk ctrl+r z .

« NORMAL modus Bruk sitat for å lagre innholdet (“) , registernavn (a-z) , og operatør (y, åå, d, c eller cc)
«s NORMAL modus Bruk sitat for å lime inn innholdet i et register (“) , registernavn (a-z) og p/P operatør
ctrl+r INSERT-modus For å lime inn innholdet i et register, bruk ctrl+r og registrere navn (a-z)

Du har grunnideen til Vim-registrene. Nå vil jeg gå for en grundig diskusjon av hver registertype og bruken av den.

Typer Vim-registre

I Vim er det 10 typer registre, designet for spesifikke formål.

  1. Unavngitt register (“”)
  2. Nummererte registre (0-9)
  3. Lite sletteregister (“-)
  4. Navngitte registre (a-z eller A-Z)
  5. Skrivebeskyttede registre (“:, “., “%)
  6. Alternativt filregister ('#)
  7. Uttrykksregister (“=)
  8. Utvalgs- og slippregistre ('*, '+, +~)
  9. Black Hole Register (“_)
  10. Siste søkemønsterregister (“/)

1. Unavngitt register (“”)

Det er standardregisteret til Vim å lagre rykket eller slettet tekst ved hjelp av å, åå, d, dd, s, eller x kommandoer.

De :reg '' kommandoen kan brukes til å liste innholdet som er lagret i det navnløse registeret.

For å lime inn det navnløse registerinnholdet, bruk put-kommandoen (p eller P) kommando. Som standard er s kommandoen legger innholdslagrene i det navnløse registeret. Alternativt kan dataene som er lagret i det navnløse registeret også limes inn ved å bruke “”p-kommandoen.

I følgende eksempel har jeg kopiert en linje ved hjelp av åå kommandoen og deretter sette den 5 ganger ved å bruke telle 5 med p (5p).

2. Nummererte registre (0-9)

De nummererte registrene brukes til å lagre den siste rykket eller slettet tekst.

Registeret 0 er forskjellig fra registre 1-9 . Registeret 0 vil alltid lagre den sist rykkete teksten. For eksempel hvis jeg drar en linje ved hjelp av åå kommandoen vil linjen bli lagret i både ikke navngitt og 0 registrerer.

Nå, hvis jeg sletter en linje ved hjelp av dd , vil den slettede linjen bli lagret i det navnløse registeret og registeret 1 mens den sist rykkete teksten forblir i registeret 0 . Så den siste rykket tekst kan nås når som helst gjennom register 0 .

Registrene 1-9 lagre den siste slettede teksten. For eksempel, hvis jeg sletter en linje ved hjelp av dd kommandoen, vil den slettede teksten bli lagret i både det navnløse og registeret 1 . Register 1 vil lagre den siste slettede teksten. Hvis jeg sletter en annen linje, flyttes den tidligere slettede teksten til registrering 2 , og den siste vil bli lagret i det navnløse og registeret 1 . I hovedsak de nummererte registrene (1-9) lagre historikken for slettet tekst.

La oss forstå det nummererte registeret med et eksempel. Følgende Vim-tekstfil består av 10 linjer; la oss rive linje 3 ved hjelp av åå kommando. La oss nå sjekke statusen til registrene ved å bruke kommandoen :reg.

Den rykket linjen er for øyeblikket i ikke navngitt og 0 registrerer. La oss nå slette alle linjene en etter en ved å bruke dd kommando. Så, sist linje 10 vil ligge i det navnløse registeret og register 1. Samtidig vil andre slettede linjer lagres i registre 2-9 i stigende rekkefølge.

Disse linjene kan nås ved å bruke s kommando. For eksempel for å sette teksten til registeret 9 bruk '9p . Videre, hvis du ønsker å sette verdien av register 9 5 ganger, bruk '95 s .

3. Lite sletteregister (“-)

Dette registeret lagrer den slettede teksten hvis den er mindre enn en linje, ved hjelp av kommandoer som x, daw, diw, dab, og en gang til . Dessuten, hvis du sletter noe tekst ved hjelp av VISUELL valgmodus, og hvis den er mindre enn en linje, vil den bli lagret i det lille sletteregisteret. I Vim betyr en linje en hel setning som slutter med punktum.

For eksempel, i den følgende filen valgte jeg 3 ord samarbeid og støtte fra linje nummer 9 og slettet dem ved hjelp av d operatør. Det lille sletteregisteret vil bli brukt til å lagre dette valget siden det ikke er mer enn en linje langt. Bruke :reg '- kommando for å liste innholdet i det lille sletteregisteret.

4. Navngitte registre (a-z eller A-Z)

De navngitte registrene brukes til å lagre brukerspesifikk tekst. Så hvis du vil lagre tekst i et tilpasset register, da 26 registrerer fra en til Med kan bli brukt.

For eksempel drar jeg en linje i følgende fil ved å bruke ' zyy , vil teksten lagres i Med registrer deg som vist i bildet nedenfor.

De små og store navngitte registrene har forskjellige formål. For eksempel, hvis teksten er lagret i småbokregisteret, så for å erstatte teksten til det registeret vil småbokstavregisteret bli brukt. Men for å legge til teksten til småbokregisteret vil storbokstavregisteret med samme navn brukes.

La oss forstå det gjennom et eksempel. Fra følgende fil lagret jeg linje 8 i registeret x ved hjelp av ' xyy .

For å legge til tekst etter denne linjen, vil jeg først velge noen få ord i VISUELL-modus. For å legge til den valgte teksten, vil jeg bruke 'Xy kommando.

For å erstatte teksten, vil jeg igjen bruke ' xyy .

5. Skrivebeskyttede registre (., %, 🙂

Vim har 3 skrivebeskyttede registre som lagrer det innsatte tekst, filnavn, og sist henrettet kommando.

. Lagrer den sist innsatte teksten
% Lagrer filnavnet
: Lagrer den sist utførte kommandoen

Disse registrene som navnet antydet kan ikke endres, men er lett tilgjengelige.

For å sette inn den sist innsatte teksten, bruk «.s kommando.

For å skrive ut filnavnet, bruk '%p kommando.

For å skrive ut den siste kommandoen, bruk ':s.

De @: kommandoen kan brukes til å gjenta den forrige kommandoen i Vim. I følgende eksempel har jeg slettet de første 3 linjene, ved å trykke @: , 3 linjer til blir slettet, og gjentar derfor forrige kommando.

6. Alternativt bufferregister ('#)

Den alternative bufferen er en fil som åpnes i gjeldende buffer. '#-registeret lagrer filnavnet til den bufrede filen i gjeldende buffer. La oss åpne en annen fil i samme buffer ved å bruke :e ~/.vimrc kommando, merk at gjeldende filnavn er file.txt .

For å lukke den åpnede bufferen, bruk :bdelete eller :bwipeout kommando. Nå er det mulig å se det alternative filnavnet lagret i «# registrere.

7. Uttrykksregister (“=)

Uttrykksregisteret er et unikt register som ikke brukes til å lagre tekst, i stedet lagrer det uttrykket. For eksempel, hvis du har noen få tall i filen, for å summere disse tallene, vil Vim-uttrykk bli brukt.

Dette registeret kan nås ved hjelp av '= i NORMAL-modus, og ctrl+r = i INSERT-modus.

For å finne forskjellen mellom to tall, trykk for eksempel “=, og likhetstegnet vil vises i statuslinjen; skriv nå inn begge tallene med minustegnet (-) i dem og trykk på Tast inn nøkkel. Nå, for å skrive ut forskjellen, trykk s eller bruk :sette kommando.

For å få tilgang til verdien til uttrykksregisteret, bruk :reg “= kommando.

På samme måte, for å få den absolutte verdien av to tall, bruk =abs(verdi1-verdi2) uttrykk.

På samme måte, for å lagre utdata fra systemkommandoen, kan dette (uttrykks)registeret brukes. For eksempel, hvis jeg vil lese innholdet i filen vil jeg bruke =system('katt ') , ved å trykke på Retur-tasten vil innholdet i utgangen bli lagret. Bruker s eller :sette kommando, kan innholdet i utdata plasseres i bufferen.

Det er en rekke uttrykk som kan brukes i Vim. For å lære mer om Vim-uttrykk, bruk :hjelp uttrykk og :hjelp uttrykk-syntaks kommandoer.

8. Utvalgs- og slippregistre ('*, '+, '~)

Vim har to utvalgsregistre «* (quotestar) og '+ (quoteplus) som brukes til å lagre teksten fra GUI. Disse registrene brukes til å kopiere tekst fra eksterne programmer som nettlesere eller andre tekstbehandlere.

Hvis du for eksempel kopierer et tekstutvalg fra en nettleser ved å bruke ctrl+c eller cmd+c den vil bli lagret i «* registrere. Du kan imidlertid ikke bruke s eller :sette for å lime inn denne teksten i Vim-redigeringsprogrammet. Bruk «*s for å legge teksten inn i Vim-editoren som er kopiert fra eksterne applikasjoner.

Det er viktig å merke seg at begge deler '+ og «* registre er koblet til utklippstavlen, så begge deler ('*p, '+p) kan brukes til å lime inn teksten i Vim-editoren. På samme måte, for å legge inn tekst fra Vim, bruk «*åå for å rykke en linje og deretter lime den inn i en hvilken som helst GUI-applikasjon, bruk ctrl+v eller cmd+v.

Det er viktig å merke seg at hvis begge registrerer (* & +) gjør det samme, hva er da vitsen? Vim har to utvalgsregistre '*, '+ gjør den samme jobben, og det er på grunn av X11-vindussystemet. X11 gir to metoder for å lagre teksten, den ene er valg og den andre er kutt-buffere . Valgene eies av applikasjonen og går tapt når applikasjonen lukkes, mens kuttede buffere holder teksten lagret i X-serveren. For disse to lagringstypene brukes '*- og '+-registrene. For å lære mer om det, bruk :hjelp x11-valg kommando.

Neste, den slipp register '~ som brukes til å lagre teksten fra den siste dra-og-slipp-operasjonen. Hvis du for eksempel dropper et tekstutvalg fra en ekstern applikasjon, blir det lagret i slippregisteret.

Hvis du synes det er vanskelig å lime inn fra den eksterne applikasjonen med tre forskjellige taster, kan du kartlegge utvalget som skal lagres i det navnløse registeret.
Åpne vimrc fil, stedsett utklippstavle=unavngitt i den, og lagre filen. Nå, hver gang du kopierer fra et eksternt program, kan det enkelt limes inn ved hjelp av :sette kommando eller p-tast.

Merk : Slippregisteret (~) vil bare være tilgjengelig hvis Vim er kompilert med +dnd. Foreløpig er den bare tilgjengelig for GTK GUI.

9. Black Hole Register (“_)

Hvis du utfører en kopierings- eller sletteoperasjon i Vim-editoren, lagrer den teksten som standard i registrene. Hvis du ønsker å slette teksten uten å lagre den i et register, bruk sorthullsregisteret. Dette registeret vil ikke endre det navnløse registeret (“”) ved sletting av tekst.

Hvis jeg for eksempel ønsker å slette alle linjene uten å lagre dem i det navnløse registeret, vil jeg først velge alle linjene ved å bruke ggVG og trykk deretter «_d tastene for å slette alle linjene. På samme måte, for å slette en enkelt linje til et svart hull, bruk '_dd .

10. Register for siste søkemønster (“/)

Som navnet antyder, lagrer dette registeret det siste søkemønsteret ved hjelp av / eller ? operatører. For eksempel hvis du søker /Linux , og deretter bruke “/s vil lime inn Linux-ordet.

Vim bruker dette registeret for navigering med n og N nøkler etter søket.

Det er et skrivbart register, innholdet kan endres ved å bruke :let. For å lagre Linux i dette registeret, bruk for eksempel :let @/=’Linux’.

Registre og makroer

I Vim lagres makroene også i de navngitte registrene (a-z). Hvis du ikke er klar over makroer, er makroer settkommandoer lagret i et register. Dette settet med kommandoer kan utføres ved ganske enkelt å bruke @-tegnet etterfulgt av makroregisternavnet. I hovedsak eliminerer makroer behovet for å skrive flere kommandoer gjentatte ganger.

For eksempel for å lagre en makro i et register m , Jeg vil bruke qmq . Jeg ønsker å flytte til 5 linjer ned ved hjelp av 5j og slett linjen ved hjelp av dd . Bruk, qm for å starte makroopptaket, og trykk deretter 5j og dd . Nå, for å avslutte makroopptaket, trykk q . For å bekrefte om makroen er lagret eller ikke brukes, :reg 'm eller :reg m.

For å utføre disse kommandoene med et makroregister, bruk :@m kommando.

Slette et register

Det er ingen enkel tilnærming til å tømme et register fordi de fleste registre ikke trenger å bli slettet fordi de til slutt vil bli overskrevet. Det er imidlertid noen få teknikker for å slette en registerverdi i Vim-editoren.

1. Ta opp en tom makro for å slette et register. For å slette register m, bruk for eksempel qmq .

2. Angi tom tekst ved å bruke la . For å tømme registeret m, bruk for eksempel :la @m='.

3. Bruk setreg() funksjon med en tom streng som argument. For eksempel for å slette register m bruk :call setreg(‘m’, ”).

Konklusjon

Det er 10 forskjellige registre med forskjellige funksjoner, noe som gjør det nesten umulig å huske. Hvis du er nybegynner, vil jeg anbefale å huske på bare tre registre, ikke navngitte register (“”) , nummererte registre (0-9) , og navngitte registre (a-z) .

For å lagre tekst i et register, bruk et tilbud (“) tegn med registernavnet etterfulgt av en operatørkommando (å, d, c) . For å lime inn teksten fra et register, bruk p- eller P-kommandoer med anførselstegn foran (“) og registrere navn.

Du må ha hørt om det, hvis du gjør en oppgave mer enn to ganger, automatiser den. Vim-registre kan være ekstremt nyttige for å automatisere oppgaver og til slutt forbedre opplevelsen. For å lære mer om Vim-registre, bruk :hjelp registrerer kommando.