Hvordan man ikke længere er bange for Vim

En kuration af de mest populære kommandoer, og hvordan man bruger dem

Kilde
Oversættelse tilgængelig på polsk

Hvis du nogensinde har brugt Vim, ved du, hvor svært det kan være at nå samme hastighed som i en "normal" GUI-editor. Men når du først gør det, er udbetalingen eksponentiel - du bliver meget mere effektiv til at skrive kode. Dette er naturligvis ikke den vigtigste grund til dette indlæg.

Størstedelen af ​​tiden går - eller bør gå - til at designe en løsning på dit problem, ikke egentlig at kode det; så optimering af hvor hurtigt-du-kode bit virker som den sidste ting at fokusere på. Det er ikke et gearingspunkt.

Dette indlæg tog form på grund af en anden grund: manglen på GUI'er på SSH’ed-maskiner. Hvad vil du gøre nu? Enhver maskine, hvor du har adgang til terminalen, og du vil redigere en fil - Du har 2 muligheder:

  1. Giv op, prøv at lukke Vim
  2. Master Vim

Bare det at lave en kopi af vimtutor hjælper ikke nogen. Så her bruger jeg en anden tilgang: Jeg samlede de bedste bit af vim, som jeg bruger i hverdagen som softwareudvikler, sammen med mnemonics for at huske tingene ved. Dette indeholder næsten alt hvad du har brug for til regelmæssig redigering og skrivning.

Det grundlæggende

Hold mig, dette handler ikke om kommandoerne, men ideologien bag dem!

tilstande

Vim har 2 tilstande:

  • Normal (kommandotilstand)
  • Indsæt (redigeringstilstand)

Når du åbner Vim, starter du i normal tilstand. For at komme tilbage til normal tilstand når som helst skal du trykke på ESC-tasten. Normal tilstand er, hvor du kan udstede kommandoer: listen over kommandoer er uendelig!

Der er mange måder at gå ind i insert mode. Den mest intuitive er at bruge i-kommandoen. i til indsætning. I normal tilstand skal du trykke på i, så åbner du indsætstilstand. Nu vises alt, hvad du skriver, i redaktøren. En af de største forhindringer, sorteret.

Den mentale model - for at forstå ideen: Da der ikke er nogen GUI, er der ikke noget begreb med museklik. Der er ingen menu at vælge indstillinger fra, der er ingen højreklik. Derfor har du brug for en måde at få alt dette på tastaturet - din eneste inputkilde.

At have to tilstande opnår dette! Du kan tænke på tilstanden Normal (Kommando) som menulinjen og musen på steroider, mens Indsættilstand er som den normale tilstand i GUI-redaktører (hvor det, du skriver, vises på skærmen).

Ord

For Vim betyder ord næsten det samme som det, de betyder for os - Et sæt tegn adskilt med hvidafstand eller specialtegn. Kommandoen er w.

Kommando Anatomi

Kommandoer i Vim følger et sæt mønster. At vide dette ville hjælpe med at sætte hver kommando i en bestemt spand kommandoer og således opbygge en bedre mental model for det samme.

Kommandoer ser sådan ud:

[handling] [bevægelse]

Handlingen er, hvad du vil gøre,

Antallet er, hvor mange gange du vil udføre denne handling,

Bevægelsen er rækkevidden for denne handling.

Bevægelsen er omfanget. Et eksempel ville gøre dette klarere. Lad os sige, vi ønsker at slette de næste 3 ord med start fra markøren. Her slettes handlingen, tallet er 3 og bevægelsen er et ord. Kommandoen til sletning er d.

Derfor får vi den endelige kommando som: d3w - slet de næste 3 ord.

At udelade nummeret er som standard én gang.

Bevægelser kan bruges uden en handling, der som standard er navigation. Derfor skriver man w i kommandotilstand markøren frem et ord.

Vi er nu veludstyrede til at begynde at lære om selve kommandoerne (og en række bevægelser til brug sammen med dem)

Nyttige kommandoer

Sådan lukkes Vim

Første ting først, vi ønsker ikke at sidde fast i Vim land uden at have en exit plan. Ha altid en exit-strategi.

: q for at afslutte

: Q! at tvinge op

: wq for at gemme og afslutte

Kommandohandlinger

d: slet

i: indsæt

p: sæt / indsæt

y: yank / kopi

x: klip

u: fortryd

di: slet inde *, yi: yank indeni *

v: visuel / markering

/ : Søg

%: parenteser matchende, udviklere glæder sig!

: s: erstatning! Med andre ord find-erstatt på steroider

Da handlinger på hele linjen er meget hyppige, oprettede vim-udviklerne en ny kortfattet form for dem - og udeladte behovet for at tilføje en bevægelse. Gentag handlingen, der skal anvendes på hele linjen. For eksempel:

Sådan slettes den aktuelle linje: dd

Sådan kopieres den aktuelle linje: ååå

Pæn, er det ikke?

Kommandobevægelser

Bevægelser følger handlinger, som vi har set, og de tilgængelige bevægelser ændres med handlingen. Nogle bevægelser er dog temmelig ensartede.

w: begyndelsen af ​​næste ord (vi har set dette før!)

e: afslutning af det aktuelle ord

b: begyndelsen af ​​forrige ord

Piletaster / : respektive bevægelser. h, j, k, l er en erstatning for piletasterne, og kilden til hastighed i Vim: Du behøver ikke at flytte dine hænder væk fra den skrivende del af tastaturet.

$: slutningen af ​​linjen

0: begyndelsen af ​​linjen

G: slutningen af ​​filen

nG: hoppe til linjenummer n

): hoppe frem en sætning

}: spring et afsnit fremad

Dette hjælper med at visualisere bedre:

           ge b w e
           <- <- ---> --->
    Dette er en linje med specielle / separerede / ord (og nogle flere). ~
       <----- <----- --------------------> ----->
         gE B W E

Bevæbnet med disse handlinger og bevægelser kan vi oprette de fleste af de grundlæggende kommandoer i Vim. Her er en liste med 8 funktioner hver dag. Find ud af kommandoen for at få dem til at ske!

  1. Slet de næste 3 linjer (inklusive den aktuelle linje)
  2. Kopier det aktuelle ord - markøren er ved begyndelsen af ​​ordet
  3. Kopier det aktuelle ord - det har specialtegn - markøren er i midten af ​​ordet
  4. Naviger ned 10 linjer
  5. Slet alt inden i de krøllede konsoller
  6. Gå op 2 afsnit
  7. Indsæt den tidligere valgte tekst 5 gange.
  8. Rediger hvor markøren er til stede: "Jeg kan Vim nu!"

...

Vente på det…

...

Her er løsningen:

  1. d3j
  2. yw
  3. yiW: Yank indeni er at yank indeni, og W er inden for hvad man skal yank (nuværende ord). Dette er utroligt nyttigt, du kan bruge alle mulige kombinationer med indersiden!
  4. 10j
  5. di}: ligesom nr. 3.
  6. 2 {: dette var lidt mere intuitivt. {er at gå op en para,} er at gå ned en para
  7. 5p: kan du huske de valgfri tal fra kommando-anatomien? De kan bruges næsten overalt
  8. Jeg kan Vim nu! : i skal gå i insert mode, så kan du arbejde som i en “normal” editor

Okay, du klarede det! Tillykke, dette er Vim nok til at udforske på egen hånd, eventyrer. Selvstudiet er forbi. Held og lykke.

Hvis nogen spørger dig om Vim, kan du gøre det bedre end at bruge dette meme. Forklar det for dem, eller peg dem her;)

* Bemærk: Dette er min model af Vim. Det er ikke nøjagtigt, hvordan tingene fungerer internt. Hvis du ser på dokumentationen (: hjælp brugervejledning), vil du se, at d er kommandoen, og bevægelsen er iw eller "inden i ord". Der er en afvigelse.
Hvorfor? - fordi jeg føler, at dette hjælper med at forklare bedre.

Bonus

Her er nogle ekstra kommandoer, der er nyttige:

Delt skærm

: vsplit

Opretter en lodret opdeling. Gør det muligt at kopiere-indsætte fra en skærm til en anden.

Sådan cykler du mellem skærmopdeling:

Alternativt kan du bruge piletasterne / hjkl som sådan:

h for at gå til forrige skærm.

Du kan lukke vinduer, som du normalt gør (: q), eller -

: kun - for at lukke alle andre vinduer

Flere faner

: tabnew åbner en ny fil i en ny fane på Vim

: tabn for at gå til næste fane (eller: gt)

: fane for at gå til forrige fane (eller: gT)

Igen kan du kopiere-indsætte fra en fane til en anden.

Du kan også kortlægge denne kombination til en nøgle efter dit valg!

Jeg prøvede , men det er allerede reserveret. Hvilken bummer. I stedet har vi:

kort  : fane 
kort  : tabn 

Hvilket betyder efterfulgt af venstre eller højre piletast giver dig mulighed for at skifte mellem faner.

Hvordan præcist kom jeg med denne kortlægning? Tjek denne tutorial.

Andre historier i denne serie:

  • Hvordan man ikke længere er bange for Python
  • Hvordan man ikke længere er bange for GIT

Nød du dette? Gå ikke glip af et indlæg igen - abonner på min mailingliste!