Vim – Basics

Skrevet af: Patrick Kerwood

Der findes to slags Linux brugere.. Dem der bruger Vim og dem der ikke har opdaget mulighederne i Vim.

Jeg har i mange år brugt Nano som min foretrukne CLI text editor. Jeg kendte godt til eksistensen af Vim, men som mange andre, kun fejlagtigt og lettere irriteret over ikke at kunne huske hvordan man kommer ud af det igen.

For noget tid siden besluttede jeg mig for at tage tyren ved hornene og lære Vim.
Vim er en fork af Vi, som blev udviklet i 1976, men med mange flere funktioner. Derfor navnet “Vi improved”.

Vim har vanvittig mange funktioner og de tager tid at lære og huske. Så hvis du kun bruger en text editor til at ændre nogle små ting, engang imellem, er Vim måske ikke noget for dig.

Modes

Vim har flere modes, dem jeg kommer ind på er normal (command), insert, visual og command-line mode.

Normal mode er det mode du kommer ind i, når du åbner en fil med Vim. I normal mode kan du ikke skrive noget til filen, næsten alle taster er genveje til forskellige funktioner.

Insert mode er hvor du skriver. For at komme i insert mode trykker du “i” (i normal mode). Nede i hjørnet kan du se “– – INSERT – –” som viser du er i insert mode.

Visual mode bruges til at markere ord, liner eller blocks. Visual mode tilgås fra normal mode og har flere under modes. Plain visual (v), line visual (shift+v) og block visual (ctrl+v). Plain visual markerer en karakter ad gangen, line visual markerer en linje ad gangen og block visual markerer en hel block ad gangen. Når noget er markeret kan du slette, klippe, kopier, skrive på flere linjer på samme tid og bruge diverse funktioner.

Command-line mode bruges til at sætte indstillinger, filtre, søgekriterier og kommandoer generelt.

Funktioner

Nedenstående er funktioner der flytter markøren. Disse skal selvfølgelig bruges i Normal mode. Pil-tasterne kan også bruges.
Den sidste er list tricky på et dansk tastatur, da man skal trykke shift+`, space, punktum.

  • h – Flyt markøren én plads til venstre.
  • j – Flyt markøren én plads ned.
  • k – Flyt markøren én plads op.
  • l – Flyt markøren én plads højre.
  • 0 – Flyt markøren til starten af linjen.
  • $ – Flyt markøren til slutningen af linjen.
  • w – Flyt markøren fremad ét ord ad gangen.
  • b – Flyt markøren bagud ét ord ad gangen.
  • G – Flyt markøren til slutningen af filen.
  • gg – Flyt markøren til starten af filen.
  • `. – Flyt markøren til sidste ændring (back-tic + punktum).

Overstående funktioner kan kombineres med tal. Hvis du fx. vil flytte markøren 8 linjer op, trykker du “8k“.
Næsten alle funktioner kan kombineres med andre funktioner. Læg mærke til det når du kommer længere ned i dette indlæg.

Redigering

For at slette den karakter markøren står på, kan du trykke “x”, samme princip som “Delete” tasten. For at bruge delete funktionen trykker du “d” og kombinere det sammen med en af de ovenstående funktioner.

  • d – Starter delete funktionen.
  • dw – Sletter et ord.
  • d0 – Sletter alt til begyndelsen af linjen.
  • d$ – Sletter alt til slutningen af linjen.
  • dgg – Sletter alt til begyndelsen af filen.
  • dG – Sletter alt til slutningen af filen.
  • di” – Slet alt imellem quotes (“).
  • dd – Slet hele linjen.
  • u – Fortryd sidste ændrig (undo).
  • Ctrl+r – Fortryd sidste undo (redo).

Copy/Paste

Alt tekst du sletter med overstående funktioner, uanset om det er en karakter, linje, linjer eller blok, kan du indsætte det igen med “p” (efter markøren) eller “P” (før markøren).

For at markerer en eller flere karakter, kan du trykke “v“, “shift+v” for at markere hele linjer og “ctrl+v” for at markere blokke ad gangen. Du kan efterfølgende trykke “d” for at slette det markerede og “p” for at indsætte det igen. Hvis det markerede ikke skal klippes/slettes, kan du trykke “y” for yank, som kopier det i stedet. “y” kan også kombineres på samme måde som delete funktionen.

  • v – Marker én eller flere karaktere med pil tasterne.
  • shift+v – Marker én eller flere linjer.
  • ctrl+v – Marker kolonner/blokke.
  • p – Indsæt efter markøren.
  • P – Indsæt før markøren.
  • y – YANK!.. Kopier markeret tekst.

Søg og erstat

For at søge efter ord trykker du “/“, skriver dit søgeord og trykke enter. Vim søger nu fremad efter det søgte ord. For at finde det næste match, tryk “n” og for at finde det forrige match, tryk “N“.
Hvis du vil søge bagud i filen, brug “?” i stedet for “/“.
Du kan selvfølgelig også lave en “søg og erstat”, som fx. “:%s/søgeord/erstatnings-ord/g“. Alle “søgeord” i dokumentet bliver erstattet af “erstatnings-ord“. Du kan tilføje et “c” efter “g” for at bekræfte hver gang den vil erstatte et ord.

  • /tekst – Søg efter en streng. “n” for næste match, “N” for forrige.
  • :%s/søgeord/erstatnings-ord/g – Søg og erstat alle match i dokumentet.
  • :%s/søgeord/erstatnings-ord/gc – Søg og erstat men bekræft ved hver match.

Gem og luk

  • :w – Gem (Write).
  • :q – Luk (Quit)
  • :wq – Gem og luk.
  • :q! – Luk uden at gemme, selvom der er lavet ændringer i filen (Force).
  • ZZ – Genvej for :wq

Tips og tricks

Ud over ovenstående kan Vim meget meget mere. Her er kommer et par fifs som jeg selv bruger.

Gem skrivebeskyttet fil

Vi kender det alle. Man har åbnet og redigeret i en fil og glemt at åbne den med sudo?! I Vim er der en kommando for at kunne gemme alligevel, uden at skulle lukke filen.
:w !sudo tee %

Efterfølgende vil du blive promptet med nedestående.
W12: Warning: File "/etc/apache2/apache2.conf" has changed and the buffer was changed in Vim as well
See ":help W12" for more info.
[O]K, (L)oad File:

Skriv dit password og tryk “ENTER” to gange. Filen er nu gemt, men er stadig inde i den editoren (stadig skrivebeskyttet). Quit med “:q!“.

Color syntax

Der er flere måder at enable color syntax på. I vim kan du skrive “:syntax on” men gælder kun for den Vim session. For at enable det permanent for din bruger, opret “~/.vimrc” og tilføj linjen “syntax on“. Alternativt kan du tilføje den samme linje i “/etc/vim/vimrc” for at enable det for alle brugere, inkl root.

Syntax’en bliver sat ud fra filens extension, men hvis syntax’en er en anden end forventet, kan man sætte den manuelt med “set syntax=php” eller hvad man nu bruger.

Color Scheme

Vim har også mulighed for at ændre color scheme. Du kan finde masser på google.
Min favorit er Monokai som minder en smule om Sublime Text’s standard color scheme.

Opret mappen “~/.vim/colors” og smid din color-scheme-navn.vim ind i mappen og tilføj den til din ~/.vimrc fil, som nedenstående.
colorscheme monokai

Her er en list med andre schemes.

Solarized

Vividchalk

Railscasts

Jellbeans

GRB256

Dette indlæg viser kun en brøkdel af hvad Vim er i stand til. Bagved gemmer der sig et hav a funktioner.


30 dec 2015   | Alle · Programmer

Leave a Reply