Kako mapirati ključeve u Vimu

Kako Mapirati Kljuceve U Vimu



U Vimu, preslikavanje tipki je proces dodjele skupa tipki ili naredbi određenoj tipki za obavljanje određenog zadatka. Na primjer, da odaberete sve retke u datoteci koju koristite ggVG naredbu, a za to morate pritisnuti četiri tipke. Što ako to učinite samo jednim pritiskom na tipku? Ovdje je korisno mapiranje Vim ključeva. Mapiranje ključeva je način automatizacije mnogih zadataka koji se često izvode u Vimu. I, sigurno ste čuli za to; ako nešto radite više od dva puta, automatizirajte to!

U ovom opsežnom vodiču objasnit ću kako mapirati ključeve u Vimu za automatizaciju operacija. Od stvaranja osnovne mape ključeva do naprednog mapiranja ključeva, zajedno s procesima njihovog trajnog i uklanjanja.

Sintaksa

Za mapiranje ključa u Vimu koristi se sljedeća sintaksa:







mapa



U gornjoj sintaksi:



karta nmap, imap, vmap, xmap, cmap ili omap
* , ,

*U gornjoj sintaksi odjeljak nije obavezan.

Vim posebni argumenti

Vim posebni argumenti su oznake koje se koriste za davanje dodatne funkcionalnosti mapama tipki. Ovi se argumenti pojavljuju nakon naredbe :map, a prije {rhs} i {lhs}.



Na primjer, da napravite međuspremnik karte specifičnim, koristite poseban argument na sljedeći način:

:karta < pufer > < C-a > ggVG
Za suzbijanje eho poruka iz mape tipki
Kako bi međuspremnik karte bio specifičan (jedinstven za trenutni međuspremnik)
Za označavanje da je karta dio skripte ili dodatka
*Koristi se za definiranje posebnih tipki za mapiranje pomoću <> notacije (funkcijske tipke, tipke za upravljanje, shift i druge tipke koje nisu abecedne)
Označava da je lijeva strana preslikavanja izraz i da se treba procijeniti kako bi se dobila desna strana
Učiniti kartu jedinstvenom među lokalnim i globalnim kartama
Za preskakanje pričekajte sljedeći znak naredbe na karti

Vim posebne oznake ključa spominju se na sljedećoj slici.

Na primjer, ako želite koristiti razmaknicu u preslikavanju tipki, koristit će se oznaka .

Stvaranje osnovne mape tipki u Vimu

Razmotrimo mapiranje Vim ključeva na osnovnom primjeru. Želim mapirati naredbu odabir svih redaka ( ggVG ) do ctrl+a ključevi. Za mapiranje tipki ctrl+a, pokrenut ću sljedeću naredbu u Vimu.

:karta < C-a > ggVG

Ovdje, označava ctrl i a ključevi, dok ggVG je naredba za odabir svih redaka u datoteci. The :karta ključna riječ je prema zadanim postavkama za normalno mapiranje, međutim, :nmap može se koristiti i eksplicitno za normalan način rada.

Slično, za mapiranje broja retka prebacite funkcionalnost pomoću F1 upotreba ključa:

:karta < F1 > :postavite broj !

Sada, kada pritisnete tipku F1, broj retka će biti omogućen, a ponovni pritisak ga deaktivira.

Imajte na umu da će ova metoda mapirati samo ključeve u trenutnom međuspremniku i bit će uklonjena nakon zatvaranja međuspremnika.

Ispisivanje mapa tipki

Za popis svih preslikavanja tipki normalnog, vizualnog i čekanja operatera, koristite naredbu :map.

:karta

Za popis preslikavanja ključeva umetnuti i naredbeni redak načina, koristite :map! Naredba.

:karta !

Za popis preslikavanja tipki određenog načina, samo upišite početno slovo načina prije ključne riječi karte.

:nmap Za prikaz karata normalnog načina rada
:imap Za prikaz karata načina umetanja
:vmap Za prikaz karata vizualnog i odabira načina
:smap Za prikaz karata odabranog načina rada
:xmap Za prikaz karata vizualnog načina rada
:cmap Za prikaz mapa načina naredbenog retka
:omap Za prikaz karata operatera u čekanju

Štoviše, za popis svih karata, uključujući mape dodatka sa stazama, koristite :verbose map naredba.

:verbose map

Za određeni ključ jednostavno spomenite ključ u naredbi ( :verbose map ).

Izrada trajnih mapa tipki

Mape tipki spomenute u gornjem odjeljku će mapirati tipke samo u trenutnom međuspremniku. Kako bi preslikavanja Vim ključeva bila trajna, mape moraju biti smještene u datoteku vimrc.

Imajte na umu da prilikom postavljanja karte tipki u vimrc datoteku, nemojte dodavati dvotočku (:) ispred karta naredba.

Nakon postavljanja mape tipki u vimrc datoteku, spremite je i zatvorite pomoću naredbe :wq ili pomoću tipki shift+zz. Karte tipki smještene u vimrc datoteka će biti globalna i moći će se koristiti u svim Vim sesijama. Međutim, određene karte tipki mogu se privremeno onemogućiti ako utječu na rad u trenutnoj sesiji, pogledajte odjeljak Kako ukloniti mapu tipki u Vimu u nastavku.

The vimrc je datoteka postavki Vima koja sadrži razne naredbe i postavke. Prisutan je u /usr/share/vim/ imenik na macOS-u i /etc/vim na Linuxu. Važno je napomenuti da je vimrc datoteke u spomenutim direktorijima su datoteke specifične za sustav. Možete uređivati ​​i ove datoteke za mapiranje ključeva, ali ja bih preporučio stvaranje korisnički specifičnih vimrc datoteku u matičnom direktoriju.

Izbjegavanje rekurzije

Prije nego krenemo naprijed, važno je naučiti o rekurziji u mapiranju ključeva Vim. Njegovi nedostaci i kako to spriječiti. Može se shvatiti korištenjem primjera.

:karta dd 3jdd

U gornjem primjeru mapirao sam dd tipke za pomicanje prema dolje za 3 retka i brisanje retka ispod kursora. Sada, kada pritisnem dd , pokušat će izvršiti mapu 3jdd . Vim će protumačiti dd naredbu kao kartu i više puta izvršite kartu, kao što je prikazano na sljedećoj slici.

Bilješka : Rekurzija može zamrznuti Vim editor. Za odmrzavanje pritisnite ctrl+c ključevi.

Da biste izbjegli rekurziju, zamijenite karta ključna riječ sa noremapa , gdje ' nore ' sredstva nerekurzivan . Ja ću zamijeniti karta ključna riječ sa noremapa da popravite rekurziju u gornjoj mapi tipki.

:noremap dd 3jdd

Preporučit ću korištenje noremapa umjesto karta kako biste izbjegli slučajno stvaranje rekurzivnog mapiranja.

Stvaranje mapa tipki specifičnih za način rada

Vim je napravio mapiranje tipki toliko svestranim da se čak i mapa tipki određenog načina rada može stvoriti prilično jednostavno. Na primjer, ako ste napravili mapu tipkovnice za način umetanja pomoću F1 ključ, onda možete mapirati isti F1 tipku u drugom načinu za potpuno novu operaciju.

U sljedećem primjeru mapirao sam F1 tipka za brisanje 3 retka u normalan načinu i povucite 3 retka u umetnuti način rada.

:nmap < F1 > 3dd
:imap < F1 > < C-t >

Prva karta briše tri retka u normalnom načinu rada kada se pritisne tipka F1, dok druga mapa dodaje jedno uvlačenje u trenutnom retku kada je u načinu umetanja pomoću iste tipke. Hajdemo sada razumjeti mapiranje u svakom načinu.

Mapiranje normalnog načina rada

Za primjenu karte u normalnom načinu rada, koristite samo nmap ključna riječ. Na primjer, za kopiranje svih redaka u datoteci pomoću ctrl+c tipke, upotrijebit ću sljedeću naredbu.

:nmap < C-c > ggVGy

Kao što je ranije spomenuto, najbolja je praksa koristiti nerekurzivnu metodu za mapiranje ključa, stoga ću zamijeniti nmap s nnoremap ključna riječ.

:nnoremap < C-c > ggVGy

Stavite ga bez dvotočke (:) u vimrc datoteku kako biste je učinili trajnom mapom tipki.

koristiti ću noremapa umjesto karta u sljedećem primjeru.

Umetni mapiranje načina

Za mapiranje ključeva za način umetanja, samo upotrijebite ja umjesto n . Na primjer, u načinu umetanja, ctrl+p i ctrl+n tipke se koriste za automatsko dovršavanje riječi na temelju podudaranja unatrag i unaprijed. Za mapiranje ctrl+p tipke s tipkom tab, upotrijebit ću sljedeću naredbu.

:inoremap < Tab > < C-p >

Još važnije, ako želite mapirati način čekanja operatera naredbe u način umetanja , tada trebate umetnuti tipku na desnoj strani za izlaz iz načina umetanja kako biste izvršili te naredbe. Na primjer, u sljedećoj mapi tipkovnice želim izbrisati 3 retka pomoću ctrl+x tipke i ponovno uđite u način umetanja.

:inoremap < C-x > 3ddi

Sada, kada pritisnem ctrl+x tipke, ispisat će 3ddi naredbu umjesto da je izvršite.

Da to popravim, umetnut ću prije 3ddi naredba.

:inoremap < C-x > < Esc > 3ddi

Sada će naredba izvršiti zadrži me u načinu umetanja.

Mnogim mini prijenosnim računalima nedostaje Esc ključ, koji je važan za izlaz iz trenutnog načina rada. Dakle, za mapiranje Esc tipku za izlaz iz načina umetanja, može se koristiti mapiranje tipki. U sljedećem primjeru koristim pr tipke za izlaz u normalni način rada.

:inoremap pr < Esc >

Kada brzo pritisnete pr tipke izaći će iz načina umetanja, čime će se ući u normalni način rada.

Mapiranje vizualnog načina

Vizualni način je vrlo značajan način za odabir teksta u Vim editoru. Osim osnovnog odabira, vizualni način ima i druge različite načine kao što su načini vizualne linije i vizualni blok.

U vizualnom načinu, tilda (~) koristi se za promjenu kućišta. Za korištenje tilde (~) morate pritisnuti dvije tipke (shift+~) . U sljedećem primjeru mapiram tipku c vizualni način rada za odabir riječi ispod pokazivača i promjenu veličine slova.

:vnoremap c iw~

Sada pritisnite v za ulazak u vizualni način rada i pritisnite tipku c za prebacivanje riječi ispod kursora kao što je prikazano na sljedećem GIF-u.

Mapiranje u načinu naredbenog retka

Mnoge Vim bitne naredbe rade samo u načinu naredbenog retka. Na primjer, za spremanje datoteke :U naredba se koristi, slično, za spremanje i izlazak :wq koristi se naredba. Sve kartice i operacije dijeljenja također se izvode u načinu naredbenog retka. Na primjer, kako biste stvorili novu karticu, : podređeni koristi se naredba. Pa, za brzo stvaranje kartice, ctrl+t ključevi su dovoljni.

:cnoremap < C-t > subjekt < CR >

Sada pritisnite dvotočku (:) za ulazak u način naredbenog retka, a zatim ctrl+t za otvaranje nove kartice; puno je brže od upisivanja cijelog subjekt zapovijedati i Povratak ključ.

Stvaranje Vim prilagođenih naredbi
Ulazak u naredbeni način za izvršavanje karte čini se manje korisnim. Ali možete kreirati vlastite prilagođene naredbe u Vimu pomoću :naredba opcija. Ova značajka dosta nalikuje Vim preslikavanju ključeva. Na primjer, da biste stvorili brzu naredbu za postavljanje broja retka i širine teksta na 80, koristite sljedeću naredbu.

:naredba Mycmd :postavi broj širina teksta = 80

Sada uđite u naredbeni mod i izvršite :Mycmd naredba.

Mapiranje načina čekanja operatera

Operator Pending Mode je način u kojem Vim čeka na naredbu kretanja nakon što se pritisne tipka operatera. Uobičajeni operatori su y, d i c. Na primjer, za brisanje trenutnog retka i sljedeća 3 retka, upotrijebit ćete d operator sa 3j kretanje (d3j). Ne možete pritisnuti ove tipke istovremeno kako biste postigli željenu radnju.

Način se općenito koristi za mapiranje kretanja. Mapirajmo pokret koji će odabrati trenutni redak i 3 retka iza njega.

:onoremap < F2 > 3j

Sada, za povlačenje trenutnog retka i 3 retka nakon njega koristite theF2 tipke, na isti način, d također se može primijeniti operator.

Još jedna važna stvar koju morate imati na umu je ako dodate brojanje gore spomenutom mapiranom kretanju, recimo 2 , karta će to uzeti kao 23j, a ne 6j. Da biste to popravili, može se koristiti registar izraza '='. Gornja karta se može modificirati kao @=’3j’ .

:onoremap < F2 > @ ='3j' < CR >

Kako mapirati događaje miša

Iako je Vim potpuno prilagodljiv uređivač teksta usmjeren na tipkovnicu, dostupnost funkcionalnosti miša čini ga još boljim. Osim uobičajenih tipki na tipkovnici, svi događaji miša također se mogu mapirati u Vimu. Na primjer, ako želite mapirati desni dvostruki klik i lijevi dvostruki klik za preskakanje oznaka naprijed odnosno natrag, koristite sljedeće mapiranje.

:noremap < 2 -Desni miš > ] `
:noremap < 2 -Lijevi miš > [ `

Ostali događaji miša koji se mogu mapirati navedeni su u sljedećoj tablici.

<2-Lijevi miš>
<2-Desni miš>
<3-Lijevi miš>
<3-Desni miš>
<4-Lijevi miš>
<4-Desni miš>

Kako mapirati pomoću ključa Leader u Vimu

Vim mapiranje je nepotpuno bez vodećeg ključa. Vodeći ključ je zadani ključ koji se može koristiti za mapiranje ključeva, čak i ako su mapirani za neke druge zadatke. Na primjer, ako ste mapirali d tipku za brisanje svih redaka, tada možemo mapirati istu tipku za brisanje samo 5 redaka pomoću tipke vodeće.

Za one koji nisu upoznati, s ključem Vim leader. To je ključ koji ima prefiks s drugim ključem ili skupom ključeva za mapiranje naredbi ili operacija. Vimov zadani glavni ključ je obrnuta kosa crta (\), ali se može prilagoditi.

Na primjer, dd naredba se koristi za brisanje linije ispod kursora. Ako želite mapirati dd naredbu za brisanje svih redaka u datotekama, tada možete koristiti ključnu tipku.

:noremap < Vođa > dd ggVGd

Sada, kad god pritisnete tipku \dd tipku, svi redovi u datoteci bit će izbrisani. Vodeću tipku Vim možete pripisati kao kontrolnu tipku u sustavu Windows ili naredbenu tipku u macOS-u.

Kako mapirati Vimscript funkciju

Vim editor nije ograničen na naredbe ili operacije. Oko Vima postoji cijeli programski jezik za stvaranje prilagođene funkcije pod nazivom Vimscript. Možete jednostavno stvoriti skriptu ili funkciju i preslikati je na ključ. Na primjer, stvorimo funkciju koja će omogućiti postavke kao što su broj retka, funkcionalnost miša i širina teksta.

funkcija Moje postavke ( )
postaviti broj
postaviti miš =a
postaviti širina teksta = 80
krajnja funkcija

Postavite ovu funkciju u datoteku vimrc.

Mapirajmo ovu funkciju s tipkama za vođicu i s. koristiti ću

:noremap < Vođa > s :pozovi Moje postavke ( ) < CR >

Sada, kad god pritisnete tipku \s tipke, funkcija će biti pozvana i sve funkcije unutar funkcije će se izvršiti.

Bilješka : Prvo slovo naziva funkcije treba uvijek biti velikim slovom dok stvarate prilagođenu funkciju u Vimu.

Kako mapirati vanjske naredbe u Vimu

Vanjske naredbe također se mogu mapirati u Vimu. Vanjske naredbe odnose se na Linux ili Unix naredbe. Na primjer, ako želite mapirati vanjski vrsta naredba za sortiranje svih redaka u trenutnom međuspremniku prema F1 tipku, koristite sljedeću naredbu.

:noremap < F1 > : %! vrsta < CR >

Na isti način, ako pišete datoteku skripte i činite je izvršnom bez napuštanja Vim sesije, možete koristiti chmod zapovijedati interno. Na primjer, da biste trenutnu datoteku učinili izvršnom, možete izvršiti naredbu :!chmod +x % u Vimu. Ako često obavljate ovaj zadatak, jednostavno mu mapirajte ključ.

:noremap < F1 > : ! chmod +x %

U Vimu se svaka vanjska naredba može koristiti sa znakom uzvika (!).

Kako ukloniti mapu tipki u Vimu

Da biste uklonili mape tipki u Vimu, prvo odredite gdje su definirane. Kao što je ranije objašnjeno, mape tipki mogu biti lokalne međuspremnika i trajne. Ako je mapa tipki trajna i smještena u datoteku vimrc, jednostavno uklanjanje iz datoteke demapirat će tipke.

Ako je mapiranje učinjeno u trenutnom međuspremniku, tada se mogu ukloniti korištenjem :unmap ili :unmap! naredbe.

  • :unmap za brisanje rasporeda tipki normalnog, vizualnog, odabranog ili operaterskog načina čekanja
  • :unmap! za brisanje rasporeda tipki načina umetanja i naredbenog retka

Na primjer, za uklanjanje ključ, koristite :unmap . Štoviše, uklanjanje ključeva može biti specifično za način rada. Ako želite ukloniti kartu normalnog načina rada, upotrijebite :nunmap . Ostale naredbe specifične za način rada za uklanjanje karte tipkovnice navedene su u nastavku:

:nunmap Za uklanjanje karti normalan način rada
:iunmap Za uklanjanje karti umetnuti način rada
:vunmap Za uklanjanje karti vizualni i Izaberi način rada
:sunčana karta Za uklanjanje karti Izaberi način rada
:xunmap Za uklanjanje karti vizualni način rada
:cunmap Za uklanjanje karti naredbeni redak način rada
:ounmap Za uklanjanje karti operater na čekanju način rada

Za uklanjanje svih mapa u trenutnom međuspremniku, koristite :mapclear naredba.

:mapclear

Gornja naredba će obrisati sve mape tipki normalnog, vizualnog, odabranog ili operaterskog načina čekanja.

Za brisanje svih rasporeda tipki načina umetanja i naredbenog retka koristite:

:mapclear !

Imajte na umu da zadane Vim naredbe ne mogu biti jasne, međutim, to se može onemogućiti pomoću :unmap naredba sa . Na primjer, ako želite onemogućiti dd funkcionalnost koja briše liniju ispod kursora, tada koristite :unmap dd .

:unmap dd < ne >

DD više neće biti funkcionalan u trenutnom međuspremniku. Koristeći ovu metodu, bilo koji raspored tipki može biti onemogućen za trenutnu sesiju.

Varalica za mapiranje ključeva Vim

Sljedeća slika daje popis svih naredbi i njihovih specifičnih načina za referencu.

Zaključak

Vim mapiranje tipki zgodan je način za automatizaciju vaših zadataka, često korištenih veza tipki, naredbi i drugih operacija. To je raznolika tema i u ovom sam vodiču pokrio sve glavne aspekte koji se odnose na mapiranje ključeva u Vimu. Od opće sintakse do stvaranja osnovne mape tipki pa sve do mapiranja naprednih Vimscript funkcija i vanjskih naredbi. Da biste saznali više o mapiranju ključeva Vim, koristite :help preslikavanje tipki naredba u Vimu.