Mitä ovat Vim-rekisterit

Mita Ovat Vim Rekisterit



Vim-rekisterit ovat tallennuslohkoja, joita käytetään ryöstetyn, poistetun tekstin ja toimintojen tallentamiseen. Näihin rekistereihin pääsee käyttämällä niiden tunnisteen nimiä, jotka voivat olla numeroita, kirjaimia tai symboleja.

Jos käytät Vimia, sinun on käytettävä Vim-rekistereitä. Joka kerta kun kopioit/poistat tekstiä tai suoritat komentotoiminnon, Vim tallentaa nämä tiedot rekistereihin. Kun liität sen, Vim saa tiedot rekisteristä ja vetää ne puskuriin. Toisin sanoen Vim-rekisterit toimivat leikepöydänä tekstin ja komentohistorian tallentamiseen.

Vimillä on yhteensä 10 erilaista rekisterityyppiä, joista jokainen palvelee erillistä tarkoitusta. Tässä opetusohjelmassa tutkin Vim-rekistereitä, niiden tyyppejä ja käyttöä.







Huomautus : Tässä opetusohjelmassa suoritan komentoja macOS:ssä. Vim on monialustainen sovellus, joten tässä oppaassa mainitut komennot koskevat kaikkia Vim-versioita käyttöjärjestelmästä riippumatta.



Vim-rekisterioperaattorit

Vimin rekistereitä voidaan käyttää esimerkiksi kopioimalla, poistamalla tai muuttamalla. Jokaisella toiminnolla on tietyt operaattorit, kuten tekstin nykimiseen käytetään y-operaattoria, kun taas tekstin poistamiseen käytetään d-operaattoria. Alla on luettelo yleisesti työskentelevistä operaattoreista:

vv Ynks (kopioi) linjan
dd Poistaa rivin
cc Poistaa rivin ja ottaa INSERT-tilan käyttöön
s Poistaa merkin ja käynnistää INSERT-tilan korvaamaan
x Poistaa merkin kohdistimen alla
q Makro; tallentaa komentojoukon tiettyyn rekisteriin

Jos haluat tulostaa tallennetun tekstin, s tai P operaattoreita käytetään:

s Aseta (liitä) teksti kohdistimen jälkeen
P Aseta teksti kohdistimen eteen

Nämä komennot ottavat myös määrän. Jos haluat esimerkiksi kopioida 10 riviä, käytä 10 vv -komento, samalla tavalla kuin liitä 10 kopiota nykäisyn rivin käytöstä 10p .

Listausrekisterit

Listaa kaikki rekisterit käyttämällä : rekisteröidy tai :reg -komentoa ja luettele tietty rekisteri käyttämällä :reg ', jossa on rekisterin nimi (esim. 0-9, a-z).

Käytä samalla tavalla useiden rekisterien sisällön luetteloimiseksi :reg “ komento.

Rekisteriluettelossa näet kolme saraketta, Nimi, tyyppi ja sisältö . Tässä Tyyppi tarkoittaa sisältötyyppiä, ei rekisterityyppiä. Kolme tyypit sisältöä voidaan muokata rekistereillä.

  • l : Linjakohtaisesti
  • c : Luonteeltaan
  • b : lohkoittain

Esimerkiksi, jos sisältö kopioidaan rivikohtaisesti (yy) silloin sisältötyyppi on l , jos se on luonteeltaan viisasta (Joo) sitten tyyppi on c , ja jos sisältö kopioidaan lohkoittain (ctrl+v ja y) sitten tyyppi näytetään muodossa b .

Työskentely Vim Registersin kanssa

Vim-rekistereitä voidaan käyttää sisällön tallentamiseen käyttämällä jenkki-, poisto- ja vaihdaoperaattoreita. Tallennettuun sisältöön pääsee käsiksi put-operaattoreilla.

Tekstin tallentaminen rekisteriin
Kun painat vv -näppäintä rivin kopioimiseksi, se tallennetaan oletusrekisteriin, jota kutsutaan nimettömäksi rekisteriksi ('' . Kopioidun rivin tallentaminen tiettyyn rekisteriin, lainaus (“) käytetään rekisterin nimeä ja operaattoria.

'

Esimerkiksi rivin kopioiminen rekisterin nimeen Kanssa käytä' zyy . Vastaavasti, jos olet valinnut useita rivejä VISUAL-tilassa, käytä ' zy tallentaaksesi rivit z-rekisteriin.

Pääsy rekisteriin
Päästäksesi Vim-rekisteriin, tarjous (“) symbolia käytetään rekisterin nimen ja kanssa p/P operaattori.

's

Jos rekisterin nimi on esimerkiksi z ja päästäksesi tämän IS-rekisterin sisältöön, käytä ' zp NORMAALI-tilassa. Kuitenkin, jos haluat suorittaa saman toiminnon INSERT-tilassa, käytä ctrl+r z .

' Normaalitila Käytä lainausta sisällön tallentamiseen (“) , rekisteröi nimi (a-z) , ja operaattori (y, vv, d, c tai cc)
's Normaalitila Liitä rekisterin sisältö käyttämällä lainausta (“) , rekisteröi nimi (a-z) ja p/P operaattori
ctrl+r INSERT-tila Liitä rekisterin sisältö käyttämällä ctrl+r ja rekisteröi nimi (a-z)

Sinulla on perusidea Vim-rekistereistä. Nyt käyn syvällisen keskustelun kustakin rekisterityypistä ja sen käytöstä.

Vim-rekisterien tyypit

Vimissä on 10 tyyppiä rekistereitä, jotka on suunniteltu tiettyihin tarkoituksiin.

  1. Nimetön rekisteri (“”)
  2. Numeroidut rekisterit (0-9)
  3. Pieni poistorekisteri ('-)
  4. Nimetyt rekisterit (a-z tai A-Z)
  5. Vain luku -rekisterit (':, '., '%)
  6. Vaihtoehtoinen tiedostorekisteri ('#)
  7. Ilmaisurekisteri (“=)
  8. Valinta- ja pudotusrekisterit ('*, '+, +~)
  9. Black Hole Register ('_)
  10. Viimeisin hakumallirekisteri (“/)

1. Nimetön rekisteri (“”)

Se on Vimin oletusrekisteri, joka tallentaa ryöstetyn tai poistetun tekstin v, vv, d, dd, s, tai x komentoja.

The :reg '' -komentoa voidaan käyttää listaamaan nimettömään rekisteriin tallennettu sisältö.

Liitä nimeämätön rekisterisisältö käyttämällä put-komentoa (p tai P) komento. Oletuksena s -komento asettaa sisältövarastot nimettömään rekisteriin. Vaihtoehtoisesti nimettömään rekisteriin tallennetut tiedot voidaan liittää myös ''p-komennolla.

Seuraavassa esimerkissä olen kopioinut rivin käyttämällä vv komento ja kirjoita se sitten 5 kertaa käyttämällä count 5 ja p (5p).

2. Numeroidut rekisterit (0-9)

Numeroituja rekistereitä käytetään viimeksi vedetyn tai poistetun tekstin tallentamiseen.

Rekisteri 0 eroaa rekistereistä 1-9 . Rekisteri 0 tallentaa aina viimeksi vedetyn tekstin. Esimerkiksi jos vedän linjaa käyttämällä vv -komento, rivi tallennetaan molempiin nimetön ja 0 rekisterit.

Jos nyt poistan rivin käyttämällä dd , poistettu rivi tallennetaan nimettömään rekisteriin ja rekisteriin 1 kun taas viimeksi nykitty teksti säilyy rekisterissä 0 . Joten viimeksi nykitty teksti on käytettävissä milloin tahansa rekisterin kautta 0 .

Rekisterit 1-9 tallentaa viimeksi poistetun tekstin. Jos esimerkiksi poistan rivin käyttämällä dd -komentoa, poistettu teksti tallennetaan sekä nimettömään että rekisteriin 1 . Rekisteri 1 tallentaa viimeksi poistetun tekstin. Jos poistan toisen rivin, aiemmin poistettu teksti siirtyy rekisteriin 2 , ja uusimmat tallennetaan nimettömään ja rekisteriin 1 . Olennaista, numeroidut rekisterit (1-9) tallentaa poistetun tekstin historian.

Ymmärretään numeroitu rekisteri esimerkillä. Seuraava Vim-tekstitiedosto sisältää 10 riviä; nostetaan rivi 3 käyttämällä vv komento. Tarkastetaan nyt rekisterien tila :reg-komennolla.

Nykitty linja on tällä hetkellä nimetön ja 0 rekisterit. Poistetaan nyt kaikki rivit yksitellen käyttämällä dd komento. Eli viimeiseksi rivi 10 on nimettömässä rekisterissä ja rekisterissä 1. Samanaikaisesti muut poistetut rivit tallennetaan rekistereihin 2-9 nousevassa järjestyksessä.

Näille riveille pääsee käyttämällä s komento. Esimerkiksi rekisterin tekstin laittaminen 9 käyttää '9p . Lisäksi, jos haluat laittaa rekisterin arvon 9 5 kertaa, käytä '95p .

3. Pieni poistorekisteri ('-)

Tämä rekisteri tallentaa poistetun tekstin, jos se on pienempi kuin rivi, käyttämällä komentoja, kuten x, daw, diw, dab, ja uudelleen . Lisäksi, jos poistat tekstiä käyttämällä VISUAALINEN valintatilassa, ja jos se on pienempi kuin rivi, se tallennetaan pieneen poistorekisteriin. Vimissä rivi tarkoittaa kokonaista lausetta, joka päättyy pisteeseen.

Esimerkiksi seuraavassa tiedostossa valitsin 3 sanaa yhteistyötä ja tukea riviltä numero 9 ja poisti ne käyttämällä d operaattori. Pientä poistorekisteriä käytetään tämän valinnan tallentamiseen, koska se on enintään riviä pitkä. Käytä :reg '- -komento listatakseen pienen poistorekisterin sisällön.

4. Nimetyt rekisterit (a-z tai A-Z)

Nimettyjä rekistereitä käytetään käyttäjäkohtaisen tekstin tallentamiseen. Joten jos haluat tallentaa tekstiä mukautettuun rekisteriin, niin 26 rekisteröidyt alkaen a to Kanssa voidaan käyttää.

Esimerkiksi vedän riviä seuraavassa tiedostossa käyttämällä ' zyy , teksti tallennetaan kansioon Kanssa rekisteröidy seuraavan kuvan mukaisesti.

Pienillä ja isoilla kirjaimilla nimetyillä rekistereillä on eri tarkoitus. Esimerkiksi jos teksti on tallennettu pienikokoiseen rekisteriin, niin tämän rekisterin tekstin korvaamiseen käytetään pienkirjaimia. Tekstin liittämiseen pienillä kirjaimilla olevaan rekisteriin käytetään kuitenkin samannimistä isojen kirjainten rekisteriä.

Ymmärretään se esimerkin kautta. Seuraavasta tiedostosta tallensin rivin 8 rekisteriin x käyttämällä ' xyy .

Jos haluat lisätä tekstiä tämän rivin jälkeen, valitsen ensin muutaman sanan VISUAL-tilassa. Liitä valitun tekstin, käytän 'Xy komento.

Korvaakseni tekstin käytän uudelleen ' xyy .

5. Vain luku -rekisterit (., %, 🙂

Vimillä on 3 vain luku -rekisteriä, jotka tallentavat lisätyn teksti, tiedoston nimi, ja viimeksi teloitettu komento.

. Tallentaa viimeksi lisätyn tekstin
% Tallentaa tiedoston nimen
: Tallentaa viimeksi suoritetun komennon

Näitä rekistereitä ei nimen mukaan voi muuttaa, mutta niihin pääsee helposti käsiksi.

Aseta viimeksi lisätty teksti käyttämällä '.s komento.

Voit tulostaa tiedostonimen käyttämällä '%p komento.

Voit tulostaa viimeisen komennon käyttämällä ':p.

The @: -komentoa voidaan käyttää edellisen komennon toistamiseen Vimissä. Seuraavassa esimerkissä olen poistanut 3 ensimmäistä riviä painamalla @: , 3 muuta riviä poistetaan, joten edellinen komento toistetaan.

6. Vaihtoehtoinen puskurirekisteri ('#)

Vaihtoehtoinen puskuri on tiedosto, joka avataan nykyisessä puskurissa. '#-rekisteri tallentaa puskuroidun tiedoston tiedostonimen nykyiseen puskuriin. Avataan toinen tiedosto samassa puskurissa käyttämällä :e ~/.vimrc -komentoa, huomaa, että nykyinen tiedostonimi on tiedosto.txt .

Sulje avattu puskuri käyttämällä :bdelete tai :bwipeout komento. Nyt on mahdollista nähdä vaihtoehtoinen tiedostonimi, joka on tallennettu tiedostoon '# rekisteröidy.

7. Lauserekisteri (“=)

Lausekerekisteri on ainutlaatuinen rekisteri, jota ei käytetä tekstin tallentamiseen, vaan se tallentaa lausekkeen. Jos tiedostossa on esimerkiksi muutamia lukuja, näiden lukujen summaamiseen käytetään Vim-lausekkeita.

Tähän rekisteriin pääsee käyttämällä '= NORMAL-tilassa ja ctrl+r = INSERT-tilassa.

Jos esimerkiksi haluat selvittää kahden luvun välisen eron, paina “=, jolloin yhtäläisyysmerkki tulee näkyviin tilariville. kirjoita nyt molemmat numerot miinusmerkillä (-) ja paina Tulla sisään avain. Tulosta ero nyt painamalla s tai käytä :laittaa komento.

Voit käyttää lausekerekisterin arvoa käyttämällä :reg “= komento.

Vastaavasti saadaksesi kahden luvun itseisarvon, käytä =abs(arvo1-arvo2) ilmaisu.

Samalla tavalla järjestelmäkomennon tulosteen tallentamiseen voidaan käyttää tätä (lauseke)rekisteriä. Jos esimerkiksi haluan lukea tiedoston sisällön, käytän sitä =system('kissa ') , kun painat Return-näppäintä, tulosteen sisältö tallennetaan. Käyttämällä s tai :laittaa komennolla lähdön sisältö voidaan sijoittaa puskuriin.

Vimissä voidaan käyttää useita ilmaisuja. Saat lisätietoja Vim-lausekkeista käyttämällä :apuilmaisu ja :help expression-syntax komentoja.

8. Valinta- ja pudotusrekisterit ('*, '+, '~)

Vimillä on kaksi valintarekisteriä '* (lainaustähti) ja '+ (quoteplus), joita käytetään tekstin tallentamiseen graafisesta käyttöliittymästä. Näitä rekistereitä käytetään tekstin kopioimiseen ulkoisista ohjelmista, kuten selaimista tai muista tekstinkäsittelyohjelmista.

Jos esimerkiksi kopioit tekstivalinnan selaimesta, käyttämällä ctrl+c tai cmd+c se tallennetaan '* rekisteröidy. Et kuitenkaan voi käyttää s tai :laittaa liittääksesi tämän tekstin Vim-editoriin. Käyttää '*s laittaaksesi tekstin Vim-editoriin, joka kopioidaan ulkoisista sovelluksista.

On tärkeää huomata, että molemmat '+ ja '* rekisterit on kytketty leikepöydälle, joten molemmat ('*p, '+p) voidaan käyttää tekstin liittämiseen Vim-editoriin. Vastaavasti, jos haluat laittaa tekstiä Vimistä, käytä '*yy rypittääksesi rivin ja liittääksesi sen mihin tahansa GUI-sovellukseen, käytä ctrl+v tai cmd+v.

On tärkeää huomata, että jos molemmat rekisterit (* ja +) tekevät samaa, mitä järkeä sitten on? Vimillä on kaksi valintarekisteriä '*, '+ tekee samaa työtä ja se johtuu X11-ikkunajärjestelmästä. X11 tarjoaa kaksi tapaa tallentaa tekstiä, yksi on valinnat ja toinen on leikkauspuskurit . Valinnat ovat sovelluksen omistamia ja ne menetetään suljettaessa sovellus, kun taas leikatut puskurit säilyttävät tekstin X-palvelimella. Näissä kahdessa tallennustyypissä käytetään rekistereitä “* ja “+. Saat lisätietoja siitä käyttämällä :help x11-valinta komento.

Seuraavaksi, pudotusrekisteri “~ jota käytetään viimeisimmän vedä ja pudota -toiminnon tekstin tallentamiseen. Jos esimerkiksi pudotat tekstivalinnan ulkoisesta sovelluksesta, se tallennetaan pudotusrekisteriin.

Jos liittäminen ulkoisesta sovelluksesta kolmella eri näppäimellä on vaikeaa, voit kartoittaa valinnan tallennettavaksi nimettömään rekisteriin.
Avaa vimrc tiedosto, paikkasarja leikepöytä=nimetön ja tallenna tiedosto. Nyt, kun kopioit ulkoisesta sovelluksesta, se voidaan helposti liittää käyttämällä :laittaa komento tai p-näppäin.

Huomautus : Pudotusrekisteri (~) on käytettävissä vain, jos Vim on käännetty +dnd:llä. Tällä hetkellä se on saatavilla vain GTK GUI:lle.

9. Black Hole Register ('_)

Jos teet kopiointi- tai poistotoiminnon Vim-editorissa, se tallentaa tekstin oletusarvoisesti rekistereihin. Jos haluat poistaa tekstin tallentamatta sitä rekisteriin, käytä mustan aukon rekisteriä. Tämä rekisteri ei muuta nimeämätöntä rekisteriä (“”) tekstin poistamisen yhteydessä.

Jos esimerkiksi haluan poistaa kaikki rivit tallentamatta niitä nimettömään rekisteriin, valitsen ensin kaikki rivit käyttämällä ggVG ja paina sitten '_d näppäimiä poistaaksesi kaikki rivit. Vastaavasti, jos haluat poistaa yhden rivin mustaan ​​aukkoon, käytä '_dd .

10. Viimeinen hakumallirekisteri (“/)

Kuten nimestä voi päätellä, tämä rekisteri tallentaa viimeisen hakukuvion käyttämällä / tai ? operaattorit. Esimerkiksi jos haet /Linux , käytä sitten '/s liittää Linux-sanan.

Vim käyttää tätä rekisteriä navigointiin n ja N avaimet haun jälkeen.

Se on kirjoitettava rekisteri, jonka sisältöä voidaan muuttaa :letillä. Jos haluat esimerkiksi tallentaa Linuxin tähän rekisteriin, käytä :let @/='Linux'.

Rekisterit ja makrot

Vimissä makrot tallennetaan myös nimettyihin rekistereihin (a-z). Jos et ole tietoinen makroista, makrot ovat asetettuja komentoja, jotka on tallennettu rekisteriin. Tämä komentosarja voidaan suorittaa yksinkertaisesti käyttämällä @-merkkiä ja makrorekisterin nimeä. Pohjimmiltaan makrot poistavat tarpeen kirjoittaa useita komentoja toistuvasti.

Esimerkiksi makron tallentamiseen rekisteriin m , Aion käyttää qmq . Haluan muuttaa kohteeseen 5 riviä alaspäin käyttämällä 5j ja poista rivi käyttämällä dd . Käyttää, qm aloittaaksesi makron tallennuksen ja paina sitten 5j ja dd . Nyt lopettaaksesi makron tallennuksen, paina q . Tarkista, onko makro tallennettu vai ei, käytä :reg “m tai :reg m.

Jos haluat suorittaa nämä komennot makrorekisterin kanssa, käytä :@m komento.

Rekisterin tyhjentäminen

Rekisterin tyhjentämiseen ei ole yksinkertaista lähestymistapaa, koska useimpia rekistereitä ei tarvitse tyhjentää, koska ne lopulta kirjoitetaan päälle. On kuitenkin olemassa muutamia tekniikoita rekisteriarvon tyhjentämiseksi Vim-editorissa.

1. Tyhjennä rekisteri tallentamalla tyhjä makro. Esimerkiksi tyhjentääksesi rekisterin m, käytä qmq .

2. Aseta tyhjä teksti käyttämällä antaa . Esimerkiksi tyhjentääksesi rekisterin m, käytä :ole @m=”.

3. Käytä setreg() funktio tyhjällä merkkijonolla argumenttina. Esimerkiksi tyhjentääksesi rekisterin m käyttö :call setreg('m', ').

Johtopäätös

Rekisterejä on 10 eri toiminnoilla, mikä tekee muistamisen lähes mahdottomaksi. Jos olet aloittelija, suosittelen pitämään mielessä vain kolme rekisteriä, nimeämätön rekisteri ('' , numeroidut rekisterit (0-9) , ja nimetyt rekisterit (a-z) .

Käytä lainausta tallentaaksesi tekstiä rekisteriin (“) allekirjoittaa rekisterin nimellä, jota seuraa operaattorikomento (y, d, c) . Liitä tekstiä rekisteristä käyttämällä p- tai P-komentoja, joita edeltää lainaus (“) ja rekisteröi nimi.

Olet varmasti kuullut siitä, että jos teet tehtävän useammin kuin kahdesti, automatisoi se. Vim-rekisterit voivat olla erittäin hyödyllisiä tehtävien automatisoinnissa ja viime kädessä kokemuksen parantamisessa. Saat lisätietoja Vim-rekistereistä käyttämällä :apurekisterit komento.