Vi
- Vim
- .vimrc
- Starte Vim
- Avslutte Vim
- Forskjell Vim andre teksteditorer
- Kommandomodus
- Insert mode
- Replace mode
- Visual mode
- Visual Block mode
- Kolonkommandoer
- Tastekommandoer
- Flytte rundt
- Flytte tekst
- Makroer
- Ex
- View
Tekstredigeringsprogrammet Vim med venner
Denne siden beskriver programmene vi, vim, ex og view. Vi er en teksteditor med masse funksjonalitet for å editere teksfiler 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 – vi er brukervennlig, bare ikke nybegynnervennlig. Det pågår også en religionskrig mellom vi-brukere og Emacs-brukere.

Vim
Vim står for VI improved, og er et tekstredigeringsprogram som kan alt
vi kan og mer. Vi står for visual, forresten.
Filen .vimrc
Vim leser filen ~/.vimrc når den starter. Dersom denne filen ikke finnes, vil Vim anta
at du foretrekker Vi (uten Improved), og vil da virke på akkurat samme måte som
Vi. Det er ingen fordel med det, så det første som bør gjøres er å utføre kommandoen
touch .vimrc i et x-termvindu når man står i hjemmekatalogen. Utfør kommandoen
cd for å komme til hjemmekatalogen først.
I filen .vimrc kan man ellers putte kommandoer som vim skal lese når den starter opp.
Slik kan man for eksempel endre tastebindinger, farger og masse annet. Standardverdiene
fungerer godt nok for denne introduksjonen.
Starte Vim.
Vim kan startes ved å utføre kommandoen vim i x-term. Vim kan også åpnes som eget
vindu med hurtigknapper, menyer og så videre. 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 x-termen 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.
Av en eller annen grunn er det å avslutte et program noe av det første brukeren prøver.
For å avslutte Vim, samt lagre alle filene kan alltids tastesekvensen <Esc>:wqa brukes.
<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.
Hva gjør Vim forskjellig fra alle andre tekstredigeringsprogram?
Vim er bygget på ideer fra programmet ed, som fortsatt er standard tekstredigeringsprogram
på 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.
Kommando-modus
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 .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, omtrent på samme måte som man vil vente andre steder. 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
et tabulatortegn innebærer at den 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
Gamle Vi har ingen visual mode, men noen ganger blir kommandomodus referert til
som visual mode. I Vim er visual mode det samme som å merke teksten i
kommandomodus. Merker man teksten med musen, eller trykker v før man
flytter markøren har ingen betydning. Teksten er merket, og man er i Visual
mode. I Visual mode vil de fleste kommandoer bare gjelde det merkede området.
Jeg 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.
Mer om 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 for1,$, altså hele bufferet..: Linja markøren befinner seg på.+neller-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 buffer
nummer buffernummer.
Noen vanlige kommandoer:
wellerwrite- Skrive filen. Legger man et filnavn som argument, skriver den til denne i stedet.
savellersaveas- Skrive til filnavn gitt som argument, samt bruke denne ved fremtidige
:w. qellerquit- Lukke vinduet, eller hvis det er siste vindu, avslutte.
qa- Lukke alle vinduer og avslutte vim.
wqa- Lagre åpne filer og avslutte vim.
eelleredit- Åpne en ny fil gitt ved argument.
spellersplit- Å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.
vsellervsplit- Som split, bare vertikalt.
bnellerbnext- Bytte til neste åpne fil.
bpellerbprevious- Bytte til forrige åpne fil.
ls- Vise åpne filer.
bellerbuffer- Bytte til bufferet gitt ved filnavn eller buffer som argument.
sellersubstitute- Det ser ut slik: s/regex/streng/. Erstatter regex med streng. Se
:help :s hellerhelp- Åpner et nytt hjelpvindu. Slår opp på argumentet. Eksempel
:h :w,:h CTRL-w.
Tastekommandoer
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.
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 begynnelsen av linjen, og
$ flytter deg til slutten. Kommandoene w og b flytter markøren et ord frem eller tilbake. Kommandoen f ber deg taste inn
et 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 før 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).
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.
Veien videre
Gå til siden http://www.vim.org/. På denne siden finnes det mye ressurser. Nettsiden http://tnerual.eriogerg.free.fr/vim.html har en tabell over vanlige kommandoer.
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.