Ebben az átfogó útmutatóban elmagyarázom, hogyan kell leképezni a kulcsokat a Vimben a műveletek automatizálása érdekében. Az alapvető kulcsleképezés létrehozásától a speciális kulcsleképezésig, valamint az állandóvá tételük és az eltávolításuk folyamataiig.
- Szintaxis
- Vim speciális érvek
- Alapvető billentyűzetkiosztás létrehozása
- A Billentyűtérképek listázása
- Billentyűtérképek állandóvá tétele
- A rekurzió elkerülése
- Üzemmód-specifikus billentyűleképezések létrehozása
- Az egéresemények feltérképezése
- Hogyan készítsünk térképet Leader Key segítségével a Vimben
- Hogyan térképezzünk fel egy Vimscript-függvényt
- Külső parancsok feltérképezése a Vimben
- Billentyűtérkép eltávolítása a Vimben
- Vim Key Mapping Cheat Sheet
- Következtetés
Szintaxis
A kulcs Vimben való leképezéséhez a következő szintaxist kell használni:
A fenti szintaxisban:
|
nmap, imap, vmap, xmap, cmap vagy omap | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<érvek>* | *A fenti szintaxisban az Vim speciális érvekA Vim Special Arguments olyan címkék, amelyek további funkciókat biztosítanak a billentyűleképezéseknek. Ezek az argumentumok a :map parancs után, valamint az {rhs} és {lhs} előtt jelennek meg. Például egy leképezési puffer-specifikus beállításához használja a speciális argumentumot a következő módon: :térkép < puffer > < C-a > ggVG
A Vim speciális kulcsjelöléseit a következő kép említi.
Például, ha a szóköz billentyűt szeretné használni a billentyűleképezésben, a Alapvető billentyűzetkiosztás létrehozása a VimbenIsmerjük meg a Vim billentyűleképezést egy alapvető példával. Szeretném leképezni a Select all lines parancsot ( ggVG ) nak nek ctrl+a kulcsok. A ctrl+a billentyűk leképezéséhez a következő parancsot futtatom a Vimben. :térkép < C-a > ggVG Itt, Hasonlóképpen, a sorszám leképezéséhez kapcsolja át a funkciót a F1 kulcshasználat: :térkép < F1 > :szám beállítása !Most, amikor megnyomja az F1 billentyűt, a sorszám engedélyezve lesz, az újbóli megnyomása pedig letiltja. Vegye figyelembe, hogy ez a módszer csak az aktuális puffer kulcsait képezi le, és a puffer bezárásakor törlődik. A Billentyűtérképek listázásaA normál, a vizuális és az operátor függőben lévő módok összes kulcsleképezésének felsorolásához használja a :map parancsot. :térképA kulcsleképezés felsorolásához betét és parancs sor módban használja a :map! Parancs. :térkép !Egy adott mód billentyűleképezésének felsorolásához írja be a mód kezdőbetűjét a térkép kulcsszó elé.
Ezenkívül az összes térkép felsorolásához, beleértve a beépülő modulok útvonalait is, használja a :verbose térkép parancs. :verbose térkép Egy adott kulcshoz egyszerűen említse meg a kulcsot a parancsban ( :verbose térkép Billentyűtérképek állandóvá tételeA fenti részben említett billentyűleképezések csak az aktuális puffer kulcsait képezik le. A Vim kulcsleképezések állandóvá tételéhez a térképeket a vimrc fájlba kell helyezni.
Vegye figyelembe, hogy miközben a billentyűzetkiosztást a vimrc fájlt, ne írjon kettőspontot (:) a térkép parancs. Miután elhelyezte a billentyűkiosztást a vimrc fájlt, mentse el és lépjen ki a :wq paranccsal vagy a shift+zz billentyűkkel. Az elhelyezett billentyûtérképek vimrc fájl globális lesz, és az összes Vim munkamenetben használható. Bizonyos billentyűkiosztások azonban ideiglenesen letilthatók, ha hatással vannak az aktuális munkamenetben folyó munkára, lásd a Billentyűzetkiosztás eltávolítása a Vim alkalmazásban című részt alább. A vimrc a Vim beállítási fájlja, amely különféle parancsokat és beállításokat tartalmaz. Jelen van a /usr/share/vim/ macOS és /etc/vim Linuxon. Fontos megjegyezni, hogy a vimrc az említett könyvtárakban található fájlok rendszerspecifikus fájlok. Ezeket a fájlokat is szerkesztheti kulcsleképezéshez, de azt javaslom, hogy hozzon létre egy felhasználóspecifikusat vimrc fájlt a kezdőkönyvtárban. A rekurzió elkerüléseMielőtt továbblépne, fontos megismerni a rekurziót a Vim kulcsleképezésben. Hátrányai és hogyan lehet megelőzni. Egy példa segítségével érthető meg. :térkép dd 3jddA fenti példában feltérképeztem a dd gombokkal 3 sorral lejjebb léphet, és törölheti a kurzor alatti sort. Most, amikor megnyomom a dd , akkor megpróbálja végrehajtani a térképet 3jdd . Vim fogja értelmezni a dd parancsot térképként, és hajtsa végre a térképet ismételten, ahogy az a következő képen látható.
jegyzet : A rekurzió leállíthatja a Vim szerkesztőt. A lefagyás feloldásához nyomja meg a gombot ctrl+c kulcsok. A rekurzió elkerülése érdekében cserélje ki a térkép kulcsszóval noremap , ahol ' nore ’ jelenti nem rekurzív . lecserélem a térkép kulcsszóval noremap a rekurzió javításához a fenti billentyűleképezésben. :noremap dd 3jddJavaslom a használatát noremap ahelyett térkép hogy elkerüljük a véletlenszerű rekurzív leképezés létrehozását. Üzemmód-specifikus billentyűleképezések létrehozásaA Vim olyan sokoldalúvá tette a billentyűleképezést, hogy még egy adott módhoz tartozó billentyűleképezést is meglehetősen könnyen lehet létrehozni. Például, ha elkészített egy billentyűkiosztást a beszúrási módhoz egy F1 gombot, akkor leképezheti ugyanazt F1 egy teljesen új művelethez írjon be egy másik módot. A következő példában feltérképeztem a F1 gomb 3 sor törléséhez a Normál módban, és húzzon 3 sort a betét mód. :nmap < F1 > 3dd:imap < F1 > < C-t > Az első térkép normál módban három sort töröl az F1 billentyű megnyomásakor, míg a második leképezés egy behúzást ad az aktuális sorban, ha beszúrás módban ugyanazt a billentyűt használja. Most pedig értsük meg a leképezést az egyes módokban. Normál módú leképezésA térkép normál módban történő alkalmazásához csak használja nmap kulcsszó. Például egy fájl összes sorának másolásához a ctrl+c billentyűket, a következő parancsot fogom használni. :nmap < C-c > ggVGyAmint azt korábban tárgyaltuk, a legjobb gyakorlat egy nem rekurzív módszer használata egy kulcs leképezésére, ezért lecserélem a nmap val vel nnoremap kulcsszó. :nnoremap < C-c > ggVGyHelyezze kettőspont (:) nélkül a vimrc fájlt, hogy az állandó billentyűleképezés legyen. használni fogom noremap helyett a térkép a következő példában. Mód-leképezés beszúrásaA beszúrási mód billentyűinek leképezéséhez csak használja én ahelyett n . Beszúrás módban például ctrl+p és ctrl+n A gombok a szó automatikus kiegészítésére szolgálnak a visszafelé és előre egyezés alapján. Feltérképezni a ctrl+p billentyűket a tabulátor billentyűvel, a következő parancsot fogom használni. :inoremap < Tab > < C-p > Ami még fontosabb, ha térképezni akarsz kezelő függő módban parancsokat a beszúrási mód , akkor be kell illesztenie a Most, amikor megnyomom a ctrl+x gombokat, kinyomtatja a 3ddi parancs végrehajtása helyett.
A javításhoz beillesztem a Most a parancs végrehajtja a Keep me in beszúrás módot. Sok mini laptopból hiányzik a Kilépés gombot, ami fontos az aktuális módból való kilépéshez. Tehát feltérképezni a Kilépés gomb a beszúrási módból való kilépéshez, a billentyűleképezés használható. A következő példában azt használom volt gombokat a normál módból való kilépéshez. :inoremap pl < Kilépés >Ha gyorsan megnyomja a gombot volt gombok megnyomásával kilép a beszúrás módból, így normál módba lép. Vizuális mód leképezésA vizuális mód nagyon fontos mód a szöveg kijelölésére a Vim szerkesztőben. Az alapkiválasztáson kívül a vizuális mód más módokat is tartalmaz, mint például a vizuális vonal és a vizuális blokk módok. Vizuális módban tilde (~) a kis- és nagybetűk váltására szolgál. A tilde (~) használatához meg kell nyomni a két gombot (shift+~) . A következő példában a c billentyűt leképezem vizuális mód a kurzor alatti szó kiválasztásához és a kis- és nagybetűk megváltoztatásához. :vnoremap c iw~Most nyomja meg a v gombot a vizuális módba való belépéshez, és nyomja meg a c gombot a kurzor alatti szó váltásához, ahogy az a következő GIF-en látható.
Parancssori mód leképezésSok Vim alapvető parancs csak parancssori módban működik. Például a fájl mentése :Ban ben parancsot hasonló módon a mentéshez és a kilépéshez használják :wq parancsot használják. Az összes lap és felosztási művelet szintén parancssori módban történik. Például egy új lap létrehozásához a : alárendelt parancsot használják. Nos, egy lap gyors létrehozásához, ctrl+t elég a kulcs. :cnoremap < C-t > tantárgy < CR >Most nyomja meg a kettőspontot (:) a parancssori módba lépéshez, majd nyomja meg ctrl+t új lap megnyitásához; sokkal gyorsabb, mint az egészet beírni tantárgy parancsot és Visszatérés kulcs.
Egyéni Vim parancsok létrehozása Most lépjen be a parancs módba, és hajtsa végre a : Mycmd parancs. Kezelői függőben lévő mód hozzárendeléseA kezelői függő mód egy olyan mód, amelyben a Vim a kezelőgomb lenyomása után várja a mozgásparancsot. A közös operátorok az y, d és c. Például az aktuális sor és a következő 3 sor törléséhez használja a d operátort 3j mozgás (d3j). Ezeket a gombokat nem lehet egyszerre megnyomni a kívánt művelet eléréséhez. A módot általában a mozgások feltérképezésére használják. Térképezzünk fel egy mozgást, amely kijelöli az aktuális sort és az azt követő 3 sort. :onoremap < F2 > 3jMost az aktuális sor és az azt követő 3 sor megrántásához használja a az F2 kulcsok, ugyanúgy, a d operátor is alkalmazható. Egy másik fontos dolog, amit szem előtt kell tartani, ha a fent említett leképezett mozgáshoz hozzáad egy számlálót, mondjuk 2 Az egéresemények feltérképezéseBár a Vim egy teljesen testreszabható, billentyűzet-központú szövegszerkesztő, az egérfunkciók elérhetősége még jobbá teszi. A normál billentyűzet billentyűkön kívül az összes egéresemény is leképezhető a Vimben. Ha például a jobb oldali dupla kattintással és a bal oldali dupla kattintással szeretné leképezni a jeleket előre és hátra, használja a következő leképezést. :noremap < 2 -RightMouse > ] `:noremap < 2 -Bal egér > [ ` További leképezhető egéresemények a következő táblázatban találhatók.
Hogyan készítsünk térképet a Leader Key segítségével a VimbenA Vim-leképezés a vezetőkulcs nélkül nem teljes. A vezetőkulcs az alapértelmezett kulcs, amely a kulcsok leképezésére használható, még akkor is, ha más feladatok elvégzésére vannak leképezve. Például, ha feltérképezte a d gombot az összes sor törléséhez, akkor ugyanazt a kulcsot leképezhetjük csak 5 sor törlésére a vezető billentyűvel. Azok számára, akik nem ismerik a Vim vezető kulcsot. Ez egy olyan kulcs, amelynek előtagja egy másik kulcs vagy billentyűkészlet a parancsok vagy műveletek leképezéséhez. A Vim alapértelmezett vezető kulcsa egy fordított perjel (\), de testreszabható. Például a dd parancs a kurzor alatti sor törlésére szolgál. Ha szeretné feltérképezni a dd paranccsal törölheti a fájlok összes sorát, akkor használhatja a vezető billentyűt. :noremap < Vezető > dd ggVGdMost, amikor megnyomja a gombot \dd gombot, a fájl összes sora törlődik. A Vim vezetőkulcsot hozzárendelheti vezérlőkulcsként Windows rendszeren vagy parancsbillentyűként a macOS rendszerben. Hogyan térképezzünk fel egy Vimscript-függvénytA Vim szerkesztő nem korlátozódik a parancsokra vagy műveletekre. A Vim körül egy teljes programozási nyelv található a Vimscript nevű egyedi funkciók létrehozásához. Könnyen létrehozhat szkriptet vagy függvényt, és leképezheti egy kulcshoz. Például hozzunk létre egy függvényt, amely lehetővé teszi az olyan beállításokat, mint a sorszám, az egér funkciója és a szövegszélesség. funkció Beállításaim ( )készlet szám készlet egér =a készlet szövegszélesség = 80 végfunkció Helyezze ezt a függvényt a vimrc fájlba. Leképezzük ezt a függvényt a vezetővel és az s billentyűkkel. használni fogom :noremap < Vezető > s: hívja a Saját beállításokat ( ) < CR >Most, amikor megnyomja a gombot \s gombokat, a függvény meghívásra kerül, és a függvényen belüli bármely funkció végrehajtódik. jegyzet : A függvény nevének első betűjét mindig nagybetűvel kell írni, amikor egyéni függvényt hoz létre a Vimben. Külső parancsok feltérképezése a VimbenA külső parancsok a Vimben is leképezhetők. A külső parancsok Linux vagy Unix parancsokra utalnak. Például, ha le akarja képezni a külső fajta paranccsal rendezheti az aktuális puffer összes sorát a F1 gombot, használja a következő parancsot. :noremap < F1 > : %! fajta < CR >Ugyanígy, ha szkriptfájlt ír, és futtathatóvá teszi a Vim munkamenet elhagyása nélkül, használhatja a chmod belső parancsot. Például az aktuális fájl futtathatóvá tételéhez végrehajthatja a parancsot :!chmod +x % a Vim. Ha gyakran végzi ezt a feladatot, egyszerűen rendeljen hozzá egy kulcsot. :noremap < F1 > : ! chmod +x %A Vimben bármilyen külső parancs használható felkiáltójellel (!). Billentyűtérkép eltávolítása a VimbenA Vim billentyűzetkiosztásának eltávolításához először azonosítsa, hol van meghatározva. Amint azt korábban tárgyaltuk, a billentyűleképezések lehetnek pufferhelyiek és állandóak. Ha a billentyűleképezés állandó, és a vimrc fájlba kerül, akkor egyszerűen eltávolítja őket a fájlból, és megszünteti a kulcsok leképezését. Ha a leképezés az aktuális pufferben történik, akkor a segítségével eltávolíthatók :unmap vagy : unmap! parancsokat.
Például eltávolítani a
Az aktuális puffer összes térképének eltávolításához használja a :mapclear parancs. :mapclearA fenti parancs törli az összes normál, vizuális, kiválasztási vagy operátori függő mód billentyűkiosztását. A beszúrási és parancssori módok összes billentyűleképezésének törléséhez használja a következőket: :mapclear ! Vegye figyelembe, hogy az alapértelmezett Vim-parancsok nem lehetnek egyértelműek, de ezek a parancs segítségével letilthatók :unmap parancsot A dd többé nem fog működni az aktuális pufferben. Ezzel a módszerrel bármely billentyűkiosztás letiltható az aktuális munkamenethez. Vim Key Mapping Cheat SheetA következő kép az összes parancsot és azok speciális módozatait tartalmazza referenciaként.
KövetkeztetésA Vim billentyűleképezés praktikus módja a feladatok, a gyakran használt kulcs-összerendelés, a parancsok és egyéb műveletek automatizálásának. Ez egy sokrétű téma, és ebben az útmutatóban a Vim kulcsfeltérképezésével kapcsolatos összes főbb szempontot lefedtem. Az általános szintaxistól az alapvető billentyűleképezésig és egészen a fejlett Vimscript-függvények és külső parancsok leképezéséig. Ha többet szeretne megtudni a Vim billentyűk leképezéséről, használja a :help billentyű-leképezés parancs a Vimben. |