Sa komprehensibong gabay na ito, ipapaliwanag ko kung paano imapa ang mga susi sa Vim upang i-automate ang mga operasyon. Mula sa paggawa ng pangunahing key na mapa hanggang sa advanced na key mapping, kasama ang mga proseso ng paggawa ng mga ito na permanente at pag-aalis sa mga ito.
- Syntax
- Mga Espesyal na Argumento ng Vim
- Paglikha ng Basic Keymap
- Paglilista ng mga Keymap
- Paggawa ng Keymaps Permanente
- Pag-iwas sa Recursion
- Paglikha ng Mga Keymap na Partikular sa Mode
- Paano Magmapa ng Mga Kaganapan sa Mouse
- Paano Magmapa gamit ang Leader Key sa Vim
- Paano Magmapa ng Vimscript Function
- Paano Magmapa ng Mga Panlabas na Utos sa Vim
- Paano Mag-alis ng isang Keymap sa Vim
- Cheat Sheet ng Vim Key Mapping
- Konklusyon
Syntax
Upang i-map ang susi sa Vim, ginagamit ang sumusunod na syntax:
Sa itaas na syntax:
|
nmap, imap, vmap, xmap, cmap, o omap | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
*Sa syntax sa itaas, opsyonal ang seksyong Mga Espesyal na Argumento ng VimAng Mga Espesyal na Argument ng Vim ay mga tag na ginagamit upang magbigay ng karagdagang paggana sa mga keymap. Lumilitaw ang mga argumentong ito pagkatapos ng command na :map, at bago ang {rhs} at {lhs}. Halimbawa, upang gumawa ng isang mapa buffer-specific, gamitin ang espesyal na argumento sa sumusunod na paraan: :mapa < buffer > < C-a > ggVG
Ang mga espesyal na key notation ng Vim ay binanggit sa sumusunod na larawan.
Halimbawa, kung gusto mong gamitin ang space key sa key mapping, ang Paglikha ng isang Pangunahing Keymap sa VimUnawain natin ang Vim key mapping na may pangunahing halimbawa. Nais kong i-map ang piliin ang lahat ng mga linya ng utos ( ggVG ) sa ctrl+a mga susi. Upang i-map ang mga ctrl+a key, tatakbo ako sa sumusunod na command sa Vim. :mapa < C-a > ggVG dito, Katulad nito, para i-map ang line number toggle functionality gamit ang F1 paggamit ng susi: :mapa < F1 > :itakda ang numero !Ngayon, kapag pinindot mo ang F1 key ang numero ng linya ay paganahin, at ang pagpindot nito muli ay hindi ito pinapagana. Tandaan na ang pamamaraang ito ay imamapa lamang ang mga susi sa kasalukuyang buffer at aalisin sa pagsasara ng buffer. Paglilista ng mga KeymapUpang ilista ang lahat ng mga pangunahing pagmamapa ng normal, visual, at operator na nakabinbing mga mode, gamitin ang command na :map. :mapaUpang ilista ang pangunahing pagmamapa ng ipasok at command-line mode, gamitin ang :map! Utos. :mapa !Upang ilista ang pangunahing pagmamapa ng isang partikular na mode, i-type lamang ang unang titik ng mode bago ang keyword ng mapa.
Bukod dito, upang ilista ang lahat ng mga mapa kabilang ang mga mapa ng plugin na may mga landas, gamitin :verbose map utos. : verbose map Para sa isang partikular na susi, banggitin lamang ang susi sa utos ( :verbose map Gawing Permanenteng KeymapsImamapa ng mga keymap na binanggit sa seksyon sa itaas ang mga key sa kasalukuyang buffer lamang. Upang gawing permanente ang Vim key mappings, kailangang ilagay ang mga mapa sa vimrc file.
Tandaan na habang inilalagay ang keymap sa vimrc file, huwag magdagdag ng colon (:) bago ang mapa utos. Pagkatapos ilagay ang keymap sa vimrc file, i-save at itigil ito gamit ang :wq command o gamit ang shift+zz keys. Ang mga keymap na inilagay sa vimrc Ang file ay magiging pandaigdigan at maaaring magamit sa lahat ng mga sesyon ng Vim. Gayunpaman, maaaring pansamantalang i-disable ang ilang mga keymap kung naaapektuhan ng mga ito ang gawain sa kasalukuyang session, tingnan ang seksyong Paano Mag-alis ng Keymap sa Vim sa ibaba. Ang vimrc ay ang setting ng file ng Vim na naglalaman ng iba't ibang mga command at setting. Ito ay naroroon sa /usr/share/vim/ direktoryo sa macOS at /etc/vim sa Linux. Mahalagang tandaan na ang vimrc Ang mga file sa nabanggit na mga direktoryo ay mga file na tukoy sa system. Maaari mo ring i-edit ang mga file na ito para sa pangunahing pagmamapa, ngunit inirerekumenda ko ang paglikha ng partikular sa user vimrc file sa home directory. Pag-iwas sa RecursionBago sumulong, mahalagang matutunan ang tungkol sa recursion sa Vim key mapping. Ang mga kawalan nito at kung paano ito maiiwasan. Maaari itong maunawaan sa pamamagitan ng paggamit ng isang halimbawa. :mapa DD 3jddSa halimbawa sa itaas, na-map ko ang DD key upang ilipat pababa ng 3 linya at tanggalin ang linya sa ilalim ng cursor. Ngayon, kapag pinindot ko ang DD , susubukan nitong isagawa ang mapa 3jdd . Bibigyang-kahulugan ni Vim ang DD command bilang isang mapa at isagawa ang mapa nang paulit-ulit, tulad ng ipinapakita sa sumusunod na larawan.
Tandaan : Maaaring i-freeze ng recursion ang Vim editor. Upang i-unfreeze ito, pindutin ctrl+c mga susi. Upang maiwasan ang recursion, palitan ang mapa keyword na may noremap , saan ' wala ' ibig sabihin hindi recursive . Papalitan ko ang mapa keyword na may noremap para ayusin ang recursion sa keymap sa itaas. :noremap DD 3jddIrerekomenda ko ang paggamit noremap sa halip na mapa upang maiwasan ang aksidenteng paglikha ng recursive mapping. Paglikha ng Mga Keymap na Partikular sa ModeGinawa ng Vim ang key mapping na napakadaling gawin na kahit na ang keymap ng isang partikular na mode ay madaling magawa. Halimbawa, kung nakagawa ka ng keymap para sa insert mode gamit ang isang F1 key, pagkatapos ay maaari mong i-map ang pareho F1 key sa isa pang mode para sa isang ganap na bagong operasyon. Sa sumusunod na halimbawa, na-map ko ang F1 key para tanggalin ang 3 linya sa normal mode at yank 3 linya sa ipasok mode. :nmap < F1 > 3dd:imap < F1 > < C-t > Ang unang mapa ay nagtatanggal ng tatlong linya sa normal na mode kapag pinindot ang F1 key, habang ang pangalawang mapa ay nagdaragdag ng isang indentasyon sa kasalukuyang linya kapag nasa insert mode gamit ang parehong key. Ngayon, unawain natin ang pagmamapa sa bawat mode. Normal na Mode MappingUpang maglapat ng mapa sa normal na mode, gamitin lamang nmap keyword. Halimbawa, upang kopyahin ang lahat ng mga linya sa isang file gamit ang ctrl+c key, gagamitin ko ang sumusunod na command. :nmap < C-c > ggVGyGaya ng napag-usapan kanina, pinakamainam na kasanayan ang gumamit ng isang non-recursive na paraan upang i-map ang isang susi, samakatuwid, papalitan ko ang nmap kasama nnoremap keyword. :nnoremap < C-c > ggVGyIlagay ito nang walang tutuldok (:) sa vimrc file upang gawin itong permanenteng keymap. gagamitin ko noremap sa halip na ang mapa sa sumusunod na halimbawa. Ipasok ang Mode MappingPara i-map ang mga key para sa insert mode, gamitin lang i sa halip na n . Halimbawa, sa insert mode, ctrl+p at ctrl+n Ang mga key ay ginagamit upang awtomatikong kumpletuhin ang salita batay sa pabalik at pasulong na tugma ayon sa pagkakabanggit. Upang mapa ang ctrl+p key na may tab key, gagamitin ko ang sumusunod na command. :inoremap < Tab > < C-p > Higit sa lahat, kung gusto mong mag-map nakabinbing mode ng operator mga utos sa insert mode , pagkatapos ay kailangan mong ipasok ang Ngayon, kapag pinindot ko ang ctrl+x key, ipi-print nito ang 3ddi utos sa halip na isagawa ito.
Upang ayusin ito, ilalagay ko ang Ngayon, ipapatupad ng command ang keep me in insert mode. Maraming mini laptop ang kulang sa Esc key, na mahalaga upang lumabas sa kasalukuyang mode. Kaya, upang mapa ang Esc key upang lumabas sa insert mode, maaaring gamitin ang key mapping. Sa sumusunod na halimbawa, ginagamit ko ex mga susi upang lumabas sa normal na mode. :inoremap ex < Esc >Kapag mabilis mong pinindot ang ex key ang insert mode ay lalabas, kaya pumapasok sa normal na mode. Visual Mode MappingAng visual mode ay isang napaka makabuluhang mode para sa pagpili ng teksto sa Vim editor. Bukod sa pangunahing pagpili, ang visual mode ay may iba pang iba't ibang mga mode tulad ng visual line, at visual block mode. Sa visual mode, tilde (~) ay ginagamit upang i-toggle ang case. Upang magamit ang tilde (~), kailangan mong pindutin ang dalawang key (shift+~) . Sa sumusunod na halimbawa, ni-mapa ko ang c key visual mode upang pumili ng salita sa ilalim ng cursor at baguhin ang case nito. :vnoremap c iw~Ngayon, pindutin ang v upang makapasok sa visual mode at pindutin ang c key upang i-toggle ang salita sa ilalim ng cursor gaya ng ipinapakita sa sumusunod na GIF.
Command-Line Mode MappingMaraming mahahalagang command sa Vim ang gumagana sa command-line mode lamang. Tulad ng, upang i-save ang file :Sa utos ay ginagamit, katulad, upang i-save at umalis :wq utos ang ginagamit. Ang lahat ng mga tab at split operation ay ginagawa din sa command-line mode. Halimbawa, para makalikha ng bagong tab, ang : subordinate utos ang ginagamit. Well, para mabilis na gumawa ng tab, ctrl+t sapat na ang mga susi. :cnoremap < C-t > paksa < CR >Ngayon, pindutin ang colon (:) upang makapasok sa command-line mode at pagkatapos ctrl+t upang magbukas ng bagong tab; ito ay mas mabilis kaysa sa pag-type ng buo paksa utos at Bumalik susi.
Paglikha ng Vim Custom na Mga Utos Ngayon, ipasok ang command mode at isagawa ang :Mycmd utos. Operator Pending Mode MappingAng operator pending mode ay isang mode kung saan naghihintay si Vim para sa motion command pagkatapos pindutin ang operator key. Ang mga karaniwang operator ay y, d, at c. Halimbawa, para tanggalin ang kasalukuyang linya at ang 3 sumusunod na linya, gagamitin mo ang d operator na may 3j galaw (d3j). Hindi mo maaaring pindutin ang mga key na ito nang sabay-sabay, upang makamit ang nais na operasyon. Ang mode ay karaniwang ginagamit upang i-map ang mga galaw. Magmapa tayo ng galaw na pipili sa kasalukuyang linya at 3 linyang sinusundan nito. :onoremap < F2 > 3jNgayon, upang yank ang kasalukuyang linya at 3 linya na sinusundan nito gamitin ang angF2 mga susi, sa parehong paraan, ang d maaari ding ilapat ang operator. Ang isa pang mahalagang bagay na dapat tandaan ay kung magdaragdag ka ng bilang sa nabanggit sa itaas na nakamapang galaw, sabihin nating 2 Paano Magmapa ng Mga Kaganapan sa MouseBagama't ang Vim ay isang ganap na napapasadyang keyboard-centric na text editor, ang pagkakaroon ng pag-andar ng mouse ay ginagawang mas mahusay. Bukod sa normal na mga key ng keyboard, ang lahat ng mga kaganapan sa mouse ay maaari ding i-mapa sa Vim. Halimbawa, kung gusto mong imapa ang right double click at left double click para tumalon ang mga marka pasulong at paatras ayon sa pagkakabanggit, gamitin ang sumusunod na pagmamapa. :noremap < 2 -RightMouse > ] `:noremap < 2 -Kaliwang daga > [ ` Ang iba pang mga kaganapan sa mouse na maaaring imapa ay ibinibigay sa sumusunod na talahanayan.
Paano Magmapa gamit ang Leader Key sa VimHindi kumpleto ang Vim mapping kung wala ang leader key. Ang leader key ay ang default na key na maaaring gamitin sa pagmapa ng mga key, kahit na ang mga ito ay nakamapa para gumawa ng ilang iba pang gawain. Halimbawa, kung na-map mo ang d key upang tanggalin ang lahat ng linya, pagkatapos ay maaari nating imapa ang parehong key upang tanggalin lamang ang 5 linya gamit ang leader key. Para sa mga walang pamilyar, gamit ang Vim leader key. Ito ay isang susi na may prefix na isa pang susi o hanay ng mga susi para sa pagmamapa ng mga utos o pagpapatakbo. Ang default na leader key ng Vim ay isang backslash (\), ngunit ito ay nako-customize. Halimbawa, ang DD Ang command ay ginagamit upang tanggalin ang linya sa ilalim ng cursor. Kung gusto mong imapa ang DD command na tanggalin ang lahat ng mga linya sa mga file, pagkatapos ay maaari mong gamitin ang leader key. :noremap < Pinuno > DD ggVGdNgayon, sa tuwing pinindot mo ang \DD key, ang lahat ng mga linya sa file ay tatanggalin. Maaari mong i-attribute ang Vim leader key bilang control key sa Windows o ang command key sa macOS. Paano Magmapa ng Vimscript FunctionAng Vim editor ay hindi nakakulong sa mga utos o pagpapatakbo. Mayroong isang buong programming language sa paligid ng Vim upang lumikha ng pasadyang pag-andar na tinatawag na Vimscript. Madali kang makakagawa ng script o function at imapa ito sa isang key. Halimbawa, gumawa tayo ng function na magbibigay-daan sa mga setting tulad ng line number, functionality ng mouse at textwidth. function MySettings ( )itakda numero itakda daga =a itakda lapad ng teksto = 80 endfunction Ilagay ang function na ito sa vimrc file. Imapa natin ang function na ito gamit ang leader at ang s key. gagamitin ko :noremap < Pinuno > s :tawagan ang MySettings ( ) < CR >Ngayon, sa tuwing pinindot mo ang \s key, ang function ay tatawagin at anumang functionality sa loob ng function ay isasagawa. Tandaan : Dapat palaging naka-capitalize ang unang titik ng pangalan ng function habang gumagawa ng custom na function sa Vim. Paano Magmapa ng Mga Panlabas na Utos sa VimAng mga panlabas na utos ay maaari ding imapa sa Vim. Ang mga panlabas na utos ay tumutukoy sa mga utos ng Linux o Unix. Halimbawa, kung gusto mong imapa ang panlabas uri command upang ayusin ang lahat ng mga linya sa kasalukuyang buffer sa F1 key, gamitin ang sumusunod na command. :noremap < F1 > : %! uri < CR >Sa parehong paraan, kung nagsusulat ka ng isang script file at ginagawa itong maipapatupad nang hindi umaalis sa Vim session, maaari mong gamitin ang chmod utos sa loob. Halimbawa, upang gawing executable ang kasalukuyang file, maaari mong isagawa ang command :!chmod +x % sa Vim. Kung madalas mong ginagawa ang gawaing ito, i-map lamang ang isang susi dito. :noremap < F1 > : ! chmod +x %Sa Vim, maaaring gamitin ang anumang panlabas na utos na may tandang padamdam (!). Paano Mag-alis ng isang Keymap sa VimUpang alisin ang mga keymap sa Vim, tukuyin muna kung saan ito tinukoy. Gaya ng napag-usapan kanina, ang mga keymap ay maaaring buffer-local at permanente. Kung ang keymap ay permanente at inilagay sa vimrc file, pagkatapos ay alisin lamang ang mga ito mula sa file ay aalisin sa mapa ang mga susi. Kung ang pagmamapa ay ginawa sa kasalukuyang buffer, maaari silang alisin gamit ang :unmap o :unmap! mga utos.
Halimbawa, upang alisin ang
Upang alisin ang lahat ng mga mapa sa kasalukuyang buffer, gamitin ang :mapclear utos. :mapclearI-clear ng command sa itaas ang lahat ng keymap ng normal, visual, select, o operator na nakabinbing mode. Upang i-clear ang lahat ng keymaps ng insert at command line mode gamitin ang: :mapclear ! Tandaan na ang mga default na Vim command ay hindi maaaring maging malinaw, gayunpaman, na maaaring hindi paganahin gamit ang :unmap utos na may Hindi na gagana ang dd sa kasalukuyang buffer. Gamit ang paraang ito, maaaring hindi paganahin ang anumang keymap para sa kasalukuyang session. Cheat Sheet ng Vim Key MappingAng sumusunod na larawan ay nagbibigay ng isang listahan ng lahat ng mga utos at ang kanilang mga partikular na mode para sa sanggunian.
KonklusyonAng Vim key mapping ay isang madaling paraan upang i-automate ang iyong mga gawain, madalas na ginagamit na key binding, mga command, at iba pang mga operasyon. Ito ay isang magkakaibang paksa at sa gabay na ito, sinakop ko ang lahat ng mga pangunahing aspeto na nauugnay sa pangunahing pagmamapa sa Vim. Mula sa pangkalahatang syntax hanggang sa paggawa ng pangunahing keymap at hanggang sa pagmamapa ng mga advanced na function ng Vimscript at mga panlabas na utos. Upang matuto nang higit pa tungkol sa Vim key mapping, gamitin ang :help key-mapping utos sa Vim. |