Vim

Fra TermvaktWiki
Gå til: navigasjon, søk

Vim er en teksteditor med masse funksjonalitet for å editere tekstfiler raskt og smertefritt. Den vil ikke føles spesielt brukervennlig i begynnelsen, men gir man den en sjanse, vil den gjøre livet litt enklere. Vim er brukervennlig, bare ikke nybegynnervennlig. Vim står for VI improved, og er en forbedret utgave av tekstredigeringsprogrammet vi. Denne siden beskriver også programmene ex og view.

Innhold

Oppstart

Vim kan startes ved å skrive kommandoen,

vim 

i kommandolinja.

Vim i insert modus


Vim kan også åpnes som eget vindu med hurtigknapper, menyer , etc. Dette vinduet kan lages ved å bruke kommandoen

gvim

G står da for GUI (Graphical User Interface). Gvim har også den effekten at den returnerer kontrollen til skallet, slik at man kan fortsette å bruke terminalvinduet(kommandolinja) uten å skrive gvim &. Ønskes ikke denne effekten, må man bruke opsjonen -f (gvim -f). Dette ønskes for eksempel ikke når andre programmer kjører gvim, og venter at den avslutter når du er ferdig med å redigere.

Avslutte

For å avslutte Vim, samt lagre alle filene kan man bruke tastesekvensen

<Esc>:wqa

Hvis du vil avslutte programmet uten å lagre endringer, kan man bruke tastesekvensen

<Esc>:q!

<Esc> kan alltid brukes for å returnere til kommandomodus (mer om det etterpå). Når man er i kommandomodus gir man da kommandoen :wqa, som betyr write quit all.

Vimtutor

Vimtutor er et program starter vim sin nybegynnerguide. Du kan starte det ved å skrive kommandoen

<Esc>:vimtutor

Dette er en guide som tar fra en drøy halvtime til noen timer å gå gjennom. Det er en fin øvelse for nye som vil lære seg å bruke vim, men den dekker ikke alt som er mulig. For flere guider, se under "Eksterne lenker" nederst på siden.

Ulike modi

Hva gjør Vim forskjellig fra alle andre tekstredigeringsprogram? Vim er bygget på ideer fra programmet ed, som fortsatt er standard tekstredigeringsprogram i UNIX. Ed startet opp i en kommandomodus. I kommandomodus kan man gjøre ting som å flytte markøren, lagre filen, åpne en fil. Når man vil skrive tekst inn gir man en egen kommando for å komme inn i en egen modus for dette. Når man vil lagre, må man gå tilbake til kommandomodus.

Command mode

Når man starter Vim er man i kommandomodus. De forskjellige knappene på tastaturet gjør da noe helt annet enn å putte inn tekst akkurat der markøren befinner seg. Hva de forskjellige knappene egentlig gjør, kan endres, for eksempel i filen .vimrc, men her skal jeg anta at man bruker standardoppsettet. Husk: Man kan alltid komme til kommandomodus ved å trykke <Esc>.

Insert mode

I dette moduset kan man legge inn tekst på vanlig måte. For å komme til Insert-mode fra kommandomodus, kan man gi en av følgende kommandoer:

  • i (insert) begynne å skrive inn foran markøren.
  • I (Insert) begynne å skrive inn på begynnelsen av linjen.
  • a (append) begynne å skrive etter markøren.
  • A (Append) legge til tekst på slutten av linjen.

Replace mode og Virtual Replace mode

For å komme til Replace mode, trykker man R i kommandomodus. Å skrive i Replace mode virker omtrent på samme måte som å bruke insert-knappen i for eksempel OpenOffice.org. Når du skriver inn tegn, overskrives tegnet under markøren. Vim har også en Virtual Replace mode. Forandringen ligger i at i Virtual Replace mode overskrives tegnene som vises på skjermen. Dette innebærer at å trykke på <Tab> overskriver flere tegn, mens det å overskrive ett tabulatortegn innebærer at det blir erstattet med mellomrom før disse mellomrom endres. Linjeskift i Virtual Replace mode vil også erstatte resten av linja med linjeskift, så vær varsom! For å komme til Virtual Replace mode, trykk gR i kommandomodus.

Visual mode

Visual mode det samme som å merke teksten i kommandomodus. Merker man teksten med musen, eller trykker v før man flytter markøren har samme effekt. Teksten er merket, og man er i Visual mode. I Visual mode vil de fleste kommandoer bare gjelde det merkede området. Vi kommer inn på kommandoer senere, men det er dette Visual mode gjør.

Visual block mode

I tillegg til Visual mode, finnes også en Visual Block mode. Den eneste forskjellen mellom disse to er at Visual Block mode vil markere tekst i et rektangulært område, noe som kan være praktisk dersom man lager tabeller eller lignende. Her kan man eksempelvis legge til ett eller flere tegn foran den markerte blokken (i alle linjer) med I eller etter markert blokk med A.

Kommandoer

Kolonkommandoer

I Vim kan alt gjøres med såkalte kolonkommandoer. Disse kjennetegnes ved at kommandoen begynner med kolon. Når man trykker kolon i kommandomodus, kan man skrive inn kommandoen nederst på skjermen. På de aller fleste kommandoer kan man først skrive inn en områdespesifikasjon (Range). Dette kan være et tall, som representerer linjenummeret eller to tall adskilt med komma, som representerer linjene mellom fra a til b. Istedenfor tall kan disse symbolene også brukes:

  • $: Siste linje i bufferet.
  • '<: Begynnelsen på området i Visual (Block) Mode.
  • '>: Slutten på området i Visual (Block) Mode.
  •  %: Et alias for 1,$, altså hele bufferet.
  • .: Linja markøren befinner seg på.
  • + n eller -n: n linjer før eller etter den markøren befinner seg på.

Man trenger dog ikke skrive inn en områdespesifikasjon. Hvis man ikke gjør det, gjelder kommandoen som regel linjen markøren befinner seg på. Skriver man inn et heltall før man taster kolon, settes så områdespesifikasjonen til å være de neste <heltall> linjene med linjen under markøren som den første (.,.+<heltall>).

Etter dette kommer spesifikasjonen av kommandoer. De fleste kommandoer har også en kortversjon. En del av kommandoene tar også argumenter. Disse argumentene oppgis på omtrent samme måte som i skallet. Det er to typiske argumenter: % representerer det åpne bufferet, mens # representerer det siste bufferet man var innom, og #buffernummer representerer buffernummer.

Noen vanlige kommandoer:

w eller write Skrive filen. Legger man et filnavn som argument, skriver den til denne i stedet.
sav eller saveas Skrive til filnavn gitt som argument, samt bruke denne ved fremtidige :w.
q eller quit Lukke vinduet, eller hvis det er siste vindu, avslutte.
qa Lukke alle vinduer og avslutte vim.
wqa Lagre åpne filer og avslutte vim.
e eller edit Åpne en ny fil gitt ved argument.
sp eller split Åpne et nytt vindu. Kan ta et filnavn eller buffer som argument. Istedenfor range, kan den ta et tall som spesifiserer høyden på vinduet.
vs eller vsplit Som split, bare vertikalt.
bn eller next Bytte til neste åpne fil.
bp eller bprevious Bytte til forrige åpne fil.
ls Vise åpne filer.
b eller buffer Bytte til bufferet gitt ved filnavn eller buffer som argument.
s eller substitute Det ser ut slik: s/regex/streng/. Erstatter regex med streng. Se :help :s
h eller help Åpner et nytt hjelpvindu. Slår opp på argumentet. Eksempel :h :w, :h CTRL-w.

Vim har også en del kommandoer bundet til enkelttaster. Der det gir mening kan man trykke inn et tall før tasten for å utføre kommandoen flere ganger. Enkelte tastekommandoer er også flere tegn lange, men de er da ofte satt sammen av flere kommandoer. Her kan du finne hurtigreferanse til flere kommandoer.

Flytte rundt

Nå kan man bruke piltastene og annet for å få til slikt, men da må man flytte hånden. Tastene for h, j, k og l ligger plassert rett under høyrehånden dersom man har et vanlig tastatur (qwerty). Disse flytter markøren til venstre, ned (huskeregel: J ligner en nedoverpil), opp og til høyre. For å bevege markøren lenger kan man bruke Ctrl-u eller Ctrl-d for å flytte en halvside opp eller ned.

Man kan også flytte rundt på linjen effektivt. Kommandoen 0 (null) flytter deg til første ikke-blanke tegn på linja,^ til første tegn på linja og $ flytter deg til slutten. Kommandoene w og b flytter markøren et ord frem eller tilbake. Kommandoen f ber deg taste inn ett tegn, for så å flytte markøren til neste forekomst av tegnet.

Det finnes flere avanserte former for å flytte seg rundt. Dette kan man lese om ved å angi kommandoen :help motion.txt.

Flytte tekst

Å flytte på tekst innebærer to operasjoner: Slette tekst (delete) og lime inn tekst (put). Å slette tekst gjøres med kommandoen d. Denne kommandoen trenger mer informasjon for faktisk å kunne gjøre noe. Angir man en av kommandoene for å flytte rundt, slettes teksten mellom der markøren var og der den havnet. Det hendige nå er at teksten ikke er slettet, men den er lagt inn i et register. Man kan spesifisere hvilket ved å skrive " etterfulgt av en bokstav umiddelbart før d. Kommandoen y virker på samme måte som d, bortsett fra at den ikke sletter teksten (y for yank). Kommandoen c lar deg også begynne å skrive inn i tillegg til at man sletter tekst (c for change).

For å lime inn igjen slettet tekst, brukes kommandoen p eller P avhengig av om teksten skal limes inn før eller etter markøren. Igjen kan man spesifisere register før kommandoen.

Det finnes også snarveikommandoer for å jobbe med hele linjer: dd, yy og cc vil slette, kopiere eller endre hele linja. Kommandoene D og C vil dessuten slette resten av linja. Dette er aliaser for d$ og c$. Ønsker du at Y skal virke som D og C, så angir man kommandoen :map Y y$, eller legger map Y y$ (intet kolon) på en egen linje i .vimrc.

For å lese mer om registre, angi :help registers.

Makroer (recording)

En av de meget praktiske tingene med Vim er makroene. Man kan lagre kommandoer i et register, for senere å kjøre dem. Registrene er de samme som ellers (Merk at gåseøynene man bruker ved c, d og y ikke er en del av registerets navn). Kommandoen q etterfulgt av en bokstav begynner å spille inn en makro (Eksempel: qa). Alt man nå gjør lagres i dette registeret. For å avslutte innspillingen trykker man q. Prøv for eksempel å trykke inn følgende sekvens: qaI:<Esc>A:<Esc>jq. For å gjøre nytte av makroen kan man nå gi kommandoen @ etterfulgt av en bokstav (For eksempel @a. Prøv også 10@a, som vil gjenta makroen ti ganger).

Relevante programmer

View

Programmene view og gview fungerer på samme måte som henholdsvis vim og gvim, men de åpner filene skrivebeskyttet. Dermed kan programmet brukes som en avansert form for vim.

Ex

Programmet ex starter vim i kolonkommandomodus. Alt man skriver inn tolkes som kolonkommandoer.

Verktøy

Man bør alltid være klar over at selv om Vim er fullt ut programmerbar, så kommer den ikke med alle verktøyene alle trenger. Skal man redigere en type fil, kan man også søke litt rundt på nettet. Skal man for eksempel redigere LaTeX, så finner man ved et enkelt nettsøk at http://vim-latex.sourceforge.net/ er et bra sted å starte.

Se også

Eksterne linker

Personlige verktøy
Navnerom
Varianter
Handlinger
Navigasjon
Kategorier
Programvare
Andre
Translate
Verktøy