Ano ang Vim Registers

Ano Ang Vim Registers



Ang mga rehistro ng Vim ay mga bloke ng imbakan na ginagamit upang mag-imbak ng yanked, tinanggal na teksto at mga operasyon. Ang mga rehistrong ito ay maaaring ma-access gamit ang kanilang mga pangalan ng tag, na maaaring isang numero, titik, o simbolo.

Kung gumagamit ka ng Vim, dapat ay ginagamit mo ang mga rehistro ng Vim. Sa tuwing kumopya/magtanggal ka ng text, o magsagawa ng command operation, iniimbak ng Vim ang impormasyong ito sa mga rehistro. Kapag na-paste mo ito, kinukuha ni Vim ang data mula sa rehistro at dinadala ito sa buffer. Sa madaling salita, ang mga rehistro ng Vim ay kumikilos bilang isang clipboard upang mag-imbak ng teksto at kasaysayan ng utos.

Ang Vim ay may kabuuang 10 natatanging uri ng mga rehistro, na ang bawat isa ay may natatanging layunin. Sa tutorial na ito, tuklasin ko ang mga rehistro ng Vim, ang kanilang mga uri, at paggamit.







Tandaan : Para sa tutorial na ito, nagsasagawa ako ng mga command sa macOS. Ang Vim ay isang cross-platform na application, samakatuwid ang mga utos na binanggit sa gabay na ito ay malalapat sa lahat ng mga bersyon ng Vim anuman ang operating system.



Mga Operator ng Vim Register

Ang mga rehistro sa Vim ay maaaring gamitin gamit ang mga operasyon tulad ng pagkopya, pagtanggal, o pagbabago. Ang bawat operasyon ay may mga partikular na operator, tulad ng to yank text y operator ay ginagamit habang para tanggalin ang text, ang d operator ay ginagamit. Ang isang listahan ng mga karaniwang nagtatrabaho na operator ay ibinigay sa ibaba:

yy Yanks (kopyahin) ang linya
DD Tinatanggal ang linya
cc Tinatanggal ang linya at pinapagana ang INSERT mode
s Tinatanggal ang character at simulan ang INSERT mode upang palitan
x Tinatanggal ang character sa ilalim ng cursor
q Macro; nag-iimbak ng hanay ng mga utos sa isang partikular na rehistro

Upang i-print ang nakaimbak na teksto, p o P ginagamit ang mga operator:

p Ilagay (i-paste) ang teksto pagkatapos ng cursor
P Ilagay ang teksto bago ang cursor

Ang mga utos na ito ay isinasaalang-alang din. Halimbawa, para kopyahin ang 10 linya gamitin ang 10 taon command, katulad ng pag-paste ng 10 kopya ng paggamit ng yanked line 10p .

Listahan ng mga Register

Upang ilista ang lahat ng mga rehistro, gamitin ang :magrehistro o :reg command, at para ilista ang partikular na rehistro gamitin ang :reg, kung saan ang ay ang pangalan ng rehistro (hal., 0-9, a-z).

Sa parehong paraan, upang ilista ang nilalaman ng maramihang mga rehistro, gamitin ang :reg “ utos.

Sa listahan ng rehistro, makikita mo ang tatlong hanay, Pangalan, Uri, at Nilalaman . Dito, ang Uri ay nangangahulugang ang uri ng nilalaman, hindi ang uri ng rehistro. Tatlo mga uri ng nilalaman ay maaaring mabago gamit ang mga rehistro.

  • l : Marunong sa linya
  • c : Marunong sa karakter
  • b : Block-wise

Halimbawa, kung ang nilalaman ay kinopya gamit ang line-wise na operasyon (yy) pagkatapos ay ang uri ng nilalaman ay magiging l , kung ito ay matalino sa karakter (oo) tapos yung tipong magiging c , at kung ang nilalaman ay kinopya sa block-wise (ctrl+v at y) pagkatapos ang uri ay ipapakita bilang b .

Nagtatrabaho sa Vim Registers

Ang mga rehistro ng Vim ay maaaring gamitin upang mag-imbak ng nilalaman gamit ang yank, tanggalin, at baguhin ang mga operator. Maaaring ma-access ang nakaimbak na nilalaman gamit ang mga operator ng put.

Pag-save ng Teksto sa isang Register
Kapag pinindot mo ang yy key upang kopyahin ang isang linya, ito ay ise-save sa default na rehistro na tinatawag na hindi pinangalanang rehistro (“”) . Upang iimbak ang kinopyang linya sa isang partikular na rehistro, ang quote (“) sinusundan ng pangalan ng rehistro at ginagamit ang operator.

'

Halimbawa, upang kopyahin ang isang linya sa isang pangalan ng rehistro Sa gamitin ang ' zyy . Katulad nito, kung pumili ka ng maraming linya sa VISUAL mode, gamitin ang ' zy upang iimbak ang mga linya sa z register.

Pag-access sa Register
Upang ma-access ang Vim register, ang quote (“) simbolo ay ginagamit kasama ang pangalan ng rehistro at p/P operator.

'p

Halimbawa, kung ang pangalan ng rehistro ay z at upang ma-access ang nilalaman ng rehistrong ito, gamitin ang ' zp sa NORMAL mode. Gayunpaman, upang maisagawa ang parehong operasyon sa INSERT mode, gamitin ctrl+r z .

NORMAL Mode Upang iimbak ang nilalaman, gumamit ng quote (“) , irehistro ang pangalan (a-z) , at operator (y, yy, d, c, o cc)
p NORMAL Mode Upang i-paste ang nilalaman ng isang rehistro gumamit ng quote (“) , irehistro ang pangalan (a-z) at p/P operator
ctrl+r INSERT Mode Upang i-paste ang nilalaman ng isang rehistro, gamitin ctrl+r at irehistro ang pangalan (a-z)

Mayroon kang pangunahing ideya ng mga rehistro ng Vim. Ngayon, pupunta ako para sa isang malalim na talakayan ng bawat uri ng rehistro at paggamit nito.

Mga Uri ng Vim Register

Sa Vim, mayroong 10 uri ng mga rehistro, na idinisenyo para sa mga partikular na layunin.

  1. Walang Pangalan na Register (“”)
  2. Numbered Registers (0-9)
  3. Small Delete Register (“-)
  4. Mga Pinangalanang Register (a-z o A-Z)
  5. Read Only Registers (“:, “., “%)
  6. Alternate File Register (“#)
  7. Expression Register (“=)
  8. Selection and Drop Registers (“*, “+, +~)
  9. Black Hole Register (“_)
  10. Huling Search Pattern Register (“/)

1. Hindi Pinangalanang Register (“”)

Ito ang default na rehistro ng Vim upang mag-imbak ng yanked o tinanggal na teksto gamit y, yy, d, dd, s, o x mga utos.

Ang :reg “” Maaaring gamitin ang command upang ilista ang nilalamang nakaimbak sa hindi pinangalanang rehistro.

Upang i-paste ang hindi pinangalanang nilalaman ng rehistro, gamitin ang put command (p o P) utos. Bilang default, ang p Inilalagay ng command ang mga tindahan ng nilalaman sa hindi pinangalanang rehistro. Bilang kahalili, ang data na nakaimbak sa hindi pinangalanang rehistro ay maaari ding i-paste gamit ang ''p command.

Sa sumusunod na halimbawa, kinopya ko ang isang linya gamit ang yy utos at pagkatapos ay ilagay ito ng 5 beses gamit ang bilang 5 na may p (5p).

2. Numbered Registers (0-9)

Ang mga may bilang na rehistro ay ginagamit upang iimbak ang huling yanked o tinanggal na teksto.

Ang rehistro 0 ay iba sa mga rehistro 1-9 . Ang rehistro 0 ay palaging mag-iimbak ng huling yanked text. Halimbawa, kung hinihila ko ang isang linya gamit ang yy command, ang linya ay maiimbak sa parehong walang pangalan at ang 0 nagrerehistro.

Ngayon, kung tatanggalin ko ang isang linya gamit ang DD , ang tinanggal na linya ay maiimbak sa hindi pinangalanang rehistro at rehistro 1 habang ang huling yanked text ay mananatili sa rehistro 0 . Kaya, ang huling yanked text ay maaaring ma-access anumang oras sa pamamagitan ng rehistro 0 .

Ang mga rehistro 1-9 iimbak ang huling tinanggal na teksto. Halimbawa, kung tatanggalin ko ang isang linya gamit ang DD command, ang tinanggal na teksto ay maiimbak sa parehong walang pangalan at rehistro 1 . Ang Register 1 ay mag-iimbak ng pinakabagong tinanggal na teksto. Kung tatanggalin ko ang isa pang linya, ang dating tinanggal na teksto ay lilipat upang magparehistro 2 , at ang pinakabago ay maiimbak sa hindi pinangalanan at magparehistro 1 . Sa mahalaga, ang mga may bilang na mga rehistro (1-9) iimbak ang kasaysayan ng tinanggal na teksto.

Unawain natin ang may bilang na rehistro na may isang halimbawa. Ang sumusunod na Vim text file ay binubuo ng 10 linya; haluin natin ang linya 3 gamit yy utos. Ngayon, tingnan natin ang katayuan ng mga rehistro gamit ang :reg command.

Ang yanked line ay kasalukuyang nasa walang pangalan at 0 nagrerehistro. Ngayon, tanggalin natin ang lahat ng mga linya nang paisa-isa gamit ang DD utos. Kaya, huli linya 10 ay nasa hindi pinangalanang rehistro at magparehistro 1. Kasabay nito, ang iba pang mga tinanggal na linya ay maiimbak sa mga rehistro 2-9 sa pataas na ayos.

Maaaring ma-access ang mga linyang ito gamit ang p utos. Halimbawa, upang ilagay ang teksto ng rehistro 9 gamitin “9p . Higit pa rito, kung nais mong ilagay ang halaga ng rehistro 9 5 beses, gamitin “95p .

3. Small Delete Register (“-)

Ang rehistrong ito ay nag-iimbak ng tinanggal na teksto kung ito ay mas mababa sa isang linya, gamit ang mga command tulad ng x, daw, diw, dab, at muli . Bukod dito, kung tatanggalin mo ang ilang teksto gamit ang VISUAL selection mode, at kung ito ay mas mababa sa isang linya, ito ay iimbak sa maliit na delete register. Sa Vim, ang isang linya ay nangangahulugang isang kumpletong pangungusap na nagtatapos sa isang tuldok.

Halimbawa, sa sumusunod na file, pumili ako ng 3 salita pakikipagtulungan at suporta mula sa linyang numero 9 at tinanggal ang mga ito gamit ang d operator. Ang maliit na rehistro ng pagtanggal ay gagamitin upang i-save ang seleksyon na ito dahil ito ay hindi hihigit sa isang linya ang haba. Gamitin ang :reg “- command na ilista ang nilalaman ng maliit na delete register.

4. Mga Pinangalanang Register (a-z o A-Z)

Ang pinangalanang mga rehistro ay ginagamit upang mag-imbak ng tekstong tukoy sa gumagamit. Kaya, kung gusto mong mag-imbak ng teksto sa isang pasadyang rehistro, kung gayon 26 nagrerehistro mula sa a sa Sa maaaring gamitin.

Halimbawa, kumukuha ako ng linya sa sumusunod na file gamit ang ' zyy , ang teksto ay maiimbak sa Sa magparehistro tulad ng ipinapakita sa sumusunod na larawan.

Ang lowercase at uppercase na pinangalanang mga register ay may magkaibang layunin. Halimbawa, kung ang teksto ay nai-save sa lowercase na rehistro, kaya upang palitan ang teksto ng rehistro na iyon ang lowercase na rehistro ay gagamitin. Gayunpaman, upang idagdag ang teksto sa lowercase na register, ang uppercase na register na may parehong pangalan ang gagamitin.

Unawain natin ito sa pamamagitan ng isang halimbawa. Mula sa sumusunod na file, nag-imbak ako ng linya 8 sa rehistro x gamit ang ' xyy .

Upang magdagdag ng teksto pagkatapos ng linyang ito, pipili muna ako ng ilang salita sa VISUAL mode. Upang idagdag ang napiling teksto, gagamitin ko ang “Xy utos.

Upang palitan ang teksto, muli kong gagamitin ang “ xyy .

5. Read-Only Registers (., %, 🙂

Ang Vim ay may 3 read-only na rehistro na nag-iimbak ng ipinasok teksto, pangalan ng file, at huling pinaandar utos.

. Iniimbak ang huling ipinasok na teksto
% Iniimbak ang pangalan ng file
: Iniimbak ang huling naisakatuparan na utos

Ang mga rehistrong ito bilang iminungkahing pangalan ay hindi maaaring baguhin, gayunpaman, ay madaling ma-access.

Upang ilagay ang huling ipinasok na teksto, gamitin ang “.p utos.

Upang i-print ang pangalan ng file, gamitin ang “%p utos.

Upang i-print ang huling command, gamitin ang “:p.

Ang @: Maaaring gamitin ang command upang ulitin ang nakaraang command sa Vim. Sa sumusunod na halimbawa, tinanggal ko ang unang 3 linya, sa pagpindot @: , 3 higit pang mga linya ay tinanggal, kaya inuulit ang nakaraang command.

6. Kahaliling Buffer Register (“#)

Ang kahaliling buffer ay isang file na binuksan sa kasalukuyang buffer. Iniimbak ng “# register ang pangalan ng file ng buffered file sa kasalukuyang buffer. Magbukas tayo ng isa pang file sa parehong buffer gamit ang :e ~/.vimrc command, tandaan na ang kasalukuyang pangalan ng file ay file.txt .

Upang isara ang binuksan na buffer, gamitin ang :bdelete o :bwipeout utos. Ngayon, posibleng makita ang alternatibong pangalan ng file na naka-save sa “# magparehistro.

7. Expression Register (“=)

Ang rehistro ng expression ay isang natatanging rehistro na hindi ginagamit upang mag-imbak ng teksto, sa halip, iniimbak nito ang expression. Halimbawa, kung mayroon kang ilang mga numero sa file, upang mabuo ang mga numerong ito, gagamitin ang mga expression ng Vim.

Ang rehistrong ito ay maaaring ma-access gamit ang “= sa NORMAL mode, at ctrl+r = sa INSERT mode.

Halimbawa, upang mahanap ang pagkakaiba sa pagitan ng dalawang numero, pindutin ang “=, at lalabas ang equals sign sa status bar; ngayon i-type ang parehong mga numero na may minus sign (-) sa kanila at pindutin ang Pumasok susi. Ngayon, para i-print ang pagkakaiba, pindutin p o gamitin ang : ilagay utos.

Upang ma-access ang halaga ng rehistro ng expression, gamitin ang :reg “= utos.

Katulad nito, upang makuha ang ganap na halaga ng dalawang numero, gamitin ang =abs(value1-value2) pagpapahayag.

Sa parehong paraan, upang maiimbak ang output ng utos ng system, maaaring gamitin ang rehistrong ito (expression). Halimbawa, kung gusto kong basahin ang nilalaman ng file na gagamitin ko =system(‘cat ’) , sa pagpindot sa Return key ang nilalaman ng output ay maiimbak. Gamit ang p o : ilagay command, ang nilalaman ng output ay maaaring ilagay sa buffer.

Mayroong isang hanay ng mga expression na maaaring magamit sa Vim. Upang matuto nang higit pa tungkol sa mga expression ng Vim, gamitin :help expression at :help expression-syntax mga utos.

8. Selection and Drop Registers (“*, “+, “~)

Ang Vim ay may dalawang rehistro ng pagpili “* (quotestar) at “+ (quoteplus) na ginagamit upang mag-imbak ng teksto mula sa GUI. Ang mga register na ito ay ginagamit upang kopyahin ang teksto mula sa mga panlabas na programa tulad ng mga browser o anumang iba pang word processor.

Halimbawa, kung kumopya ka ng seleksyon ng teksto mula sa isang browser, gamit ang ctrl+c o cmd+c ito ay itatabi sa “* magparehistro. Gayunpaman, hindi mo magagamit p o : ilagay para i-paste ang text na ito sa Vim editor. Gamitin “*p upang ilagay ang teksto sa Vim editor na kinopya mula sa mga panlabas na application.

Mahalagang tandaan na pareho “+ at “* Ang mga rehistro ay konektado sa clipboard, kaya pareho (“*p, “+p) ay maaaring gamitin upang i-paste ang teksto sa Vim editor. Katulad nito, upang maglagay ng teksto mula sa Vim, gamitin “*yy upang yank isang linya at pagkatapos ay i-paste ito sa anumang GUI application, gamitin ctrl+v o cmd+v.

Mahalagang tandaan na kung parehong nakarehistro (* & +) ginagawa ang parehong bagay, kung gayon ano ang punto? Ang Vim ay may dalawang rehistro ng pagpili “*, “+ ginagawa ang parehong trabaho at iyon ay dahil sa X11 window system. Ang X11 ay nagbibigay ng dalawang paraan upang mag-imbak ng teksto, ang isa ay mga seleksyon at ang isa ay mga cut-buffer . Ang mga seleksyon ay pagmamay-ari ng application at nawala sa pagsasara ng application, habang pinapanatili ng mga cut buffer ang teksto na nakaimbak sa X-server. Para sa dalawang uri ng storage na ito, ginagamit ang “* at “+ na mga rehistro. Upang matuto nang higit pa tungkol dito, gamitin :help x11-selection utos.

Susunod, ang drop register “~ na ginagamit upang iimbak ang teksto mula sa huling drag at drop na operasyon. Halimbawa, kung mag-drop ka ng isang seleksyon ng teksto mula sa isang panlabas na application, ito ay maiimbak sa drop register.

Kung nahihirapan kang mag-paste mula sa panlabas na application gamit ang tatlong magkakaibang key, maaari mong i-map ang pagpili na iimbak sa hindi pinangalanang rehistro.
Buksan ang vimrc file, set ng lugar clipboard=walang pangalan sa loob nito, at i-save ang file. Ngayon, sa tuwing kumopya ka mula sa isang panlabas na application, madali itong mai-paste gamit ang : ilagay utos o p key.

Tandaan : Ang drop register (~) ay magagamit lamang kung ang Vim ay pinagsama-sama sa +dnd. Sa kasalukuyan, ito ay magagamit lamang para sa GTK GUI.

9. Black Hole Register (“_)

Kung gagawa ka ng kopya o pagtanggal ng operasyon sa Vim editor, bilang default, iniimbak nito ang teksto sa mga rehistro. Kung gusto mong tanggalin ang teksto nang hindi iniimbak ito sa isang rehistro, gamitin ang black hole register. Hindi babaguhin ng rehistrong ito ang hindi pinangalanang rehistro (“”) sa pagtanggal ng teksto.

Halimbawa, kung gusto kong tanggalin ang lahat ng mga linya nang hindi iniimbak ang mga ito sa hindi pinangalanang rehistro, pagkatapos ay pipiliin ko muna ang lahat ng mga linya gamit ang ggVG at pagkatapos ay pindutin ang “_d mga susi upang tanggalin ang lahat ng mga linya. Katulad nito, upang tanggalin ang isang linya sa isang black hole, gamitin '_DD .

10. Huling Search Pattern Register (“/)

Gaya ng ipinahihiwatig ng pangalan, ang rehistrong ito ay nagse-save ng huling pattern ng paghahanap gamit ang / o ? mga operator. Halimbawa, kung maghahanap ka /Linux , pagkatapos ay ginagamit “/p ay i-paste ang salitang Linux.

Ginagamit ng Vim ang rehistrong ito para sa pag-navigate gamit ang n at N mga susi pagkatapos ng paghahanap.

Ito ay isang nasusulat na rehistro, ang nilalaman nito ay maaaring baguhin gamit ang :let. Halimbawa, upang i-save ang Linux sa rehistrong ito, gamitin :hayaan @/=’Linux’.

Mga Register at Macro

Sa Vim, ang mga macro ay nai-save din sa pinangalanang mga rehistro (a-z). Kung hindi mo alam ang mga macro, ang mga macro ay nakatakdang mga command na nakaimbak sa isang rehistro. Ang hanay ng mga command na ito ay maaaring isagawa sa pamamagitan lamang ng paggamit ng @ sign na sinusundan ng pangalan ng macro register. Sa esensya, inalis ng mga macro ang pangangailangang mag-type ng maraming command nang paulit-ulit.

Halimbawa, upang mag-imbak ng isang macro sa isang rehistro m , gagamitin ko qmq . Gusto kong lumipat sa 5 linya pababa gamit 5j at tanggalin ang linya gamit ang DD . gamitin, qm upang simulan ang macro recording, at pagkatapos ay pindutin ang 5j at DD . Ngayon, para itigil ang macro recording, pindutin q . Upang i-verify kung ang macro ay nakaimbak o hindi ginagamit, :reg “m o :reg m.

Upang maisagawa ang mga utos na ito gamit ang isang macro register, gamitin ang :@m utos.

Pag-clear ng Register

Walang direktang diskarte sa pag-clear ng isang rehistro dahil karamihan sa mga rehistro ay hindi kailangang i-clear dahil sa kalaunan ay ma-overwrite ang mga ito. Gayunpaman, mayroong ilang mga diskarte upang i-clear ang isang halaga ng rehistro sa editor ng Vim.

1. Mag-record ng walang laman na macro upang i-clear ang isang rehistro. Halimbawa, upang i-clear ang register m, gamitin qmq .

2. Itakda ang walang laman na teksto gamit ang hayaan . Halimbawa, upang i-clear ang rehistro m, gamitin :hayaan @m=”.

3. Gamitin ang setreg() function na may isang walang laman na string bilang isang argumento. Halimbawa, para i-clear ang register m gamitin :tawagan ang setreg(‘m’, ”).

Konklusyon

Mayroong 10 iba't ibang mga rehistro na may iba't ibang mga pag-andar, na ginagawang halos imposibleng matandaan. Kung ikaw ay isang baguhan, inirerekumenda ko na tandaan lamang ang tatlong rehistro, hindi pinangalanang rehistro (“”) , may bilang na mga rehistro (0-9) , at pinangalanang mga rehistro (a-z) .

Upang mag-imbak ng teksto sa isang rehistro, gumamit ng isang quote (“) mag-sign gamit ang pangalan ng rehistro na sinusundan ng isang utos ng operator (y, d, c) . Upang i-paste ang teksto mula sa isang rehistro, gumamit ng mga p o P na utos na pinangungunahan ng quote (“) at irehistro ang pangalan.

Dapat ay narinig mo na ito, kung gumagawa ka ng isang gawain nang higit sa dalawang beses, pagkatapos ay i-automate ito. Ang mga Vim register ay maaaring maging lubhang kapaki-pakinabang upang i-automate ang mga gawain at sa huli ay mapahusay ang karanasan. Upang matuto nang higit pa tungkol sa mga rehistro ng Vim, gamitin ang :help registers utos.