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
- Oppføringsregistre
- Jobber med Vim Registers
- Typer Vim-registre
- 1. Unavngitt register (“”)
- 2. Nummererte registre (0-9)
- 3. Lite sletteregister (“-)
- 4. Navngitte registre (a-z eller A-Z)
- 5. Skrivebeskyttede registre (., %, 🙂
- 6. Alternativt bufferregister ('#)
- 7. Uttrykksregister (“=)
- 8. Utvalgs- og slippregistre ('*, '+, '~)
- 9. Black Hole Register (“_)
- 10. Register for siste søkemønster (“/)
- Registre og makroer
- Slette et register
- Konklusjon
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 «
På samme måte, for å liste innholdet i flere registre, bruk :reg «
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.
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) |
« |
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.
- Unavngitt register (“”)
- Nummererte registre (0-9)
- Lite sletteregister (“-)
- Navngitte registre (a-z eller A-Z)
- Skrivebeskyttede registre (“:, “., “%)
- Alternativt filregister ('#)
- Uttrykksregister (“=)
- Utvalgs- og slippregistre ('*, '+, +~)
- Black Hole Register (“_)
- 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
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 qm
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.