Ce sunt registrele Vim

Ce Sunt Registrele Vim



Registrele Vim sunt blocuri de stocare utilizate pentru a stoca text și operațiuni smulse, șterse. Aceste registre pot fi accesate folosind numele etichetelor lor, care pot fi un număr, literă sau simbol.

Dacă utilizați Vim, atunci trebuie să utilizați registrele Vim. De fiecare dată când copiați/ștergeți text sau efectuați o operație de comandă, Vim stochează aceste informații în registre. Când îl inserați, Vim primește datele din registru și le atrage în buffer. Cu alte cuvinte, registrele Vim acționează ca un clipboard pentru a stoca textul și istoricul comenzilor.

Vim are un total de 10 tipuri distincte de registre, fiecare dintre acestea având un scop distinct. În acest tutorial, voi explora registrele Vim, tipurile și utilizarea acestora.







Notă : Pentru acest tutorial, execut comenzi pe macOS. Vim este o aplicație multiplatformă, prin urmare comenzile menționate în acest ghid se vor aplica tuturor versiunilor Vim, indiferent de sistemul de operare.



Vim Register Operatori

Registrele din Vim pot fi folosite folosind operațiuni precum copierea, ștergerea sau modificarea. Fiecare operație are operatori specifici, cum ar fi pentru a smulge text, se folosește operatorul y în timp ce pentru a șterge text, se folosește operatorul d. O listă a operatorilor angajați în mod obișnuit este prezentată mai jos:

da Dragă (copie) linia
dd Șterge linia
cc Șterge linia și activează modul INSERT
s Șterge caracterul și pornește modul INSERT pentru a înlocui
X Șterge caracterul de sub cursor
q Macro; stochează setul de comenzi într-un registru specific

Pentru a imprima textul stocat, p sau P se folosesc operatori:

p Pune (lipește) textul după cursor
P Puneți textul înaintea cursorului

Aceste comenzi iau, de asemenea, numărătoarea. De exemplu, pentru a copia 10 linii utilizați 10aa comandă, în mod similar pentru a lipi cele 10 copii ale utilizării unei linii smulse 10p .

Registre de listare

Pentru a lista toate registrele utilizați :Inregistreaza-te sau :reg comanda și pentru a lista registrul specific, utilizați comanda :reg, unde este numele registrului (de exemplu, 0-9, a-z).

În același mod, pentru a lista conținutul mai multor registre, utilizați :reg „ comanda.

În lista de registre, veți vedea trei coloane, Nume, tip și conținut . Aici, Tipul înseamnă tipul de conținut, nu tipul de registru. Trei tipuri de conținut poate fi modificat cu registre.

  • l : Din punct de vedere al liniilor
  • c : În ceea ce privește caracterul
  • b : Blocuri

De exemplu, dacă conținutul este copiat utilizând operația pe linie (aa) atunci tipul de conținut va fi l , dacă este înțelept de caracter (da) atunci tipul va fi c și dacă conținutul este copiat în bloc (ctrl+v și y) atunci tipul va fi afișat ca b .

Lucrul cu registrele Vim

Registrele Vim pot fi folosite pentru a stoca conținutul folosind operatorii yank, delete și change. Conținutul stocat poate fi accesat folosind operatorii put.

Salvarea textului într-un registru
Când apăsați pe da pentru a copia o linie, aceasta va fi salvată în registrul implicit numit registru fără nume (“”) . Pentru a stoca linia copiată într-un anumit registru, citatul (“) urmate de numele registrului și operatorul sunt utilizate.

De exemplu, pentru a copia o linie într-un nume de registru Cu utilizare ' zyy . În mod similar, dacă ați selectat mai multe linii în modul VISUAL, utilizați „ zy pentru a stoca liniile în registrul z.

Accesarea Registrului
Pentru a accesa registrul Vim, citatul (“) simbolul este folosit cu numele registrului și p/P operator.

p

De exemplu, dacă numele registrului este z și pentru a accesa conținutul acestui registru, utilizați „ zp în modul NORMAL. Cu toate acestea, pentru a efectua aceeași operațiune în modul INSERT, utilizați ctrl+r z .

Mod normal Pentru a stoca conținutul utilizați citatul (“) , înregistrați numele (a-z) , și operator (y, aa, d, c sau cc)
p Mod normal Pentru a lipi conținutul unui registru utilizați citatul (“) , înregistrați numele (a-z) și p/P operator
ctrl+r Modul INSERT Pentru a lipi conținutul unui registru, utilizați ctrl+r și înregistrați numele (a-z)

Aveți ideea de bază a registrelor Vim. Acum, voi merge la o discuție aprofundată despre fiecare tip de registru și despre utilizarea acestuia.

Tipuri de registre Vim

În Vim, există 10 tipuri de registre, concepute pentru scopuri specifice.

  1. Registrul fără nume (“”)
  2. Registre numerotate (0-9)
  3. Mic ștergere registru („-)
  4. Registre denumite (a-z sau A-Z)
  5. Registre numai pentru citire (“:, “., “%)
  6. Registrul de fișiere alternativ („#)
  7. Registrul de expresii („=)
  8. Registre de selecție și eliminare („*, „+, +~)
  9. Registrul găurii negre („_)
  10. Ultimul registru de model de căutare („/)

1. Registrul fără nume (“”)

Este registrul implicit al Vim pentru a stoca textul smuls sau șters y, aa, d, dd, s, sau X comenzi.

The :reg „” comanda poate fi folosită pentru a lista conținutul stocat în registrul fără nume.

Pentru a lipi conținutul registrului fără nume, utilizați comanda put (p sau P) comanda. În mod implicit, p comanda pune depozitele de conținut în registrul fără nume. Alternativ, datele stocate în registrul fără nume pot fi, de asemenea, lipite folosind comanda „”p.

În exemplul următor, am copiat o linie folosind da comandă și apoi puneți-o de 5 ori folosind numărătoarea 5 cu p (5p).

2. Registre numerotate (0-9)

Registrele numerotate sunt folosite pentru a stoca ultimul text smuls sau șters.

Registrul 0 este diferit de registre 1-9 . Registrul 0 va stoca întotdeauna ultimul text smuls. De exemplu, dacă smulg o linie folosind da comanda, linia va fi stocată în ambele anonim si 0 registre.

Acum, dacă șterg o linie folosind dd , linia ștearsă va fi stocată în registrul și registrul fără nume 1 în timp ce ultimul text smuls va rămâne în registru 0 . Deci, ultimul text smuls poate fi accesat oricând prin înregistrare 0 .

Registrele 1-9 stocați ultimul text șters. De exemplu, dacă șterg o linie folosind dd comandă, textul șters va fi stocat atât în ​​registru fără nume, cât și în registru 1 . Register 1 va stoca cel mai recent text șters. Dacă șterg o altă linie, textul șters anterior se va muta în înregistrare 2 , iar cele mai recente vor fi stocate în înregistrarea fără nume 1 . În esențial, registrele numerotate (1-9) stocați istoricul textului șters.

Să înțelegem registrul numerotat cu un exemplu. Următorul fișier text Vim cuprinde 10 linii; hai să smulgem linia 3 folosind da comanda. Acum, să verificăm starea registrelor folosind comanda :reg.

Linia trasă este în prezent în anonim și 0 registre. Acum, să ștergem toate liniile una câte una folosind dd comanda. Deci, ultimul linia 10 vor fi în registrul fără nume și registrul 1. În același timp, alte linii șterse vor fi stocate în registre 2-9 în ordine crescătoare.

Aceste linii pot fi accesate folosind p comanda. De exemplu, pentru a pune textul registrului 9 utilizare „9p . În plus, dacă doriți să puneți valoarea registrului 9 5 ori, folosi „95p .

3. Mic ștergere registru („-)

Acest registru stochează textul șters dacă este mai mic de o linie, folosind comenzi precum x, daw, diw, dab, și din nou . Mai mult, dacă ștergeți ceva text folosind VIZUAL modul de selecție, iar dacă este mai puțin de o linie, atunci va fi stocat în registrul mic de ștergere. În Vim, o linie înseamnă o propoziție completă care se termină cu un punct.

De exemplu, în următorul fișier, am selectat 3 cuvinte colaborare și sprijin de la rândul numărul 9 și le-am șters folosind d operator. Micul registru de ștergere va fi folosit pentru a salva această selecție, deoarece nu are mai mult de un rând. Folosește :reg „- comandă pentru a lista conținutul registrului mic de ștergere.

4. Registre denumite (a-z sau A-Z)

Registrele numite sunt folosite pentru a stoca text specific utilizatorului. Deci, dacă doriți să stocați text într-un registru personalizat, atunci 26 înregistrează din A la Cu poate fi folosit.

De exemplu, smulg o linie din următorul fișier folosind „ zyy , textul va fi stocat în Cu înregistrați-vă așa cum se arată în imaginea următoare.

Registrele numite cu litere mici și majuscule au scopuri diferite. De exemplu, dacă textul este salvat în registrul cu litere mici, deci pentru a înlocui textul acelui registru se va folosi registrul cu litere mici. Cu toate acestea, pentru a adăuga textul la registrul cu litere mici, va fi folosit registrul cu majuscule cu același nume.

Să o înțelegem printr-un exemplu. Din următorul fișier, am stocat linia 8 în registru X folosind „ xyy .

Pentru a adăuga text după această linie, voi selecta mai întâi câteva cuvinte în modul VIZUAL. Pentru a adăuga textul selectat, voi folosi 'X y comanda.

Pentru a înlocui textul, voi folosi din nou „ xyy .

5. Registre numai pentru citire (., %, 🙂

Vim are 3 registre numai pentru citire care stochează cele inserate text, numele fișierului, și ultima executată comanda.

. Stochează ultimul text inserat
% Stochează numele fișierului
: Stochează ultima comandă executată

Aceste registre, așa cum sugerează numele, nu pot fi modificate, dar pot fi ușor accesate.

Pentru a pune ultimul text inserat, utilizați „.p comanda.

Pentru a tipări numele fișierului, utilizați „%p comanda.

Pentru a imprima ultima comandă, utilizați „:p.

The @: comanda poate fi folosită pentru a repeta comanda anterioară în Vim. În exemplul următor, am șters primele 3 rânduri, la apăsare @: , sunt șterse încă 3 linii, deci repetând comanda anterioară.

6. Registrul tampon alternativ („#)

Bufferul alternativ este un fișier care este deschis în bufferul curent. Registrul „# stochează numele fișierului din buffer în bufferul curent. Să deschidem un alt fișier în același buffer folosind :e ~/.vimrc comandă, rețineți că numele curent al fișierului este fișier.txt .

Pentru a închide bufferul deschis, utilizați :bdelete sau :bwipeout comanda. Acum, este posibil să vedeți numele de fișier alternativ salvat în fișierul „# Inregistreaza-te.

7. Registrul de expresii („=)

Registrul expresiei este un registru unic care nu este folosit pentru a stoca text, în schimb, stochează expresia. De exemplu, dacă aveți câteva numere în fișier, pentru a însuma aceste numere, vor fi folosite expresii Vim.

Acest registru poate fi accesat folosind „= în modul NORMAL și ctrl+r = în modul INSERT.

De exemplu, pentru a găsi diferența dintre două numere, apăsați „=, iar semnul egal va apărea în bara de stare; acum tastați ambele numere cu semnul minus (-) în ele și apăsați tasta introduce cheie. Acum, pentru a imprima diferența, apăsați p sau utilizați :a pune comanda.

Pentru a accesa valoarea registrului de expresie, utilizați :reg „= comanda.

În mod similar, pentru a obține valoarea absolută a două numere, utilizați =abs(valoare1-valoare2) expresie.

În același mod, pentru a stoca rezultatul comenzii de sistem, acest registru (expresie) poate fi utilizat. De exemplu, dacă vreau să citesc conținutul fișierului îl voi folosi =sistem(‘pisică ’) , la apăsarea tastei Return conținutul ieșirii va fi stocat. Folosind p sau :a pune comandă, conținutul ieșirii poate fi plasat în buffer.

Există o serie de expresii care pot fi folosite în Vim. Pentru a afla mai multe despre expresiile Vim, utilizați : ajutorul expresiei și :help expresie-sintaxă comenzi.

8. Registre de selecție și eliminare („*, „+, „~)

Vim are două registre de selecție „* (quotestar) și „+ (quoteplus) care sunt folosite pentru a stoca textul din GUI. Aceste registre sunt folosite pentru a copia text din programe externe, cum ar fi browsere sau orice alt procesor de text.

De exemplu, dacă copiați o selecție de text dintr-un browser, folosind ctrl+c sau cmd+c va fi stocat în „* Inregistreaza-te. Cu toate acestea, nu puteți utiliza p sau :a pune pentru a lipi acest text în editorul Vim. Utilizare „*p pentru a pune textul în editorul Vim care este copiat din aplicații externe.

Este important de reținut că ambele „+ și „* registrele sunt conectate la clipboard, deci ambele ('*p, '+p) poate fi folosit pentru a lipi textul în editorul Vim. În mod similar, pentru a pune text din Vim, folosiți „* da pentru a smulge o linie și apoi a o lipi în orice aplicație GUI, utilizați ctrl+v sau cmd+v.

Este esențial să rețineți că dacă ambele înregistrează (* & +) fac același lucru, atunci ce rost are? Vim are două registre de selecție „*, „+ făcând aceeași treabă și asta din cauza sistemului de ferestre X11. X11 oferă două metode de stocare a textului, una este selectii iar celălalt este tampoane tăiate . Selecțiile sunt deținute de aplicație și se pierd la închiderea aplicației, în timp ce bufferele tăiate păstrează textul stocat în X-server. Pentru aceste două tipuri de stocare se folosesc registrele „* și „+. Pentru a afla mai multe despre el, utilizați : ajutor x11-selectare comanda.

În continuare, cel drop registru „~ care este folosit pentru a stoca textul din ultima operație de drag and drop. De exemplu, dacă aruncați o selecție de text dintr-o aplicație externă, aceasta va fi stocată în registrul de eliminare.

Dacă vi se pare dificilă lipirea din aplicația externă folosind trei taste diferite, atunci puteți mapa selecția pentru a fi stocată în registrul fără nume.
Deschide vimrc dosar, loc setat clipboard=nenumit în el și salvați fișierul. Acum, ori de câte ori copiați dintr-o aplicație externă, aceasta poate fi lipită cu ușurință folosind :a pune comanda sau tasta p.

Notă : Registrul de eliminare (~) va fi disponibil numai dacă Vim este compilat cu +dnd. În prezent, este disponibil numai pentru GUI GTK.

9. Registrul găurii negre („_)

Dacă efectuați o operație de copiere sau ștergere în editorul Vim, acesta stochează implicit textul în registre. Dacă doriți să ștergeți textul fără a-l stoca într-un registru, utilizați registrul pentru găuri negre. Acest registru nu va modifica registrul nenumit (“”) la ștergerea textului.

De exemplu, dacă vreau să șterg toate liniile fără a le stoca în registrul fără nume, atunci voi selecta mai întâi toate liniile folosind ggVG și apoi apăsați „_d tastele pentru a șterge toate liniile. În mod similar, pentru a șterge o singură linie la o gaură neagră, utilizați „_dd .

10. Ultimul registru de model de căutare („/)

După cum sugerează și numele, acest registru salvează ultimul model de căutare folosind / sau ? operatori. De exemplu, dacă căutați /Linux , apoi folosind „/p va lipi cuvântul Linux.

Vim folosește acest registru pentru navigarea cu n și N cheile după căutare.

Este un registru care poate fi scris, conținutul său poate fi modificat folosind :let. De exemplu, pentru a salva Linux în acest registru, utilizați :let @/=’Linux’.

Registre și macrocomenzi

În Vim, macrocomenzile sunt salvate și în registrele numite (a-z). Dacă nu cunoașteți macrocomenzi, atunci macrocomenzile sunt comenzi setate stocate într-un registru. Acest set de comenzi poate fi executat prin simpla utilizare a semnului @ urmat de numele registrului macro. În esență, macrocomenzile elimină necesitatea de a tasta mai multe comenzi în mod repetat.

De exemplu, pentru a stoca o macrocomandă într-un registru m , Voi folosi qmq . Vreau să mă mut la 5 linii în jos folosind 5j și ștergeți linia folosind dd . Utilizare, qm pentru a începe înregistrarea macro, apoi apăsați 5j și dd . Acum, pentru a ieși din înregistrarea macro, apăsați q . Pentru a verifica dacă macro-ul este stocat sau nu folosit, :reg „m sau :reg m.

Pentru a executa aceste comenzi cu un registru macro, utilizați :@m comanda.

Ștergerea unui registru

Nu există o abordare simplă pentru ștergerea unui registru, deoarece majoritatea registrelor nu trebuie să fie șters, deoarece vor fi în cele din urmă suprascrise. Cu toate acestea, există câteva tehnici pentru a șterge o valoare de registru în editorul Vim.

1. Înregistrați o macrocomandă goală pentru a șterge un registru. De exemplu, pentru a șterge registrul m, utilizați qmq .

2. Setați textul gol folosind lăsa . De exemplu, pentru a șterge registrul m, utilizați :let @m=”.

3. Folosiți setreg() funcția cu un șir gol ca argument. De exemplu, pentru a șterge registrul de utilizare :call setreg(‘m’,”).

Concluzie

Există 10 registre diferite cu funcționalități diferite, ceea ce face aproape imposibil de reținut. Dacă sunteți începător, vă recomand să aveți în vedere doar trei registre, registru fără nume (“”) , registre numerotate (0-9) , și registrele denumite (a-z) .

Pentru a stoca text într-un registru, utilizați un citat (“) semnează cu numele registrului urmat de o comandă a operatorului (y, d, c) . Pentru a lipi textul dintr-un registru, utilizați comenzile p sau P precedate de ghilimele (“) și înregistrați numele.

Probabil că ați auzit de el, dacă faceți o sarcină de mai mult de două ori, atunci automatizați-o. Registrele Vim pot fi extrem de utile pentru a automatiza sarcinile și, în cele din urmă, pentru a îmbunătăți experiența. Pentru a afla mai multe despre registrele Vim, utilizați : înregistrări de ajutor comanda.