Kako preslikati ključe v Vimu

Kako Preslikati Kljuce V Vimu



V Vimu je preslikava tipk postopek dodeljevanja nabora tipk ali ukazov določeni tipki za izvedbo določene naloge. Na primer, če želite izbrati vse vrstice v datoteki, ki jo uporabljate ggVG in za to morate pritisniti štiri tipke. Kaj pa če bi to naredili samo z enim pritiskom na tipko? Tukaj pride prav preslikava ključev Vim. Preslikava ključev je način avtomatizacije številnih pogosto izvajanih opravil v Vimu. In gotovo ste že slišali za to; če nekaj počnete več kot dvakrat, to avtomatizirajte!

V tem obsežnem vodniku bom razložil, kako preslikati ključe v Vimu za avtomatizacijo operacij. Od ustvarjanja osnovnega preslikave ključev do naprednega preslikave ključev, skupaj s postopki, kako jih narediti trajnimi in jih odstraniti.

Sintaksa

Za preslikavo ključa v Vimu je uporabljena naslednja sintaksa:







map



V zgornji sintaksi:



zemljevid nmap, imap, vmap, xmap, cmap ali omap
* , ,

*V zgornji sintaksi je razdelek neobvezen.

Posebni argumenti Vim

Posebni argumenti Vim so oznake, ki se uporabljajo za dodajanje dodatne funkcionalnosti preslikavam tipk. Ti argumenti se pojavijo za ukazom :map in pred {rhs} in {lhs}.



Na primer, če želite medpomnilnik zemljevida narediti specifičnega, uporabite poseben argument na naslednji način:

:zemljevid < medpomnilnik > < C-a > ggVG
Če želite preprečiti odmevana sporočila iz razporeditve tipk
Če želite, da je medpomnilnik zemljevida specifičen (edinstven za trenutni medpomnilnik)
Za označevanje, da je zemljevid del skripta ali vtičnika
*Uporablja se za definiranje posebnih tipk za preslikavo z zapisom <> (funkcijske tipke, tipke za nadzor, tipke shift in druge neabecedne tipke)
Označuje, da je leva stran preslikave izraz, ki ga je treba ovrednotiti, da dobimo desno stran
Da bo zemljevid edinstven med lokalnimi in globalnimi zemljevidi
Če želite preskočiti čakanje na naslednji ukazni znak na zemljevidu

Posebni ključni zapisi Vim so omenjeni na naslednji sliki.

Na primer, če želite uporabiti tipko za presledek pri preslikavi tipk, bo uporabljen zapis .

Ustvarjanje osnovne preslikave tipk v Vimu

Razumejmo preslikavo ključev Vim z osnovnim primerom. Želim preslikati ukaz za izbiro vseh vrstic ( ggVG ) za ctrl+a ključi. Za preslikavo tipk ctrl+a bom v Vimu zagnal naslednji ukaz.

:zemljevid < C-a > ggVG

tukaj, označuje ctrl in a ključi, medtem ko ggVG je ukaz za izbiro vseh vrstic v datoteki. The :zemljevid ključna beseda je privzeto za preslikavo v običajnem načinu, vendar je :nmap se lahko uporablja tudi izrecno za normalno način.

Podobno, če želite preslikati številko vrstice, preklopite funkcijo z F1 uporaba ključa:

:zemljevid < F1 > : nastavite številko !

Zdaj, ko pritisnete tipko F1, bo številka vrstice omogočena, s ponovnim pritiskom pa jo onemogočite.

Upoštevajte, da bo ta metoda samo preslikala ključe v trenutnem medpomnilniku in bo odstranjena, ko zaprete medpomnilnik.

Seznam preslikav tipk

Za seznam vseh preslikav tipk običajnega, vizualnega in čakajočega načina operaterja uporabite ukaz :map.

:zemljevid

Za seznam ključnih preslikav vstavi in ukazna vrstica načine, uporabite :map! Ukaz.

:zemljevid !

Če želite prikazati preslikavo tipk določenega načina, samo vnesite začetno črko načina pred ključno besedo zemljevida.

:nmap Za prikaz zemljevidov običajnega načina
:imap Za prikaz zemljevidov načina vstavljanja
:vmap Za prikaz zemljevidov vizualnega in izbirnega načina
:smap Za prikaz zemljevidov izbranega načina
:xmap Za prikaz zemljevidov vizualnega načina
:cmap Za prikaz zemljevidov v načinu ukazne vrstice
:omap Za prikaz zemljevidov v čakajočem načinu operaterja

Poleg tega za seznam vseh zemljevidov, vključno z zemljevidi vtičnika s potmi, uporabite :podroben zemljevid ukaz.

:podroben zemljevid

Za določen ključ preprosto omenite ključ v ukazu ( :verbose map ).

Naredite trajne preslikave tipk

Preslikave tipk, omenjene v zgornjem razdelku, bodo preslikale samo tipke v trenutnem medpomnilniku. Da bi bile preslikave ključev Vim trajne, je treba preslikave postaviti v datoteko vimrc.

Upoštevajte, da med postavljanjem preslikave tipk v vimrc ne dodajte dvopičja (:) pred zemljevid ukaz.

Po postavitvi preslikave tipk v vimrc datoteko, shranite in zaprite z ukazom :wq ali s tipkama shift+zz. Razporeditve tipk, postavljene v vimrc bo globalna in jo bo mogoče uporabiti v vseh sejah Vim. Vendar pa je mogoče nekatere preslikave tipk začasno onemogočiti, če vplivajo na delo v trenutni seji, glejte spodnji razdelek Kako odstraniti preslikavo tipk v Vimu.

The vimrc je nastavitvena datoteka programa Vim, ki vsebuje različne ukaze in nastavitve. Prisoten je v /usr/share/vim/ imenik v sistemu macOS in /etc/vim v sistemu Linux. Pomembno je omeniti, da je vimrc datoteke v omenjenih imenikih so sistemske datoteke. Te datoteke lahko urejate tudi za preslikavo ključev, vendar priporočam, da ustvarite uporabniško specifično vimrc datoteko v domačem imeniku.

Izogibanje rekurziji

Preden nadaljujemo, je pomembno, da se naučimo o rekurziji v preslikavi ključev Vim. Njegove slabosti in kako ga preprečiti. To je mogoče razumeti z uporabo primera.

:zemljevid dd 3jdd

V zgornjem primeru sem preslikal dd tipki za pomik za 3 vrstice navzdol in brisanje vrstice pod kazalcem. Zdaj, ko pritisnem dd , bo poskusil izvesti zemljevid 3jdd . Vim bo tolmačil dd kot zemljevid in večkrat izvršite zemljevid, kot je prikazano na naslednji sliki.

Opomba : Rekurzija lahko zamrzne urejevalnik Vim. Če ga želite odmrzniti, pritisnite ctrl+c ključi.

Da se izognete rekurziji, zamenjajte zemljevid ključna beseda z noremap , kje ' nore ' pomeni nerekurzivno . Zamenjal bom zemljevid ključna beseda z noremap da popravite rekurzijo v zgornji razporeditvi tipk.

:noremap dd 3jdd

Priporočam uporabo noremap namesto zemljevid da preprečite nenamerno ustvarjanje rekurzivnega preslikave.

Ustvarjanje preslikav tipk, specifičnih za način

Vim je preslikavo tipk naredil tako vsestransko, da je mogoče preprosto ustvariti celo preslikavo tipk določenega načina. Na primer, če ste naredili razpored tipk za način vstavljanja z uporabo F1 ključ, potem lahko preslikate isto F1 tipko v drugem načinu za povsem novo operacijo.

V naslednjem primeru sem preslikal F1 tipka za brisanje 3 vrstic v normalno načinu in potegnite 3 vrstice v vstavi način.

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

Prvi zemljevid izbriše tri vrstice v običajnem načinu, ko pritisnete tipko F1, medtem ko drugi zemljevid doda en zamik v trenutni vrstici, ko je v načinu vstavljanja z isto tipko. Zdaj pa poglejmo preslikavo v vsakem načinu.

Preslikava običajnega načina

Če želite uporabiti zemljevid v običajnem načinu, uporabite samo nmap ključna beseda. Na primer, če želite kopirati vse vrstice v datoteki z uporabo ctrl+c tipke, bom uporabil naslednji ukaz.

:nmap < C-c > ggVGy

Kot smo že omenili, je najboljša praksa uporaba nerekurzivne metode za preslikavo ključa, zato bom zamenjal nmap z nnoremap ključna beseda.

:nnoremap < C-c > ggVGy

Postavite ga brez dvopičja (:) v vimrc datoteko, da postane trajna preslikava tipk.

bom uporabil noremap namesto zemljevid v naslednjem primeru.

Vstavi preslikavo načina

Za preslikavo ključev za način vstavljanja preprosto uporabite jaz namesto n . Na primer, v načinu vstavljanja ctrl+p in ctrl+n tipke se uporabljajo za samodejno dokončanje besede na podlagi ujemanja nazaj oziroma naprej. Za preslikavo ctrl+p tipke s tipko tab, bom uporabil naslednji ukaz.

:inoremap < Tab > < C-p >

Še pomembneje, če želite zemljevid način čakanja operaterja ukazi v način vstavljanja , potem morate vstaviti tipko na desni strani za izhod iz načina vstavljanja in izvajanje teh ukazov. Na primer, v naslednji razporeditvi tipk želim izbrisati 3 vrstice z uporabo ctrl+x tipke in ponovno vstopite v način vstavljanja.

:inoremap < C-x > 3ddi

Zdaj, ko pritisnem ctrl+x ključe, bo natisnil 3ddi namesto da bi ga izvršili.

Da ga popravim, bom vstavil pred 3ddi ukaz.

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

Zdaj bo ukaz izvedel obdrži me v načinu vstavljanja.

Veliko mini prenosnih računalnikov nima Esc ključ, ki je pomemben za izhod iz trenutnega načina. Torej, za preslikavo Esc tipko za izhod iz načina vstavljanja, lahko uporabite preslikavo tipk. V naslednjem primeru uporabljam npr tipke za izhod v običajni način.

:inoremap ex < Esc >

Ko na hitro pritisnete npr tipke bo zapustil način vstavljanja in tako vstopil v običajni način.

Preslikava v vizualnem načinu

Vizualni način je zelo pomemben način za izbiranje besedila v urejevalniku Vim. Poleg osnovne izbire ima vizualni način druge različne načine, kot sta vizualna črta in vizualni blok.

V vizualnem načinu, tilda (~) se uporablja za preklop ohišja. Za uporabo tilde (~) morate pritisniti obe tipki (shift+~) . V naslednjem primeru preslikavam tipko c vizualni način da izberete besedo pod kazalcem in spremenite njeno velikost.

:vnoremap c iw~

Zdaj pritisnite v, da vstopite v vizualni način, in pritisnite tipko c, da preklopite besedo pod kazalcem, kot je prikazano v naslednjem GIF-u.

Preslikava v načinu ukazne vrstice

Številni bistveni ukazi Vim delujejo samo v načinu ukazne vrstice. Na primer, da shranite datoteko :Noter ukaz se na podoben način uporablja za shranjevanje in izhod :wq ukaz se uporablja. Vsi zavihki in operacije delitve se izvajajo tudi v načinu ukazne vrstice. Če želite na primer ustvariti nov zavihek, : podrejen ukaz se uporablja. No, če želite hitro ustvariti zavihek, ctrl+t ključi so dovolj.

:cnoremap < C-t > predmet < CR >

Zdaj pritisnite dvopičje (:), da vstopite v način ukazne vrstice, in nato ctrl+t da odprete nov zavihek; je veliko hitreje kot vtipkati celotno predmet ukaz in Vrnitev ključ.

Ustvarjanje ukazov po meri Vim
Vstop v ukazni način za izvedbo zemljevida se zdi manj uporaben. Lahko pa ustvarite lastne ukaze po meri v Vimu z uporabo : ukaz možnost. Ta funkcija precej spominja na preslikavo tipk Vim. Na primer, če želite ustvariti hiter ukaz za nastavitev številke vrstice in širine besedila na 80, uporabite naslednji ukaz.

:ukaz Mycmd :nastavi številko textwidth = 80

Zdaj vstopite v ukazni način in izvedite :Mycmd ukaz.

Preslikava načina čakanja operaterja

Način čakanja operaterja je način, v katerem Vim čaka na ukaz gibanja po pritisku operaterske tipke. Pogosti operatorji so y, d in c. Če želite na primer izbrisati trenutno vrstico in naslednje 3 vrstice, boste uporabili operator d z 3j gibanje (d3j). Teh tipk ne morete pritisniti hkrati, da dosežete želeno operacijo.

Način se običajno uporablja za preslikavo gibanja. Preslikajmo gibanje, ki bo izbralo trenutno vrstico in 3 vrstice, ki ji sledijo.

:onoremap < F2 > 3j

Zdaj, da potegnete trenutno vrstico in 3 vrstice, ki ji sledijo, uporabite theF2 ključi, na enak način, d uporabi se lahko tudi operater.

Druga pomembna stvar, ki jo morate imeti v mislih, je, če dodate štetje zgoraj omenjenemu preslikanemu gibanju, recimo 2 , bo zemljevid sprejel kot 23j, ne 6j. Če želite to popraviti, lahko uporabite izrazni register '='. Zgornji zemljevid je mogoče spremeniti kot @=’3j’ .

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

Kako preslikati dogodke miške

Čeprav je Vim popolnoma prilagodljiv urejevalnik besedil, osredotočen na tipkovnico, je zaradi razpoložljivosti funkcionalnosti miške še boljši. Poleg običajnih tipk na tipkovnici je mogoče v Vimu preslikati tudi vse dogodke miške. Na primer, če želite preslikati desni dvojni klik in levi dvojni klik za preskok oznak naprej oziroma nazaj, uporabite naslednjo preslikavo.

:noremap < 2 -Desna miška > ] `
:noremap < 2 -Leva miška > [ `

Drugi dogodki miške, ki jih je mogoče preslikati, so podani v naslednji tabeli.

<2-Leva miška>
<2-desna miška>
<3-leva miška>
<3-Desna miška>
<4-leva miška>
<4-desna miška>

Kako preslikati s ključem Leader v Vimu

Preslikava Vim je nepopolna brez vodilnega ključa. Vodilni ključ je privzeti ključ, ki ga je mogoče uporabiti za preslikavo ključev, tudi če so preslikani za izvajanje nekaterih drugih nalog. Na primer, če ste preslikali d tipko za brisanje vseh vrstic, potem lahko preslikamo isto tipko za brisanje samo 5 vrstic z uporabo vodilne tipke.

Za tiste, ki tega ne poznate, s ključem Vim leader. To je ključ, ki ima predpono drug ključ ali niz ključev za preslikavo ukazov ali operacij. Vimov privzeti glavni ključ je poševnica nazaj (\), vendar jo je mogoče prilagoditi.

Na primer, dd ukaz se uporablja za brisanje vrstice pod kazalcem. Če želite preslikati dd ukaz za brisanje vseh vrstic v datotekah, potem lahko uporabite vodilno tipko.

:noremap < Vodja > dd ggVGd

Zdaj, ko pritisnete \dd tipko, bodo vse vrstice v datoteki izbrisane. Vodilno tipko Vim lahko dodelite kot nadzorno tipko v sistemu Windows ali kot ukazno tipko v sistemu macOS.

Kako preslikati funkcijo Vimscript

Urejevalnik Vim ni omejen na ukaze ali operacije. Okoli Vima obstaja celoten programski jezik za ustvarjanje funkcionalnosti po meri, imenovan Vimscript. Z lahkoto lahko ustvarite skript ali funkcijo in jo preslikate v ključ. Na primer, ustvarimo funkcijo, ki bo omogočala nastavitve, kot so številka vrstice, funkcionalnost miške in širina besedila.

funkcijo Moje nastavitve ( )
set število
set miško =a
set textwidth = 80
končna funkcija

Postavite to funkcijo v datoteko vimrc.

Preslikajmo to funkcijo z vodilom in tipkama s. bom uporabil

:noremap < Vodja > s :pokličite Moje nastavitve ( ) < CR >

Zdaj, ko pritisnete \s tipke, bo funkcija poklicana in vse funkcije znotraj funkcije se bodo izvedle.

Opomba : med ustvarjanjem funkcije po meri v Vimu mora biti prva črka imena funkcije vedno velika.

Kako preslikati zunanje ukaze v Vimu

Zunanje ukaze je mogoče preslikati tudi v Vimu. Zunanji ukazi se nanašajo na ukaze Linux ali Unix. Na primer, če želite preslikati zunanje vrsta ukaz za razvrščanje vseh vrstic v trenutnem medpomnilniku v F1 uporabite naslednji ukaz.

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

Na enak način, če pišete skriptno datoteko in jo naredite izvršljivo, ne da bi zapustili sejo Vim, lahko uporabite chmod ukaz interno. Če želite na primer trenutno datoteko narediti izvedljivo, lahko izvedete ukaz :!chmod +x % v Vimu. Če pogosto opravljate to nalogo, ji preprosto preslikajte ključ.

:noremap < F1 > : ! chmod +x %

V Vimu je vsak zunanji ukaz mogoče uporabiti s klicajem (!).

Kako odstraniti preslikavo tipk v Vimu

Če želite odstraniti preslikave tipk v Vimu, najprej ugotovite, kje so definirane. Kot smo že omenili, so preslikave tipk lahko lokalne in stalne. Če je preslikava tipk trajna in postavljena v datoteko vimrc, potem preprosto odstranitev iz datoteke razveljavi preslikavo ključev.

Če se preslikava izvaja v trenutnem medpomnilniku, jih je mogoče odstraniti z uporabo :unmap oz :unmap! ukazi.

  • :unmap za brisanje preslikav tipk običajnega, vizualnega, izbirnega ali čakajočega načina operaterja
  • :unmap! za brisanje preslikav tipk načinov vstavljanja in ukazne vrstice

Na primer, da odstranite ključ, uporabite :unmap . Poleg tega je lahko odstranitev ključev odvisna od načina. Če želite odstraniti zemljevid običajnega načina, uporabite :nunmap . Drugi ukazi, specifični za način za odstranitev razporeditve tipk, so omenjeni spodaj:

:nunmap Če želite odstraniti zemljevide normalno način
:iunmap Če želite odstraniti zemljevide vstavi način
:vunmap Če želite odstraniti zemljevide vizualni in izberite način
:sončni zemljevid Če želite odstraniti zemljevide izberite način
:xunmap Če želite odstraniti zemljevide vizualni način
:cunmap Če želite odstraniti zemljevide ukazna vrstica način
:ounmap Če želite odstraniti zemljevide operater čaka način

Če želite odstraniti vse zemljevide v trenutnem medpomnilniku, uporabite :mapclear ukaz.

:mapclear

Zgornji ukaz bo počistil vse preslikave tipk običajnega, vizualnega, izbirnega ali čakajočega načina operaterja.

Če želite počistiti vse preslikave tipk načinov vstavljanja in ukazne vrstice, uporabite:

:mapclear !

Upoštevajte, da privzeti ukazi Vim ne morejo biti jasni, vendar jih je mogoče onemogočiti z :unmap ukaz z . Na primer, če želite onemogočiti funkcijo dd, ki izbriše vrstico pod kazalcem, uporabite :unmap dd .

:unmap dd < št >

dd ne bo več deloval v trenutnem medpomnilniku. S to metodo je mogoče onemogočiti katero koli razporeditev tipk za trenutno sejo.

Goljufija za preslikavo ključev Vim

Naslednja slika ponuja seznam vseh ukazov in njihovih posebnih načinov za referenco.

Zaključek

Preslikava tipk Vim je priročen način za avtomatizacijo vaših opravil, pogosto uporabljenih vezav tipk, ukazov in drugih operacij. To je raznolika tema in v tem priročniku sem zajel vse glavne vidike, ki so povezani s preslikavo ključev v Vimu. Od splošne sintakse do ustvarjanja osnovne razporeditve tipk in vse do preslikave naprednih funkcij Vimscript in zunanjih ukazov. Če želite izvedeti več o preslikavi ključev Vim, uporabite :help preslikava tipk ukaz v Vimu.