În acest ghid cuprinzător, voi explica cum să mapați cheile în Vim pentru a automatiza operațiunile. De la crearea unei hărți de bază a tastelor până la maparea avansată a tastelor, împreună cu procesele de a le face permanente și de a le elimina.
- Sintaxă
- Argumente speciale Vim
- Crearea unei hărți de taste de bază
- Listarea hărților de taste
- Efectuarea permanentă a hărților de taste
- Evitarea recursiunii
- Crearea de hărți de taste specifice modului
- Cum să mapați evenimentele mouse-ului
- Cum să cartografiezi cu cheia Leader în Vim
- Cum să mapați o funcție Vimscript
- Cum să mapați comenzile externe în Vim
- Cum să eliminați o hartă de taste în Vim
- Cheat Sheet Maping Key Vim
- Concluzie
Sintaxă
Pentru a mapa cheia în Vim, este utilizată următoarea sintaxă:
În sintaxa de mai sus:
|
nmap, imap, vmap, xmap, cmap sau omap | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
*În sintaxa de mai sus, secțiunea Argumente speciale VimArgumentele speciale Vim sunt etichete folosite pentru a oferi funcționalitate suplimentară hărților de taste. Aceste argumente apar după comanda :map și înainte de {rhs} și {lhs}. De exemplu, pentru a face un buffer de hartă specific, utilizați argumentul special în felul următor: :Hartă < tampon > < C-a > ggVG
Notațiile speciale ale tastelor Vim sunt menționate în imaginea următoare.
De exemplu, dacă doriți să utilizați tasta spațiu în maparea tastelor, va fi folosită notația Crearea unei hărți de taste de bază în VimSă înțelegem maparea tastelor Vim cu un exemplu de bază. Vreau să mapez comanda select all lines ( ggVG ) la ctrl+a chei. Pentru a mapa tastele ctrl+a, voi rula următoarea comandă în Vim. :Hartă < C-a > ggVG Aici, În mod similar, pentru a mapa numărul de linie comutați funcționalitatea cu F1 utilizarea cheii: :Hartă < F1 > :set numar !Acum, când apăsați tasta F1, numărul de linie va fi activat, iar apăsarea acesteia din nou îl dezactivează. Rețineți că această metodă va mapa numai cheile din bufferul curent și va fi eliminată la închiderea bufferului. Listarea hărților de tastePentru a lista toate mapările cheie ale modurilor normal, vizual și în așteptare ale operatorului, utilizați comanda :map. :HartăPentru a lista maparea tastelor introduce și Linie de comanda moduri, utilizați :map! Comanda. :Hartă !Pentru a enumera maparea tastelor unui anumit mod, trebuie doar să tastați litera inițială a modului înainte de cuvântul cheie al hărții.
Mai mult, pentru a enumera toate hărțile, inclusiv hărțile plugin cu căi, utilizați :hartă verbală comanda. :hartă verbală Pentru o anumită cheie, menționați pur și simplu cheia în comandă ( :hartă verbală Efectuarea permanentă a hărților de tasteHărțile de taste menționate în secțiunea de mai sus vor mapa cheile numai în bufferul curent. Pentru a face mapările cheilor Vim permanente, hărțile trebuie să fie plasate în fișierul vimrc.
Rețineți că în timp ce plasați harta tastelor în vimrc fișier, nu adăugați două puncte (:) înainte de Hartă comanda. După ce ați plasat harta tastelor în vimrc fișier, salvați și părăsiți-l folosind comanda :wq sau folosind tastele Shift+zz. Hărțile de taste plasate în vimrc fișierul va fi global și poate fi folosit în toate sesiunile Vim. Cu toate acestea, anumite hărți de taste pot fi dezactivate temporar dacă afectează activitatea în sesiunea curentă, consultați secțiunea Cum să eliminați o hartă de taste în Vim de mai jos. The vimrc este fișierul de setări al Vim care conține diverse comenzi și setări. Este prezent în /usr/share/vim/ director pe macOS și /etc/vim pe Linux. Este important de reținut că vimrc fișierele din directoarele menționate sunt fișiere specifice sistemului. Puteți edita aceste fișiere și pentru maparea cheilor, dar aș recomanda să creați un fișier specific utilizatorului vimrc fișier în directorul principal. Evitarea recursiuniiÎnainte de a merge mai departe, este important să aflați despre recursivitate în maparea tastelor Vim. Dezavantajele sale și cum se poate preveni. Poate fi înțeles prin utilizarea unui exemplu. :Hartă dd 3jddÎn exemplul de mai sus, am mapat dd tastele pentru a vă deplasa în jos cu 3 linii și a șterge linia de sub cursor. Acum, când apăs pe dd , va încerca să execute harta 3jdd . Vim va interpreta dd comanda ca hartă și executați harta în mod repetat, așa cum se arată în imaginea următoare.
Notă : Recursiunea poate îngheța editorul Vim. Pentru a o dezgheța, apăsați ctrl+c chei. Pentru a evita recursiunea, înlocuiți Hartă cuvânt cheie cu noremapa , Unde ' nore ' mijloace nerecursiv . Voi înlocui Hartă cuvânt cheie cu noremapa pentru a remedia recursiunea din harta tastelor de mai sus. :noremap dd 3jddVoi recomanda utilizarea noremapa în loc de Hartă pentru a evita crearea accidentală de cartografiere recursivă. Crearea de hărți de taste specifice moduluiVim a făcut maparea tastelor atât de versatilă încât chiar și o hartă de taste a unui anumit mod poate fi creată destul de ușor. De exemplu, dacă ați realizat o hartă de taste pentru modul de inserare folosind un F1 cheie, atunci puteți mapa la fel F1 tastați în alt mod pentru o operațiune complet nouă. În exemplul următor, am mapat F1 tasta pentru a șterge 3 linii din normal mod și trageți 3 linii în introduce modul. :nmap < F1 > 3dd:imap < F1 > < CT > Prima hartă șterge trei linii în modul normal atunci când apăsați tasta F1, în timp ce a doua hartă adaugă o indentație în linia curentă când este în modul inserare folosind aceeași tastă. Acum, să înțelegem maparea în fiecare mod. Maparea modului normalPentru a aplica o hartă în modul normal, utilizați numai nmap cuvânt cheie. De exemplu, pentru a copia toate liniile dintr-un fișier folosind ctrl+c taste, voi folosi următoarea comandă. :nmap < C-c > ggVGyDupă cum sa discutat mai devreme, este cea mai bună practică să folosiți o metodă nerecursivă pentru a mapa o cheie, prin urmare, voi înlocui nmap cu nnoremap cuvânt cheie. :nnoremap < C-c > ggVGyAșezați-l fără două puncte (:) în vimrc fișier pentru a-l transforma într-o hartă permanentă a tastelor. voi folosi noremapa in loc de Hartă în exemplul următor. Maparea modului de inserarePentru a mapa cheile pentru modul de inserare, trebuie doar să utilizați i în loc de n . De exemplu, în modul de inserare, ctrl+p și ctrl+n tastele sunt folosite pentru a completa cuvântul pe baza potrivirii înapoi și, respectiv, înainte. Pentru a mapa ctrl+p tastele cu tasta Tab, voi folosi următoarea comandă. :inoremap < Tab > < C-p > Mai important, dacă doriți să faceți o hartă mod operator în așteptare comenzi în modul de inserare , apoi trebuie să introduceți Acum, când apăs pe ctrl+x tastele, va imprima 3ddi comanda în loc să o execute.
Pentru a o repara, voi introduce Acum, comanda va executa menținerea mea în modul de inserare. Multe mini-laptop-uri nu au Esc tasta, care este importantă pentru a ieși din modul curent. Deci, pentru a mapa Esc pentru a ieși din modul de inserare, poate fi utilizată maparea tastelor. În exemplul următor, folosesc ex tastele pentru a ieși în modul normal. :inoremap ex < Esc >Când apăsați rapid pe ex tastele se va ieși din modul de inserare, intrând astfel în modul normal. Maparea modului vizualModul vizual este un mod foarte important pentru selectarea textului în editorul Vim. În afară de selecția de bază, modul vizual are și alte moduri diferite, cum ar fi linia vizuală și moduri de bloc vizual. În modul vizual, tilde (~) este folosit pentru a comuta cazul. Pentru a utiliza tilde (~), trebuie să apăsați cele două taste (shift+~) . În exemplul următor, mapez tasta c modul vizual pentru a selecta un cuvânt sub cursor și pentru a-i schimba majuscule. :vnoremap c iw~Acum, apăsați v pentru a intra în modul vizual și apăsați tasta c pentru a comuta cuvântul sub cursor, așa cum se arată în următorul GIF.
Maparea modului liniei de comandăMulte comenzi esențiale Vim funcționează numai în modul linie de comandă. De exemplu, pentru a salva fișierul :În comanda este folosită, în mod similar, pentru a salva și a ieși :wq este folosită comanda. Toate filele și operațiunile de împărțire sunt efectuate și în modul linie de comandă. De exemplu, pentru a crea o filă nouă, fișierul : subordonat este folosită comanda. Ei bine, pentru a crea rapid o filă, ctrl+t cheile sunt suficiente. :cnoremap < CT > subiect < CR >Acum, apăsați două puncte (:) pentru a intra în modul linie de comandă și apoi ctrl+t pentru a deschide o filă nouă; este mult mai rapid decât tastarea întregului subiect comanda si Întoarcere cheie.
Crearea comenzilor personalizate Vim Acum, intrați în modul de comandă și executați :cmd-ul meu comanda. Maparea modului în așteptare a operatoruluiModul operator în așteptare este un mod în care Vim așteaptă comanda de mișcare după ce tasta operator este apăsată. Operatorii comuni sunt y, d și c. De exemplu, pentru a șterge linia curentă și următoarele 3 linii, veți folosi operatorul d cu 3j mișcare (d3j). Nu puteți apăsa simultan aceste taste, pentru a realiza operația dorită. Modul este utilizat în general pentru a mapa mișcările. Să mapam o mișcare care va selecta linia curentă și 3 linii urmate de ea. :onoremhartă < F2 > 3jAcum, pentru a smulge linia curentă și 3 linii urmate de aceasta, utilizați theF2 cheile, în același mod, și d poate fi aplicat și operator. Un alt lucru important de reținut este dacă adăugați un număr la mișcarea mapată mai sus menționată, să spunem 2 Cum să mapați evenimentele mouse-uluiDeși Vim este un editor de text centrat pe tastatură complet personalizabil, disponibilitatea funcționalității mouse-ului îl face și mai bun. În afară de tastele normale de la tastatură, toate evenimentele mouse-ului pot fi mapate și în Vim. De exemplu, dacă doriți să mapați dublu clic dreapta și dublu clic stâng pentru a sări marcajele înainte și, respectiv, înapoi, utilizați următoarea mapare. :noremap < 2 -Dreapta Mouse > ] `:noremap < 2 -Stânga mouse-ului > [ ` Alte evenimente de mouse care pot fi mapate sunt date în tabelul următor.
Cum să cartografiezi cu cheia Leader în VimMaparea Vim este incompletă fără cheia de lider. Cheia de lider este cheia implicită care poate fi utilizată pentru a mapa cheile, chiar dacă acestea sunt mapate pentru a efectua alte sarcini. De exemplu, dacă ați mapat d tasta pentru a șterge toate liniile, apoi putem mapa aceeași cheie pentru a șterge doar 5 linii folosind cheia de lider. Pentru cei care nu au familiaritate, cu cheia de lider Vim. Este o cheie care este prefixată cu o altă tastă sau un set de taste pentru maparea comenzilor sau operațiilor. Tasta de lider implicită a Vim este o bară oblică inversă (\), dar este personalizabilă. De exemplu, cel dd comanda este folosită pentru a șterge linia de sub cursor. Dacă doriți să mapați dd comandă pentru a șterge toate liniile din fișiere, apoi puteți utiliza tasta lider. :noremap < Lider > dd ggVGdAcum, ori de câte ori apăsați tasta \dd tasta, toate liniile din fișier vor fi șterse. Puteți atribui cheia lider Vim drept cheie de control pe Windows sau cheie de comandă în macOS. Cum să mapați o funcție VimscriptEditorul Vim nu se limitează la comenzi sau operații. Există un întreg limbaj de programare în jurul Vim pentru a crea funcționalități personalizate numite Vimscript. Puteți crea cu ușurință un script sau o funcție și o puteți mapa la o cheie. De exemplu, să creăm o funcție care va activa setări precum numărul de linie, funcționalitatea mouse-ului și lățimea textului. funcţie Setarile mele ( )a stabilit număr a stabilit mouse =a a stabilit lățimea textului = 80 funcția finală Plasați această funcție în fișierul vimrc. Să mapam această funcție cu liderul și tastele s. voi folosi :noremap < Lider > s : apelați MySettings ( ) < CR >Acum, ori de câte ori apăsați tasta \s tastele, funcția va fi apelată și orice funcționalitate din interiorul funcției va fi executată. Notă : Prima literă a numelui funcției ar trebui să fie întotdeauna scrisă cu majuscule atunci când se creează o funcție personalizată în Vim. Cum să mapați comenzile externe în VimComenzile externe pot fi mapate și în Vim. Comenzile externe se referă la comenzi Linux sau Unix. De exemplu, dacă doriți să mapați extern fel comandă pentru a sorta toate liniile din bufferul curent la F1 tasta, utilizați următoarea comandă. :noremap < F1 > : %! fel < CR >În același mod, dacă scrieți un fișier script și îl faceți executabil fără a părăsi sesiunea Vim, puteți utiliza chmod comanda intern. De exemplu, pentru a face fișierul curent executabil, puteți executa comanda :!chmod +x % în Vim. Dacă efectuați frecvent această sarcină, atunci pur și simplu mapați o cheie pentru aceasta. :noremap < F1 > : ! chmod +x %În Vim, orice comandă externă poate fi folosită cu un semn de exclamare (!). Cum să eliminați o hartă de taste în VimPentru a elimina hărțile de taste din Vim, mai întâi identificați unde este definită. După cum sa discutat mai devreme, hărțile de taste pot fi locale-tampon și permanente. Dacă harta tastelor este permanentă și plasată în fișierul vimrc, atunci pur și simplu eliminarea acestora din fișier va dezamapa cheile. Dacă maparea se face în buffer-ul curent, atunci acestea pot fi eliminate folosind :unmap sau :unmap! comenzi.
De exemplu, pentru a elimina
Pentru a elimina toate hărțile din bufferul curent, utilizați :mapclear comanda. :mapclearComanda de mai sus va șterge toate hărțile de taste din modul normal, vizual, selectare sau în așteptare de operator. Pentru a șterge toate hărțile de taste ale modurilor de inserare și linie de comandă, utilizați: :mapclear ! Rețineți că comenzile implicite Vim nu pot fi clare, totuși, acestea pot fi dezactivate folosind :unmap comanda cu dd nu va mai fi funcțional în bufferul curent. Folosind această metodă, orice hartă de taste poate fi dezactivată pentru sesiunea curentă. Cheat Sheet Mapping Key VimUrmătoarea imagine oferă o listă cu toate comenzile și modurile lor specifice pentru referință.
ConcluzieMaparea tastelor Vim este o modalitate utilă de a vă automatiza sarcinile, legarea tastelor utilizate frecvent, comenzile și alte operațiuni. Este un subiect divers și în acest ghid, am acoperit toate aspectele majore care sunt legate de maparea cheilor în Vim. De la sintaxa generală la crearea unei hărți de taste de bază și până la maparea funcțiilor avansate Vimscript și comenzilor externe. Pentru a afla mai multe despre maparea tastelor Vim, utilizați :help key-mapping comanda în Vim. |