V tejto komplexnej príručke vysvetlím, ako mapovať kľúče vo Vime na automatizáciu operácií. Od vytvorenia základnej mapy kľúčov až po pokročilé mapovanie kľúčov spolu s procesmi ich trvalého a odstránenia.
- Syntax
- Špeciálne argumenty Vim
- Vytvorenie základnej mapy klávesov
- Zoznam máp kláves
- Vytváranie trvalých máp kláves
- Vyhýbanie sa rekurzii
- Vytváranie máp kláves špecifických pre režim
- Ako mapovať udalosti myši
- Ako mapovať pomocou Leader Key vo Vime
- Ako mapovať funkciu Vimscript
- Ako mapovať externé príkazy vo Vime
- Ako odstrániť keymapu vo Vim
- Vim Key Mapping Cheat Sheet
- Záver
Syntax
Na mapovanie kľúča vo Vime sa používa nasledujúca syntax:
Vo vyššie uvedenej syntaxi:
|
nmap, imap, vmap, xmap, cmap alebo omap | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
*Vo vyššie uvedenej syntaxi je sekcia Špeciálne argumenty VimŠpeciálne argumenty Vim sú značky používané na poskytnutie dodatočných funkcií kľúčovým mapám. Tieto argumenty sa objavia za príkazom :map a pred {rhs} a {lhs}. Napríklad, ak chcete vytvoriť špecifickú vyrovnávaciu pamäť mapy, použite špeciálny argument nasledujúcim spôsobom: :mapa < vyrovnávacej pamäte > < C-a > ggVG
Zápisy špeciálnych kláves Vim sú uvedené na nasledujúcom obrázku.
Napríklad, ak chcete použiť medzerník pri mapovaní kľúča, použije sa zápis Vytvorenie základnej mapy klávesov vo VimePoďme pochopiť mapovanie kľúčov Vim na základnom príklade. Chcem namapovať príkaz select all lines ( ggVG ) do ctrl+a kľúče. Na mapovanie kláves ctrl+a spustím vo Vime nasledujúci príkaz. :mapa < C-a > ggVG Tu, Podobne na mapovanie čísla riadku prepínajte funkcie s F1 použitie kľúča: :mapa < F1 > :nastaviť číslo !Teraz, keď stlačíte kláves F1, číslo riadku sa aktivuje a jeho opätovným stlačením ho deaktivujete. Upozorňujeme, že táto metóda mapuje iba kľúče v aktuálnej vyrovnávacej pamäti a po zatvorení vyrovnávacej pamäte sa odstráni. Zoznam máp klávesAk chcete zobraziť zoznam všetkých kľúčových mapovaní normálneho, vizuálneho a operátorského režimu, použite príkaz :map. :mapaAk chcete zobraziť zoznam mapovaní kľúčov vložiť a príkazový riadok režimov, použite :map! Príkaz. :mapa !Ak chcete zobraziť kľúčové mapovanie konkrétneho režimu, stačí zadať počiatočné písmeno režimu pred kľúčové slovo mapy.
Okrem toho na zoznam všetkých máp vrátane doplnkových máp s cestami použite :podrobná mapa príkaz. :podrobná mapa Pre konkrétny kľúč jednoducho uveďte kľúč v príkaze ( :podrobná mapa Vytváranie trvalých máp klávesKlávesové mapy uvedené vo vyššie uvedenej časti mapujú klávesy iba v aktuálnej vyrovnávacej pamäti. Aby boli mapovania kľúčov Vim trvalé, mapy musia byť umiestnené v súbore vimrc.
Všimnite si, že pri umiestňovaní keymapy do vimrc súbor, nepridávajte dvojbodku (:) pred mapa príkaz. Po umiestnení keymapy do vimrc súbor, uložte a ukončite ho pomocou príkazu :wq alebo pomocou kláves shift+zz. Klávesové mapy umiestnené v vimrc súbor bude globálny a možno ho použiť vo všetkých reláciách Vimu. Niektoré mapy klávesov však možno dočasne deaktivovať, ak ovplyvňujú prácu v aktuálnej relácii, pozrite si časť Ako odstrániť mapu kláves vo Vime nižšie. The vimrc je súbor nastavení Vimu, ktorý obsahuje rôzne príkazy a nastavenia. Je prítomný v /usr/share/vim/ adresár na macOS a /etc/vim v systéme Linux. Je dôležité poznamenať, že vimrc súbory v uvedených adresároch sú systémové súbory. Tieto súbory môžete upraviť aj na mapovanie kľúčov, ale odporučil by som vytvoriť špecifické pre používateľa vimrc súbor v domovskom adresári. Vyhýbanie sa rekurziiPred posunom vpred je dôležité dozvedieť sa o rekurzii v mapovaní kľúčov Vim. Jeho nevýhody a ako tomu predchádzať. Dá sa to pochopiť pomocou príkladu. :mapa dd 3jddVo vyššie uvedenom príklade som zmapoval dd kláves pre posun o 3 riadky nadol a vymazanie riadku pod kurzorom. Teraz, keď stlačím tlačidlo dd , pokúsi sa spustiť mapu 3jdd . Vim bude interpretovať dd príkaz ako mapu a opakovane vykonajte mapu, ako je znázornené na nasledujúcom obrázku.
Poznámka : Rekurzia môže zmraziť editor Vim. Ak ho chcete rozmraziť, stlačte ctrl+c kľúče. Aby ste sa vyhli rekurzii, vymeňte mapa kľúčové slovo s noremap , kde ' nore “ znamená nerekurzívne . nahradím mapa kľúčové slovo s noremap opraviť rekurziu vo vyššie uvedenej mape klávesov. :noremap dd 3jddOdporúčam používať noremap namiesto mapa aby sa predišlo náhodnému vytvoreniu rekurzívneho mapovania. Vytváranie máp kláves špecifických pre režimVim urobil mapovanie kláves tak všestranné, že dokonca aj klávesovú mapu konkrétneho režimu je možné vytvoriť celkom jednoducho. Napríklad, ak ste vytvorili klávesovú mapu pre režim vkladania pomocou F1 kľúč, potom môžete mapovať to isté F1 zadajte iný režim pre úplne novú operáciu. V nasledujúcom príklade som zmapoval F1 tlačidlo na vymazanie 3 riadkov v normálne režime a vytrhnite 3 riadky v vložiť režim. :nmap < F1 > 3dd:imap < F1 > < C-t > Prvá mapa vymaže tri riadky v normálnom režime pri stlačení klávesu F1, zatiaľ čo druhá mapa pridá jedno odsadenie v aktuálnom riadku, keď je v režime vkladania pomocou rovnakého klávesu. Teraz pochopme mapovanie v každom režime. Mapovanie v normálnom režimeAk chcete použiť mapu v normálnom režime, použite iba nmap kľúčové slovo. Ak chcete napríklad skopírovať všetky riadky v súbore pomocou ctrl+c klávesy, použijem nasledujúci príkaz. :nmap < C-c > ggVGyAko už bolo spomenuté vyššie, osvedčeným postupom je použiť na mapovanie kľúča nerekurzívnu metódu, preto nahradím nmap s nnoremap kľúčové slovo. :noremap < C-c > ggVGyUmiestnite ho bez dvojbodky (:) do vimrc súbor, aby sa z neho stala trvalá mapa klávesov. budem používať noremap namiesto toho mapa v nasledujúcom príklade. Vložiť mapovanie režimuNa mapovanie kľúčov pre režim vkladania stačí použiť i namiesto n . Napríklad v režime vkladania ctrl+p a ctrl+n klávesy sa používajú na automatické dopĺňanie slova na základe spätnej a doprednej zhody. Na mapovanie ctrl+p klávesy s klávesom tabulátor, použijem nasledujúci príkaz. :inoremap < Tab > < C-p > Čo je dôležitejšie, ak chcete mapovať režim čakania na operátora príkazy v režim vkladania , potom musíte vložiť Teraz, keď stlačím tlačidlo ctrl+x kľúče, vytlačí sa 3ddi príkaz namiesto jeho vykonania.
Aby som to napravil, vložím Teraz príkaz vykoná príkaz keep me v režime vkladania. Mnohým mini notebookom chýba Esc kľúč, ktorý je dôležitý na opustenie aktuálneho režimu. Takže na mapovanie Esc klávesu na ukončenie režimu vkladania, možno použiť mapovanie kláves. V nasledujúcom príklade používam napr pre návrat do normálneho režimu. :inoremap ex < Esc >Keď rýchlo stlačíte tlačidlo napr tlačidlami sa režim vkladania ukončí a vstúpi do normálneho režimu. Mapovanie vizuálneho režimuVizuálny režim je veľmi dôležitý režim pre výber textu v editore Vim. Okrem základného výberu má vizuálny režim ďalšie rôzne režimy, ako napríklad vizuálna čiara a režimy vizuálneho bloku. Vo vizuálnom režime vlnovka (~) sa používa na prepínanie prípadu. Ak chcete použiť vlnovku (~), musíte stlačiť dve klávesy (shift+~) . V nasledujúcom príklade mapujem kľúč c vizuálny režim vyberte slovo pod kurzorom a zmeňte veľkosť písmen. :vnoremap c iw~Teraz stlačením tlačidla v prejdite do vizuálneho režimu a stlačením klávesu c prepnite slovo pod kurzorom, ako je znázornené na nasledujúcom obrázku GIF.
Mapovanie režimu príkazového riadkaMnoho základných príkazov Vim funguje iba v režime príkazového riadka. Napríklad na uloženie súboru :In príkaz sa používa podobne na uloženie a ukončenie :wq používa sa príkaz. Všetky karty a operácie rozdelenia sa tiež vykonávajú v režime príkazového riadka. Napríklad, ak chcete vytvoriť novú kartu, : podriadený používa sa príkaz. Ak chcete rýchlo vytvoriť kartu, ctrl+t kľúče stačia. :cnoremap < C-t > predmet < CR >Teraz stlačte dvojbodku (:), aby ste vstúpili do režimu príkazového riadka a potom ctrl+t otvoriť novú kartu; je to oveľa rýchlejšie ako písať celé predmet príkaz a Návrat kľúč.
Vytváranie vlastných príkazov Vim Teraz zadajte príkazový režim a vykonajte príkaz :Mycmd príkaz. Mapovanie režimu čakajúceho operátoraRežim čakania na operátora je režim, v ktorom Vim čaká na pohybový príkaz po stlačení klávesu operátora. Bežné operátory sú y, d a c. Ak chcete napríklad odstrániť aktuálny riadok a 3 nasledujúce riadky, použijete operátor d with 3j pohyb (d3j). Tieto tlačidlá nemôžete stlačiť súčasne, aby ste dosiahli požadovanú operáciu. Režim sa vo všeobecnosti používa na mapovanie pohybov. Namapujme pohyb, ktorý vyberie aktuálnu čiaru a 3 za ňou nasledované čiary. :onoremapa < F2 > 3jTeraz, ak chcete vytrhnúť aktuálny riadok a 3 riadky za ním, použite theF2 kľúče, rovnakým spôsobom, d možno použiť aj operátor. Ďalšou dôležitou vecou, ktorú treba mať na pamäti, je, ak k vyššie uvedenému mapovanému pohybu pridáte počet, povedzme 2 Ako mapovať udalosti myšiAj keď je Vim plne prispôsobiteľný textový editor zameraný na klávesnicu, dostupnosť funkcií myši ho robí ešte lepším. Okrem bežných kláves na klávesnici môžu byť všetky udalosti myši mapované vo Vime. Napríklad, ak chcete mapovať dvojité kliknutie pravým tlačidlom myši a dvojité kliknutie ľavým tlačidlom na preskočenie značiek dopredu a dozadu, použite nasledujúce mapovanie. :noremap < 2 -Pravá myš > ] `:noremap < 2 - Ľavá myš > [ ` Ďalšie udalosti myši, ktoré je možné mapovať, sú uvedené v nasledujúcej tabuľke.
Ako mapovať pomocou kľúča Leader vo VimeMapovanie Vim je neúplné bez vedúceho kľúča. Kľúč vodcu je predvolený kľúč, ktorý možno použiť na mapovanie kľúčov, aj keď sú namapované na vykonávanie niektorých iných úloh. Napríklad, ak ste zmapovali d kľúč na vymazanie všetkých riadkov, potom môžeme pomocou vedúceho kľúča namapovať rovnaký kľúč na vymazanie iba 5 riadkov. Pre tých, ktorí nepoznajú vodcovský kľúč Vim. Je to kláves, ktorý má predponu s iným klávesom alebo sadou kláves na mapovanie príkazov alebo operácií. Predvolený vodiaci kľúč Vim je spätná lomka (\), ale je prispôsobiteľný. Napríklad dd príkaz sa používa na vymazanie riadku pod kurzorom. Ak chcete zmapovať dd príkaz na vymazanie všetkých riadkov v súboroch, potom môžete použiť kľúč. :noremap < Vodca > dd ggVGdTeraz, kedykoľvek stlačíte tlačidlo \dd všetky riadky v súbore sa vymažú. Kláves vodcu Vim môžete priradiť ako ovládací kláves v systéme Windows alebo príkazový kláves v systéme macOS. Ako mapovať funkciu VimscriptEditor Vim nie je obmedzený na príkazy alebo operácie. Okolo Vimu existuje celý programovací jazyk na vytváranie vlastných funkcií nazývaných Vimscript. Môžete jednoducho vytvoriť skript alebo funkciu a namapovať ich na kľúč. Vytvorme napríklad funkciu, ktorá umožní nastavenia ako číslo riadku, funkčnosť myši a šírka textu. funkciu Moje nastavenia ( )nastaviť číslo nastaviť myš =a nastaviť šírka textu = 80 koncová funkcia Umiestnite túto funkciu do súboru vimrc. Zmapujme túto funkciu pomocou klávesov leader a s. budem používať :noremap < Vodca > s: zavolajte do Moje nastavenia ( ) < CR >Teraz, kedykoľvek stlačíte tlačidlo \s kláves, funkcia sa zavolá a vykoná sa akákoľvek funkcia vo vnútri funkcie. Poznámka : Prvé písmeno názvu funkcie by malo byť pri vytváraní vlastnej funkcie vo Vime vždy veľké. Ako mapovať externé príkazy vo VimeExterné príkazy môžu byť tiež mapované vo Vime. Externé príkazy odkazujú na príkazy pre Linux alebo Unix. Napríklad, ak chcete mapovať externé triediť príkaz na zoradenie všetkých riadkov v aktuálnej vyrovnávacej pamäti do F1 použite nasledujúci príkaz. :noremap < F1 > : %! triediť < CR >Rovnakým spôsobom, ak píšete súbor skriptu a robíte ho spustiteľným bez opustenia relácie Vim, môžete použiť chmod príkaz interne. Napríklad, ak chcete, aby bol aktuálny súbor spustiteľný, môžete príkaz spustiť :!chmod +x % vo Vim. Ak túto úlohu vykonávate často, jednoducho k nej namapujte kľúč. :noremap < F1 > : ! chmod +x %Vo Vime je možné použiť akýkoľvek externý príkaz s výkričníkom (!). Ako odstrániť keymapu vo VimAk chcete odstrániť mapy klávesov vo Vime, najprv identifikujte, kde sú definované. Ako už bolo uvedené, mapy kláves môžu byť lokálne a trvalé. Ak je mapa kľúčov trvalá a umiestnená v súbore vimrc, potom ich jednoduché odstránenie zo súboru zruší mapovanie kľúčov. Ak sa mapovanie vykonáva v aktuálnej vyrovnávacej pamäti, možno ich odstrániť pomocou :odmapovať alebo :odmapovať! príkazy.
Napríklad na odstránenie
Ak chcete odstrániť všetky mapy v aktuálnej vyrovnávacej pamäti, použite :mapclear príkaz. :mapclearVyššie uvedený príkaz vymaže všetky mapy klávesov v normálnom, vizuálnom, výberovom alebo čakacom režime operátora. Ak chcete vymazať všetky mapy klávesov v režime vkladania a príkazového riadka, použite: :mapclear ! Všimnite si, že predvolené príkazy Vim nemôžu byť jasné, čo však možno deaktivovať pomocou :odmapovať príkaz s dd už nebude v aktuálnej vyrovnávacej pamäti funkčný. Pomocou tejto metódy je možné pre aktuálnu reláciu zakázať akúkoľvek mapu kláves. Vim Key Mapping Cheat SheetNasledujúci obrázok poskytuje zoznam všetkých príkazov a ich špecifických režimov.
ZáverMapovanie kláves Vim je praktický spôsob, ako automatizovať vaše úlohy, často používané viazanie klávesov, príkazy a ďalšie operácie. Je to rôznorodá téma a v tejto príručke som pokryl všetky hlavné aspekty, ktoré súvisia s mapovaním kľúčov vo Vime. Od všeobecnej syntaxe cez vytvorenie základnej mapy kláves až po mapovanie pokročilých funkcií Vimscriptu a externých príkazov. Ak sa chcete dozvedieť viac o mapovaní kľúčov Vim, použite :pomoc pri mapovaní kľúčov príkaz vo Vim. |