Čo sú registre Vim

Co Su Registre Vim



Registre Vim sú úložné bloky používané na ukladanie vytrhnutých, vymazaných textov a operácií. K týmto registrom je možné pristupovať pomocou ich názvov značiek, ktorými môže byť číslo, písmeno alebo symbol.

Ak používate Vim, musíte používať registre Vim. Zakaždým, keď skopírujete/vymažete text alebo vykonáte príkazovú operáciu, Vim uloží tieto informácie do registrov. Keď ho vložíte, Vim získa údaje z registra a natiahne ich do vyrovnávacej pamäte. Inými slovami, registre Vim fungujú ako schránka na ukladanie textu a histórie príkazov.

Vim má celkovo 10 rôznych typov registrov, z ktorých každý slúži na iný účel. V tomto návode budem skúmať registre Vim, ich typy a použitie.







Poznámka : V tomto návode vykonávam príkazy v systéme macOS. Vim je multiplatformová aplikácia, preto príkazy uvedené v tejto príručke budú platiť pre všetky verzie Vim bez ohľadu na operačný systém.



Operátori registra Vim

Registre vo Vime možno použiť pomocou operácií, ako je kopírovanie, mazanie alebo zmena. Každá operácia má špecifické operátory, napríklad na vytrhnutie textu sa používa operátor y, zatiaľ čo na odstránenie textu sa používa operátor d. Zoznam bežne zamestnaných operátorov je uvedený nižšie:

yy Kopíruje čiaru
dd Vymaže riadok
cc Vymaže riadok a aktivuje režim INSERT
s Vymaže znak a spustí režim INSERT na nahradenie
X Vymaže znak pod kurzorom
q makro; ukladá sadu príkazov do špecifického registra

Ak chcete vytlačiť uložený text, p alebo P používajú sa operátori:

p Vložte (prilepte) text za kurzor
P Vložte text pred kurzor

Tieto príkazy sa tiež počítajú. Napríklad na skopírovanie 10 riadkov použite 10 rokov príkaz, podobne ako prilepiť 10 kópií vytrhnutého riadku 10p .

Zoznam registrov

Na zoznam všetkých registrov použite :Registrovať alebo :reg a na vypísanie konkrétneho registra použite príkaz :reg, kde je názov registra (napr. 0-9, a-z).

Rovnakým spôsobom, ak chcete vypísať obsah viacerých registrov, použite :reg “ príkaz.

V zozname registrov uvidíte tri stĺpce, Názov, typ a obsah . Typ tu znamená typ obsahu, nie typ registra. Tri typy obsah je možné upraviť pomocou registrov.

  • l : Po riadkoch
  • c : Charakterovo
  • b : Blokovo

Napríklad, ak sa obsah skopíruje pomocou riadkovej operácie (yy) potom bude typ obsahu l , ak je to charakterovo (Áno) potom bude typ c a ak sa obsah skopíruje blokovo (ctrl+v a y) potom sa typ zobrazí ako b .

Práca s registrami Vim

Registre Vim možno použiť na ukladanie obsahu pomocou operátorov yank, delete a change. K uloženému obsahu je možné pristupovať pomocou operátorov put.

Uloženie textu do registra
Keď stlačíte tlačidlo yy Ak chcete skopírovať riadok, uloží sa do predvoleného registra nazývaného nepomenovaný register (“”) . Ak chcete uložiť skopírovaný riadok do konkrétneho registra, citát (“) za ktorým nasleduje názov registra a operátor.

'

Napríklad, ak chcete skopírovať riadok do názvu registra s použiť “ zyy . Podobne, ak ste vybrali viacero liniek v režime VISUAL, použite „ zy na uloženie riadkov do registra z.

Prístup do registra
Pre prístup do registra Vim, citát (“) symbol sa používa s názvom registra a p/P operátor.

's

Napríklad, ak je názov registra z a na prístup k obsahu tohto registra použite „ zp v režime NORMAL. Ak však chcete vykonať rovnakú operáciu v režime INSERT, použite ctrl+r z .

Normálny režim Na uloženie obsahu použite citát (“) , registrovať meno (a-z) a operátor (y, yy, d, c alebo cc)
p Normálny režim Ak chcete vložiť obsah registra, použite cenovú ponuku (“) , registrovať meno (a-z) a p/P operátor
ctrl+r Režim INSERT Ak chcete vložiť obsah registra, použite ctrl+r a registrovať meno (a-z)

Máte základnú predstavu o registroch Vim. Teraz prejdem do hĺbkovej diskusie o každom type registra a jeho použití.

Typy registrov Vim

Vo Vime je 10 typov registrov, určených na špecifické účely.

  1. Nemenovaný register (“”)
  2. Číslované registre (0-9)
  3. Malý mazací register („-)
  4. Pomenované registre (a-z alebo A-Z)
  5. Registre iba na čítanie (“:, “., “%)
  6. Alternatívny register súborov („#)
  7. Register výrazov („=)
  8. Registre výberu a zrušenia (“*, “+, +~)
  9. Register čiernych dier („_)
  10. Register vzorov posledného vyhľadávania („/)

1. Nemenovaný register (“”)

Je to predvolený register Vimu na ukladanie vytrhnutého alebo odstráneného textu y, yy, d, dd, s, alebo X príkazy.

The :reg “” príkaz možno použiť na výpis obsahu uloženého v nepomenovanom registri.

Ak chcete vložiť nepomenovaný obsah registra, použite príkaz put (p alebo P) príkaz. V predvolenom nastavení je p príkaz vloží sklady obsahu do nepomenovaného registra. Alternatívne je možné údaje uložené v nepomenovanom registri vložiť aj pomocou príkazu „“p.

V nasledujúcom príklade som skopíroval riadok pomocou yy a potom ho vložte 5-krát pomocou počítania 5 s p (5p).

2. Číslované registre (0-9)

Očíslované registre sa používajú na uloženie posledného vytrhnutého alebo vymazaného textu.

Register 0 sa líši od registrov 1-9 . Register 0 vždy uloží posledný vytrhnutý text. Napríklad, ak vytrhnem čiaru pomocou yy príkaz bude riadok uložený v oboch nepomenovaný a 0 registrov.

Teraz, ak odstránim riadok pomocou dd , vymazaný riadok sa uloží do nepomenovaného registra a registra 1 zatiaľ čo posledný vytrhnutý text zostane v registri 0 . Takže k poslednému vytrhnutému textu je možné kedykoľvek pristupovať prostredníctvom registra 0 .

Registre 1-9 uložiť posledný vymazaný text. Napríklad, ak odstránim riadok pomocou dd príkaz, vymazaný text sa uloží do nepomenovaného aj do registra 1 . Register 1 uloží posledný odstránený text. Ak vymažem ďalší riadok, predtým vymazaný text sa presunie na registráciu 2 , a najnovšie budú uložené v nepomenovanom a registri 1 . V zásade ide o očíslované registre (1-9) uložiť históriu odstráneného textu.

Poďme pochopiť očíslovaný register na príklade. Nasledujúci textový súbor Vim obsahuje 10 riadkov; vytrhnime to riadok 3 použitím yy príkaz. Teraz skontrolujme stav registrov pomocou príkazu :reg.

Vytrhnutá čiara je momentálne v nepomenovaný a 0 registrov. Teraz vymažte všetky riadky jeden po druhom pomocou dd príkaz. Takže posledný riadok 10 bude v nemenovanom registri a registri 1. Zároveň sa do registrov uložia ďalšie vymazané riadky 2-9 vo vzostupnom poradí.

K týmto linkám je možné pristupovať pomocou p príkaz. Napríklad vložiť text registra 9 použitie '9p . Okrem toho, ak chcete zadať hodnotu registra 9 5 krát, použite “95 p .

3. Malý mazací register („-)

Tento register ukladá vymazaný text, ak je menší ako riadok, pomocou príkazov ako x, daw, diw, dab, a znova . Navyše, ak vymažete nejaký text pomocou VIZUÁLNY režim výberu a ak je menší ako riadok, uloží sa do malého registra mazania. Vo Vime riadok znamená celú vetu končiacu bodkou.

Napríklad v nasledujúcom súbore som vybral 3 slová spoluprácu a podporu z riadku číslo 9 a vymazal ich pomocou d operátor. Na uloženie tohto výberu sa použije malý register mazania, pretože nie je dlhší ako jeden riadok. Použi :reg “- príkaz na vypísanie obsahu malého registra mazania.

4. Pomenované registre (a-z alebo A-Z)

Pomenované registre sa používajú na ukladanie textu špecifického pre používateľa. Takže, ak chcete uložiť text do vlastného registra, potom 26 registruje z a do s môže byť použité.

Napríklad ťahám riadok v nasledujúcom súbore pomocou „ zyy , text sa uloží do s zaregistrujte sa, ako je znázornené na nasledujúcom obrázku.

Pomenované registre s malými a veľkými písmenami majú rôzne účely. Napríklad, ak je text uložený v registri malých písmen, na nahradenie textu tohto registra sa použije register malých písmen. Na pridanie textu do registra malých písmen sa však použije register veľkých písmen s rovnakým názvom.

Pochopme to na príklade. Z nasledujúceho súboru som uložil riadok 8 do registra X použitím ' xyy .

Ak chcete pridať text za tento riadok, najprv vyberiem niekoľko slov vo VISUAL režime. Na pridanie vybraného textu použijem 'Xy príkaz.

Na nahradenie textu opäť použijem „ xyy .

5. Registre len na čítanie (., %, 🙂

Vim má 3 registre iba na čítanie, ktoré ukladajú vložené text, názov súboru, a naposledy vykonaný príkaz.

. Uloží posledný vložený text
% Uloží názov súboru
: Uloží posledný vykonaný príkaz

Tieto registre, ako je navrhnutý názov, nie je možné upravovať, je však možné k nim ľahko pristupovať.

Ak chcete vložiť posledný vložený text, použite „.p príkaz.

Ak chcete vytlačiť názov súboru, použite '%p príkaz.

Ak chcete vytlačiť posledný príkaz, použite príkaz “:p.

The @: príkaz možno použiť na zopakovanie predchádzajúceho príkazu vo Vime. V nasledujúcom príklade som pri stlačení vymazal prvé 3 riadky @: , vymažú sa ďalšie 3 riadky, čím sa zopakuje predchádzajúci príkaz.

6. Alternatívny register vyrovnávacej pamäte („#)

Alternatívna vyrovnávacia pamäť je súbor, ktorý sa otvára v aktuálnej vyrovnávacej pamäti. Register „# ukladá názov súboru vo vyrovnávacej pamäti v aktuálnej vyrovnávacej pamäti. Otvorme ďalší súbor v rovnakej vyrovnávacej pamäti pomocou :e ~/.vimrc všimnite si, že aktuálny názov súboru je súbor.txt .

Ak chcete zatvoriť otvorenú vyrovnávaciu pamäť, použite :bdelete alebo :bwipeout príkaz. Teraz je možné vidieť alternatívny názov súboru uložený v “# Registrovať.

7. Register výrazov („=)

Register výrazov je jedinečný register, ktorý sa nepoužíva na ukladanie textu, ale ukladá výraz. Napríklad, ak máte v súbore niekoľko čísel, na sčítanie týchto čísel sa použijú výrazy Vim.

Tento register je prístupný pomocou “= v režime NORMAL a ctrl+r = v režime INSERT.

Ak chcete napríklad nájsť rozdiel medzi dvoma číslami, stlačte „= a v stavovom riadku sa zobrazí znamienko rovnosti; teraz zadajte obe čísla so znamienkom mínus (-) a stlačte kláves Zadajte kľúč. Teraz, ak chcete vytlačiť rozdiel, stlačte p alebo použite :dať príkaz.

Na prístup k hodnote výrazového registra použite príkaz :reg “= príkaz.

Podobne, ak chcete získať absolútnu hodnotu dvoch čísel, použite =abs(hodnota1-hodnota2) výraz.

Rovnakým spôsobom na uloženie výstupu systémového príkazu možno použiť tento (výrazový) register. Napríklad, ak si chcem prečítať obsah súboru, ktorý použijem =system('mačka ') , po stlačení klávesu Return sa obsah výstupu uloží. Pomocou p alebo :dať môže byť obsah výstupu umiestnený do vyrovnávacej pamäte.

Existuje celý rad výrazov, ktoré možno použiť vo Vime. Ak sa chcete dozvedieť viac o výrazoch Vim, použite :pomocný výraz a :help výraz-syntax príkazy.

8. Registre výberu a zrušenia (“*, “+, “~)

Vim má dva výberové registre “* (citátová hviezda) a “+ (quoteplus), ktoré sa používajú na ukladanie textu z GUI. Tieto registre sa používajú na kopírovanie textu z externých programov, ako sú prehliadače alebo akýkoľvek iný textový procesor.

Ak napríklad kopírujete výber textu z prehliadača pomocou ctrl+c alebo cmd+c bude uložený v “* Registrovať. Nemôžete však použiť p alebo :dať ak chcete tento text vložiť do editora Vim. Použite “*p na vloženie textu do editora Vim, ktorý je skopírovaný z externých aplikácií.

Je dôležité poznamenať, že oboje “+ a “* registre sú napojené na schránku, teda oboje („*p, „+p) možno použiť na vloženie textu do editora Vim. Podobne, ak chcete vložiť text z Vim, použite “*yy ak chcete vytrhnúť riadok a potom ho vložiť do ľubovoľnej aplikácie GUI, použite ctrl+v alebo cmd+v.

Je nevyhnutné poznamenať, že ak oba registre (* a +) robia to isté, tak aký to má zmysel? Vim má dva výberové registre “*, “+ robí rovnakú prácu a to kvôli okennému systému X11. X11 poskytuje dva spôsoby ukladania textu, jeden je výbery a druhý je cut-buffery . Výbery sú vo vlastníctve aplikácie a po zatvorení aplikácie sa stratia, zatiaľ čo orezané vyrovnávacie pamäte uchovávajú text uložený na X-serveri. Pre tieto dva typy ukladania sa používajú registre „* a „+. Ak sa chcete o tom dozvedieť viac, použite :help x11-selection príkaz.

Ďalej, drop register „~ ktorý sa používa na uloženie textu z poslednej operácie drag and drop. Ak napríklad zrušíte výber textu z externej aplikácie, uloží sa do registra presunutí.

Ak sa vám zdá vkladanie z externej aplikácie pomocou troch rôznych kláves obtiažne, potom môžete výber zmapovať, aby sa uložil do nepomenovaného registra.
Otvor vimrc súbor, súprava schránka=nepomenovaný v ňom a uložte súbor. Teraz, kedykoľvek budete kopírovať z externej aplikácie, môžete ju jednoducho vložiť pomocou :dať príkaz alebo kláves p.

Poznámka : Register drop (~) bude dostupný iba vtedy, ak je Vim skompilovaný s +dnd. V súčasnosti je k dispozícii iba pre GTK GUI.

9. Register čiernych dier (“_)

Ak vykonáte operáciu kopírovania alebo vymazania v editore Vim, štandardne uloží text do registrov. Ak chcete vymazať text bez jeho uloženia do registra, použite register čiernych dier. Tento register nezmení nepomenovaný register (“”) pri vymazaní textu.

Napríklad, ak chcem vymazať všetky riadky bez toho, aby som ich uložil do nepomenovaného registra, potom najprv vyberiem všetky riadky pomocou ggVG a potom stlačte '_d kláves na vymazanie všetkých riadkov. Podobne, ak chcete odstrániť jeden riadok do čiernej diery, použite '_dd .

10. Register vzorov posledného vyhľadávania („/)

Ako už názov napovedá, tento register ukladá posledný vyhľadávací vzor pomocou / alebo ? operátorov. Napríklad, ak hľadáte /Linux , potom použite “/s prilepí slovo Linux.

Vim používa tento register na navigáciu s n a N klávesy po vyhľadávaní.

Je to zapisovateľný register, jeho obsah je možné meniť pomocou :let. Ak chcete napríklad uložiť Linux do tohto registra, použite :nech @/=’Linux’.

Registre a makrá

Vo Vime sú makrá uložené aj v pomenovaných registroch (a-z). Ak nepoznáte makrá, makrá sú nastavené príkazy uložené v registri. Túto sadu príkazov možno vykonať jednoduchým použitím znaku @ nasledovaného názvom registra makra. Makrá v podstate eliminujú potrebu opakovaného zadávania viacerých príkazov.

Napríklad na uloženie makra do registra m , Budem používať qmq . Chcem sa presťahovať do 5 linky dole pomocou 5j a vymažte riadok pomocou dd . použiť, qm na spustenie záznamu makra a potom stlačte 5j a dd . Teraz na ukončenie záznamu makra stlačte q . Ak chcete overiť, či je makro uložené alebo nepoužívané, :reg “m alebo :reg m.

Ak chcete vykonať tieto príkazy pomocou registra makier, použite príkaz :@m príkaz.

Vymazanie registra

Neexistuje žiadny priamy prístup k vyčisteniu registra, pretože väčšinu registrov nie je potrebné vyčistiť, pretože budú nakoniec prepísané. Existuje však niekoľko techník na vymazanie hodnoty registra v editore Vim.

1. Zaznamenajte prázdne makro na vymazanie registra. Ak chcete napríklad vymazať register m, použite qmq .

2. Nastavte prázdny text pomocou nech . Ak chcete napríklad vymazať register m, použite :nech @m=“.

3. Použite setreg() funkcia s prázdnym reťazcom ako argumentom. Napríklad na vymazanie registra m použitie :call setreg(‘m‘, “).

Záver

Existuje 10 rôznych registrov s rôznymi funkciami, vďaka čomu je takmer nemožné si ich zapamätať. Ak ste začiatočník, potom by som odporučil mať na pamäti iba tri registre, nepomenovaný register (“”) , číslované registre (0-9) a pomenované registre (a-z) .

Ak chcete uložiť text do registra, použite cenovú ponuku (“) podpísať s názvom registra, za ktorým nasleduje príkaz operátora (y, d, c) . Ak chcete vložiť text z registra, použite príkazy p alebo P s úvodzovkami (“) a registrovať meno.

Určite ste o tom už počuli, ak robíte úlohu viac ako dvakrát, tak si ju zautomatizujte. Registre Vim môžu byť mimoriadne užitočné na automatizáciu úloh a v konečnom dôsledku na zlepšenie zážitku. Ak sa chcete dozvedieť viac o registroch Vim, použite :pomocné registre príkaz.