Vim er noe jeg har dansa forsiktig rundt over en lengre periode nÄ. PÄ samme mÄte som nÄr du ser en elg i skogen. FÞrst sÄ skvetter du. Samtidig er du fascinert over hva du ser, sÄ du vil gjerne se litt til. SÄ du prÞver Ä gÄ rolig forbi for Ä vise at du ikke er ute etter brÄk, for du er redd for hva som skjer dersom du blir vÊrende for lenge. Og nÄr du har fÄtt litt avstand sÄ tar du beina fatt og lÞper avgÄrde.

SÄnn har forholdet mitt vÊrt til Vim. Fram til nÄ.

Enkel sammenligning

For Ă„ forklare hva Vim er sĂ„ kan vi sammenligne det med noe du kanskje kjenner til fra fĂžr av. For noen vil det nok vĂŠre grunnleggende, men for andre vil det rett og slett vĂŠre mind-blowing đŸ€Ż

Om du skal markere all tekst i et notat, eller i en tekstboks, har du kanskje gjort det ved Ä holde inne cmd-knappen og trykke pÄ a (for all). Hva med Ä flytte deg rundt i en setning ved Ä holde inne alt/option-knappen mens du bruker piltastene? Har du prÞvd det?

Det som skjer da er at du hopper ett og ett ord bortover i en setning. Om du holder inne command-knappen derimot og trykker pÄ hÞyrepila hopper du til slutten av den linja du er pÄ (venstrepila sender deg altsÄ til starten). Om du holder inne shift samtidig sÄ markerer du ogsÄ teksten.

Det samme gjelder ogsÄ med backspace-knappen din. Om du holder inne alt og trykker pÄ backspace sletter du ordet som er til venstre for musepekeren. Om du holder inne command i stedet sletter du alle ordene pÄ den linja du er pÄ (til venstre for musepekeren riktignok).

De hurtigtastene, eller snarveiene, bygger altsÄ pÄ hverandre. Kun ved Ä lÊre at alt/option og command endrer hvor mye av teksten du redigerer sÄ kan du bruke det i to ulike situasjoner.

NÄr du fÞrst fÄr det inn i fingra sÄ gÄr det ganske kjapt Ä bevege seg rundt i en tekst. Det som er kjipt er at det egentlig stopper der. Da har du nÄdd toppen av effektivitet tydeligvis. Eller.. Har du det?

Hva vi kan lĂŠre av et 50 Ă„r gammelt dataprogram

Det er nemlig her Vim kommer inn i bildet. Vim stĂ„r for “Vi IMproved”, siden det er en videreutvikla versjon av et program fra 1976, som het “Vi”. AltsĂ„ 48 Ă„r siden đŸ€Ż Da sĂ„ dataen sĂ„nn her ut:

Lear Siegler's ADM-3A computer terminal

Det fantes altsÄ ikke noen musepeker pÄ den tida. Og det eneste du hadde var tekst pÄ en skjerm og tastaturet foran deg. Det viser seg at Vim gir deg betraktelig flere muligheter for Ä redigere tekst i en fei, sammenligna med det vi gjÞr i dag. Ikke bare det, men ogsÄ mer presist. Du kan nemlig:

  • Bevege deg x antall linjer opp eller ned
  • Hoppe over x antall ord i en linje for Ă„ havne nĂžyaktig dit du vil vĂŠre
  • Legge igjen et “merke i margen” som gjĂžr at du kan hoppe til det spesifikke punktet uansett hvor i teksten du befinner deg seinere. Eller hoppe mellom ulike merker i margen.
  • Og hvis jeg forstĂ„r riktig sĂ„ kan du ogsĂ„ kjapt fikse opp i gjentagende skrivefeil. Om du plutselig oppdager at ordet “i fjor” ikke har en D pĂ„ slutten, men du veit at du har skrevet det 5-6 ganger i teksten din kan du kjapt finne alle steder du har gjort samme feilen, og rette det opp Ă©n gang, i stedet for Ă„ gjĂžre samme endring 5-6 ganger
    • Om jeg forstĂ„r riktig kan du til og med endre det pĂ„ tvers av flere dokumenter

Er det her nþdvendig? Overhodet ikke. Er det gþy? Å jada!

En artikkel i flere deler

Siden det er litt omfattende Ä sette seg inn i deler jeg det opp i flere deler. I fÞrste omgang tenker jeg det er nyttig med en introduksjon. Samtidig har jeg begynt pÄ et slags oppslagsverk, hvor jeg dokumenterer det jeg lÊrer fortlÞpende.

Oppslagsverket kan du kikke pÄ allerede, men det er litt hulter til bulter for Þyeblikket, siden jeg lÊrer mer og mer, og strukturerer det underveis.

Sist, men ikke minst vil jeg se nÊrmere pÄ hvordan jeg kan tilrettelegge for Vim i min arbeidsflyt. Enten om det er for Ä skrive artikler i Obsidian, eller Ä kode pÄ mitt enkle vis til simenskriver.no.

Hva er det?

FÞrst er det viktig Ä skille mellom Vim, som er et program brukt til koding, og Vim motions, som er hurtigtastene du bruker, som er tilgjengelig mange andre steder og ikke bare i vim-programmet. Jeg kommer til Ä snakke om Vim motions, men det virker som folk flest bare omtaler det som kun Vim, selv om man ikke egentlig snakker om programmet, sÄ da gjÞr jeg det og.

Vim motions

Vim motions er mÄten du navigerer og redigerer tekst pÄ. Ikke noe mer hokus-pokus. Det kan sÄklart vÊre et kodesprÄk, eller det kan vÊre en artikkel som det her.

Det som er fascinerende er at det er sĂ„pass effektivt at det brukes av mange den dag i dag. Og at den tilnĂŠrminga, eller de “hurtigtastene”, om du vil, har blitt sĂ„ populĂŠre at det er funksjonalitet for det i mange ulike kodeprogrammer gjennom plugins og mer avanserte innstillinger.

Eksempel

I stedet for Ä holde inne alt/option-knappen og bruke hÞyre piltast for Ä bevege deg til slutten av et ord, ville du med Vim bare trykt pÄ e. Om du skulle bevegd til starten av et ord ville du trykt pÄ w.

NĂ„ tenker du kanskje “Men.. vil det ikke da vĂŠre en e eller w i setningen min?”. Å neida du! For Vim er bygd opp av ulike moduser.

Modusene i Vim

I hovedsak kan vi fokusere pÄ tre moduser, selv om det finnes flere tydeligvis. De tre modusene er:

  1. Insert mode
  2. Normal mode
  3. Visual mode

Insert mode

“Insert mode” er der du faktisk skriver teksten din. For Ă„ aktivere Insert mode trykker du pĂ„ i (for “insert”). Da vil ting oppfĂžre seg nĂžyaktig som du er vant til.

NĂ„r du derimot er ferdig med Ă„ skrive og skal bevege deg rundt i teksten, kanskje flytte deg lenger opp i avsnittet for Ă„ slette noen unĂždvendig fyllord, trykker du pĂ„ escape-knappen for Ă„ aktivere “Normal mode”.

Normal mode

“Normal mode” er der man bruker mest tid. I stor grad er det her du redigerer teksten din. Det som skiller Normal mode fra alt annet du er vant til riktignok er at om du trykker pĂ„ bokstaven w f. eks sĂ„ dukker det ikke opp en bokstav, sĂ„nn som jeg nevnte tidligere, men du flyttes til starten av neste ord.

Bokstavene blir altsÄ tolka som hurtigtaster. De fleste av vÄrs er nok vant til at hurtigtaster involverer en kombinasjon av command-knappen + en eller annen bokstav, eller om du skal ta et skjermbilde sÄ mÄ du holde inne command, alt/option, og tallet 3. I Normal mode i Vim derimot er alt en hurtigtast. De er bare lettere tilgjengelig. NÄr du kan dem riktignok.

Visual mode

Visual mode har jeg ikke lÊrt meg sÄ mye om ennÄ, men jeg har lest meg opp til at det er der du markerer, kopierer, og limer inn tekst. Den delen av tekstredigering hvor folk flest ville brukt datamusa til Ä markere et utdrag av en setning. For Ä aktivere visual mode trykker du pÄ v.

Én fordel med Ă„ jobbe modusbasert

Siden Vim er basert pĂ„ ulike moduser tvinger det deg til Ă„ skille skriving fra redigering. Det sies at Hemingway har sagt “Write drunk. Edit sober”. PĂ„ sett og vis er det akkurat det Vim tvinger deg til Ă„ gjĂžre, ved Ă„ skifte mellom skrive- og redigeringsmodus (insert og normal mode).

Hvorfor vil du kaste deg ut i det der?

Jeg er en stor tilhenger av Ă„ lĂŠre meg noe Ă©n gang som jeg vil dra nytte av over lang, lang tid. Det er en av grunnene til at jeg lĂŠrte meg Colemak – en alternativ layout for tastaturer, hvor de bokstavene du bruker mest faktisk er lettest tilgjengelig, noe som ikke er tilfellet med QWERTY-layouten som vi alle har vĂŠrt vant med siden skrivemaskinene pĂ„ slutten av 1800-tallet.

Det jeg syns er fascinerende med Vim er hvordan det gjÞr det mulig Ä forflytte seg rundt i et tekstdokument pÄ en helt annen mÄte enn jeg er vant til. Du trenger ikke bruke musa pÄ samme mÄte, som kan redusere anstrengelsen pÄ underarmen din. Samtidig som du begrenser ubehagelige bevegelser til et minimum.

Om jeg begynner Ä bruke Vim sÄ kommer jeg ikke til Ä skrive artikler fortere. Det tror jeg ikke. For det hjelper meg ikke med Ä tenke fortere. Det tar den tida det tar.

Redigeringa av det jeg har skrevet derimot, tida jeg bruker pÄ navigere meg rundt i et dokument, eller finne fram til ett ord for sÄ Ä erstatte det med noe annet, ogsÄ gjenta det flere steder, hvis det er en fÞlgefeil. Det er noe som kan gÄ betraktelig fortere. Og viktigst av alt sÄ virker det gÞy rett og slett.

Å gjĂžre noe bare fordi det er gĂžy er noe jeg syns er undervurdert. Å lĂŠre meg Vim er en utfordring hvor jeg mĂ„ gĂ„ opp noen nye nervebaner i hjernen min, og det syns jeg virker spennende. SĂ„ nĂ„ kjĂžrer vi i gang.

Anbefalinger

Det her hÞres for godt ut til Ä vÊre sant, men du kan faktisk spille et old scool Zelda-lignende spill for Ä lÊre Vim. Doron Linder lagde spillet Vim Adventures for at du skal kunne lÊre det grunnleggende, steg for steg, i et rolig og pedagogisk tempo, hvor du mÄ repetere flere ganger underveis.

You play a blinking cursor appearing one day in a semi text based world of Textland inhabited by little people but ruled by bugs.

..You start the game with only the ability to move up, down, left, and right. As you progress, you talk to people and collect items and keyboard buttons. Each keyboard button adds to the set of commands you can give the cursor, until you master VIM.

Etter nivÄ 3 mÄ du riktignok betale en lisens pÄ 370 kr, noe det absolutt er verdt, hvis du faktisk vil gi det et forsÞk.

Eller sÄ kan du hoppe inn i terminalen og skrive vimtutor og trykke pÄ enter, sÄ dukker det magisk opp en introduksjon som du kan leike deg med. Der har jeg lÊrt masse.