I denne omfattende guiden vil jeg forklare hvordan du kartlegger nøklene i Vim for å automatisere operasjonene. Fra å lage et grunnleggende nøkkelkart til avansert nøkkelkartlegging, sammen med prosessene for å gjøre dem permanente og fjerne dem.
- Syntaks
- Vim spesielle argumenter
- Opprette et grunnleggende tastaturkart
- Liste over nøkkelkartene
- Gjøre nøkkelkart permanente
- Unngå rekursjon
- Opprette modusspesifikke tastaturkart
- Hvordan kartlegge musehendelser
- Hvordan kartlegge med Leader Key i Vim
- Hvordan kartlegge en Vimscript-funksjon
- Hvordan kartlegge eksterne kommandoer i Vim
- Slik fjerner du et tastatur i Vim
- Vim Key Mapping Cheat Sheet
- Konklusjon
Syntaks
For å kartlegge nøkkelen i Vim, brukes følgende syntaks:
I syntaksen ovenfor:
|
nmap, imap, vmap, xmap, cmap eller omap | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
*I syntaksen ovenfor er Vim spesielle argumenterVim Special Arguments er tagger som brukes for å gi ekstra funksjonalitet til tastaturet. Disse argumentene vises etter :map-kommandoen, og før {rhs} og {lhs}. For å gjøre et kartbufferspesifikt, bruk for eksempel spesialargumentet på følgende måte: :kart < buffer > < C-a > ggVG
Vim spesielle nøkkelnotasjoner er nevnt i bildet nedenfor.
For eksempel, hvis du vil bruke mellomromstasten i tastetilordning, vil Opprette et grunnleggende tastatur i VimLa oss forstå Vim-nøkkelkartlegging med et grunnleggende eksempel. Jeg vil kartlegge kommandoen velg alle linjer ( ggVG ) til ctrl+a nøkler. For å kartlegge ctrl+a-tastene, kjører jeg følgende kommando i Vim. :kart < C-a > ggVG Her, På samme måte, for å kartlegge linjenummer, veksle funksjonalitet med F1 nøkkelbruk: :kart < F1 > :sett nummer !Nå, når du trykker på F1-tasten, vil linjenummeret bli aktivert, og ved å trykke på det igjen deaktiveres det. Merk at denne metoden kun vil kartlegge nøklene i gjeldende buffer og vil bli fjernet når bufferen lukkes. Liste over nøkkelkarteneFor å liste opp alle nøkkeltilordningene for normal, visuell og ventende modus, bruk :map-kommandoen. :kartFor å liste nøkkelkartlegging av sett inn og kommandolinje moduser, bruk :map! Kommando. :kart !For å liste opp nøkkeltilordningen for en bestemt modus, skriv bare inn den første bokstaven i modus før kartnøkkelordet.
Dessuten, for å liste opp alle kartene inkludert plugin-kartene med stier, bruk : utførlig kart kommando. : utførlig kart For en bestemt nøkkel, bare nevne nøkkelen i kommandoen ( :utførlig kart Gjøre nøkkelkart permanenteTastekartene nevnt i avsnittet ovenfor vil kun kartlegge nøklene i gjeldende buffer. For å gjøre Vim-nøkkeltilordninger permanente, må kartene plasseres i vimrc-filen.
Merk at mens du plasserer tastaturet i vimrc fil, ikke legg til et kolon (:) før kart kommando. Etter å ha plassert tastaturet i vimrc fil, lagre og avslutt ved å bruke :wq-kommandoen eller bruke shift+zz-tastene. Tastekartene plassert i vimrc filen vil være global og kan brukes i alle Vim-øktene. Enkelte tastaturtilordninger kan imidlertid midlertidig deaktiveres hvis de påvirker arbeidet i den gjeldende økten, se avsnittet Hvordan fjerne tastaturet i Vim nedenfor. De vimrc er innstillingsfilen til Vim som inneholder forskjellige kommandoer og innstillinger. Det er tilstede i /usr/share/vim/ katalog på macOS og /etc/vim på Linux. Det er viktig å merke seg at vimrc filer i de nevnte katalogene er systemspesifikke filer. Du kan redigere disse filene også for nøkkelkartlegging, men jeg vil anbefale å lage en brukerspesifikk vimrc filen i hjemmekatalogen. Unngå rekursjonFør du går videre, er det viktig å lære om rekursjon i Vim-nøkkelkartlegging. Dens ulemper og hvordan man kan forhindre det. Det kan forstås ved bruk av et eksempel. :kart dd 3jddI eksemplet ovenfor har jeg kartlagt dd tastene for å flytte ned med 3 linjer og slette linjen under markøren. Nå, når jeg trykker på dd , vil den prøve å kjøre kartet 3jdd . Vim vil tolke dd kommandoen som et kart og utfør kartet gjentatte ganger, som vist i følgende bilde.
Merk : Rekursjon kan fryse Vim-editoren. For å frigjøre den, trykk ctrl+c nøkler. For å unngå rekursjon, bytt ut kart nøkkelord med noremap , hvor ' nore ' midler ikke-rekursiv . Jeg vil erstatte kart nøkkelord med noremap for å fikse rekursjonen i tastaturet ovenfor. :noremap dd 3jddJeg vil anbefale å bruke noremap i stedet for kart for å unngå å lage rekursiv kartlegging ved et uhell. Opprette modusspesifikke tastaturkartVim har gjort nøkkelkartlegging så allsidig at selv et tastekart for en bestemt modus kan lages ganske enkelt. For eksempel, hvis du har laget et tastatur for innsettingsmodus ved hjelp av en F1 nøkkel, så kan du kartlegge det samme F1 tast inn en annen modus for en helt ny operasjon. I følgende eksempel har jeg kartlagt F1 tasten for å slette 3 linjer i normal modus og rykk 3 linjer i sett inn modus. :nmap < F1 > 3dd:imap < F1 > < C-t > Det første kartet sletter tre linjer i normal modus når du trykker på F1-tasten, mens det andre kartet legger til ett innrykk i gjeldende linje når du er i innsettingsmodus med samme tast. La oss nå forstå kartlegging i hver modus. NormalmoduskartleggingFor å bruke et kart i normal modus, bruk kun nmap nøkkelord. For eksempel å kopiere alle linjene i en fil ved hjelp av ctrl+c tastene, vil jeg bruke følgende kommando. :nmap < C-c > ggVGySom diskutert tidligere, er det en beste praksis å bruke en ikke-rekursiv metode for å kartlegge en nøkkel, derfor vil jeg erstatte nmap med nnoremaart nøkkelord. :nnoremaart < C-c > ggVGyPlasser den uten kolon (:) i vimrc fil for å gjøre det til et permanent tastatur. jeg vil bruke noremap i stedet for kart i følgende eksempel. Sett inn moduskartleggingFor å kartlegge taster for innsettingsmodus, bruk bare Jeg i stedet for n . For eksempel, i innsettingsmodus, ctrl+p og ctrl+n tastene brukes til å autofullføre ordet basert på samsvar bakover og forover. For å kartlegge ctrl+p taster med tabulatortasten, vil jeg bruke følgende kommando. :inoremap < Tab > < C-s > Enda viktigere, hvis du vil kartlegge operatør venter modus kommandoer i innsettingsmodus , så må du sette inn Nå, når jeg trykker på ctrl+x tastene, vil den skrive ut 3ddi kommando i stedet for å utføre den.
For å fikse det, vil jeg sette inn Nå vil kommandoen utføre behold meg i innsettingsmodus. Mange mini bærbare datamaskiner mangler Esc tasten, som er viktig for å avslutte gjeldende modus. Så for å kartlegge Esc tasten for å gå ut av innsettingsmodusen, kan nøkkelkartlegging brukes. I det følgende eksempelet bruker jeg eks tastene for å gå ut til normal modus. :inoremap eks < Esc >Når du trykker raskt på eks tastene vil innsettingsmodusen gå ut, og dermed gå inn i normal modus. Visuell moduskartleggingDen visuelle modusen er en veldig viktig modus for å velge tekst i Vim-editoren. Bortsett fra det grunnleggende valget, har den visuelle modusen andre forskjellige moduser som visuell linje og visuell blokkmodus. I den visuelle modusen, tilde (~) brukes til å veksle mellom saken. For å bruke tilde (~), må du trykke på de to tastene (shift+~) . I følgende eksempel kartlegger jeg c-tasten inn visuell modus for å velge et ord under markøren og endre store og små bokstaver. :vnoremap c iw~Trykk nå på v for å gå inn i den visuelle modusen og trykk på c-tasten for å bytte ordet under markøren som vist i følgende GIF.
KommandolinjemoduskartleggingMange essensielle kommandoer fra Vim fungerer kun i kommandolinjemodus. For eksempel for å lagre filen :I kommandoen brukes på samme måte for å lagre og avslutte :wq kommandoen brukes. Alle faner og delte operasjoner gjøres også i kommandolinjemodus. For å opprette en ny fane, for eksempel : underordnet kommandoen brukes. Vel, for å raskt lage en fane, ctrl+t nøkler er nok. :cnoremaart < C-t > Emne < CR >Trykk nå kolon (:) for å gå inn i kommandolinjemodus og deretter ctrl+t for å åpne en ny fane; det er mye raskere enn å skrive hele Emne kommando og Komme tilbake nøkkel.
Opprette egendefinerte Vim-kommandoer Gå nå inn i kommandomodus og utfør : Mycmd kommando. Tilordning av operatørventende modusOperatørventende modus er en modus der Vim venter på bevegelseskommandoen etter at operatørtasten er trykket. De vanlige operatorene er y, d og c. For å slette den gjeldende linjen og de 3 følgende linjene, vil du for eksempel bruke d-operatoren med 3j bevegelse (d3j). Du kan ikke trykke på disse tastene samtidig for å oppnå ønsket operasjon. Modusen brukes vanligvis til å kartlegge bevegelsene. La oss kartlegge en bevegelse som vil velge gjeldende linje og 3 linjer etterfulgt av den. :onoremap < F2 > 3jNå, for å rykke den gjeldende linjen og 3 linjer etterfulgt av den, bruk theF2 nøkler, på samme måte d operatør kan også brukes. En annen viktig ting å huske på er hvis du legger til en telling til den ovennevnte kartlagte bevegelsen, la oss si 2 Hvordan kartlegge musehendelserSelv om Vim er en fullt tilpassbar tastatursentrisk tekstredigerer, gjør tilgjengeligheten av musefunksjonalitet den enda bedre. Bortsett fra vanlige tastaturtaster, kan alle musehendelsene også kartlegges i Vim. For eksempel, hvis du ønsker å kartlegge høyre dobbeltklikk og venstre dobbeltklikk for å hoppe merkene henholdsvis fremover og bakover, bruk følgende tilordning. :noremap < 2 - Høyre mus > ] `:noremap < 2 -Venstre mus > [ ` Andre musehendelser som kan kartlegges er gitt i følgende tabell.
Hvordan kartlegge med ledernøkkelen i VimVim-kartlegging er ufullstendig uten ledernøkkelen. Ledernøkkelen er standardnøkkelen som kan brukes til å kartlegge nøkler, selv om de er tilordnet til å utføre andre oppgaver. For eksempel, hvis du har kartlagt d tasten for å slette alle linjer, så kan vi tilordne den samme nøkkelen til å slette bare 5 linjer ved å bruke ledertasten. For de som ikke har noen kjennskap, med Vim-ledernøkkelen. Det er en tast som er prefikset med en annen tast eller et sett med nøkler for tilordning av kommandoer eller operasjoner. Vims standard ledernøkkel er en skråstrek (\), men den kan tilpasses. For eksempel dd kommandoen brukes til å slette linjen under markøren. Hvis du ønsker å kartlegge dd kommandoen for å slette alle linjene i filene, så kan du bruke ledertasten. :noremap < Leder > dd ggVGdNå, hver gang du trykker på \dd tasten, vil alle linjene i filen bli slettet. Du kan tilskrive Vim-ledernøkkelen som kontrollnøkkelen på Windows eller kommandotasten i macOS. Hvordan kartlegge en Vimscript-funksjonVim-editoren er ikke begrenset til kommandoene eller operasjonene. Det er et helt programmeringsspråk rundt Vim for å lage tilpasset funksjonalitet kalt Vimscript. Du kan enkelt lage et skript eller en funksjon og tilordne det til en nøkkel. La oss for eksempel lage en funksjon som vil aktivere innstillinger som linjenummer, musefunksjonalitet og tekstbredde. funksjon Mine innstillinger ( )sett Antall sett mus =a sett tekstbredde = 80 sluttfunksjon Plasser denne funksjonen i vimrc-filen. La oss kartlegge denne funksjonen med lederen og s-tastene. jeg vil bruke :noremap < Leder > s :ring MySettings ( ) < CR >Nå, hver gang du trykker på \s tastene, vil funksjonen bli kalt og all funksjonalitet inne i funksjonen vil utføres. Merk : Den første bokstaven i funksjonsnavnet skal alltid være stor når du oppretter en egendefinert funksjon i Vim. Hvordan kartlegge eksterne kommandoer i VimDe eksterne kommandoene kan også kartlegges i Vim. Eksterne kommandoer refererer til Linux- eller Unix-kommandoer. For eksempel hvis du ønsker å kartlegge det eksterne sortere kommando for å sortere alle linjene i gjeldende buffer til F1 tast, bruk følgende kommando. :noremap < F1 > : %! sortere < CR >På samme måte, hvis du skriver en skriptfil og gjør den kjørbar uten å forlate Vim-økten, kan du bruke chmod kommando internt. For å gjøre gjeldende fil kjørbar, kan du for eksempel utføre kommandoen :!chmod +x % i Vim. Hvis du ofte utfører denne oppgaven, er det bare å tilordne en nøkkel til den. :noremap < F1 > : ! chmod +x %I Vim kan enhver ekstern kommando brukes med et utropstegn (!). Slik fjerner du et tastatur i VimFor å fjerne keymaps i Vim må du først identifisere hvor det er definert. Som diskutert tidligere, kan nøkkelkart være bufferlokale og permanente. Hvis tastaturet er permanent og plassert i vimrc-filen, kan du fjerne nøklene ved å fjerne dem fra filen. Hvis kartleggingen gjøres i gjeldende buffer, kan de fjernes ved å bruke :avkart eller : avkart! kommandoer.
For eksempel for å fjerne
For å fjerne alle kartene i gjeldende buffer, bruk :mapclear kommando. :mapclearKommandoen ovenfor vil slette alle tastaturkart for normal, visuell, velg eller ventende modus. For å slette alle tastaturkart for innsettings- og kommandolinjemoduser, bruk: :mapclear ! Merk at standard Vim-kommandoer ikke kan være klare, men de kan deaktiveres ved å bruke :avkart kommando med dd vil ikke lenger være funksjonell i gjeldende buffer. Ved å bruke denne metoden kan et hvilket som helst tastatur deaktiveres for gjeldende økt. Vim Key Mapping Cheat SheetFølgende bilde gir en liste over alle kommandoene og deres spesifikke moduser for referanse.
KonklusjonVim-tastmapping er en hendig måte å automatisere oppgavene dine, ofte brukte tastebinding, kommandoer og andre operasjoner. Det er et mangfoldig emne, og i denne veiledningen dekket jeg alle de viktigste aspektene som er relatert til nøkkelkartlegging i Vim. Fra generell syntaks til å lage et grunnleggende tastatur og hele veien til kartlegging av avanserte Vimscript-funksjoner og eksterne kommandoer. For å lære mer om Vim-tastkartlegging, bruk : hjelp til å kartlegge nøkkelen kommando i Vim. |