Editoren vim


Hva du finner på denne siden!

Editoren vim er et svært effektivt hjelpemiddel til all slags tekst-editering, det være seg programmering i et vært språk, eller produksjon av tekst. Selv om det er et bra hjelpesystem inkludert i denne editoren, vil jeg samle noen av de mest nyttige tingene på denne siden. Du finner mye mer om vim, med nyttige script og slikt på vim.sourceforge.net


Global kommandoen.

Ofte er det nødvendig å gjøre samme operasjon på mange linjer i en fil. I Vim finnes det en enkel mulighet til å gjøre dette. Kommandoen man benytter er :global, eller kortere :g. Denne virker på en vanlig angivelse av område, og blir utført på linjer som passer med et angitt kriterie ( regulært uttrykk ). Det finnes flere varianter av kommandoen, jeg viser her tre forskjellige.

:[range]g/{pattern}/[cmd]

Kommandoen [cmd] må her være en lovlig Ex kommando. Hvis man vil gjøre mere generelle ting, kan man benytte

:[range]g/{pattern}/normal {commands}

Her kan {commands} være hva som helst av lovlige kommandoer i vim. Til slutt nevner jeg at det også er mulig å utføre kommanoder på linjer som ikke passer med kriteriet, ved å legge til et "!" etter :g, slik:

:[range]g!/{pattern}/[cmd]

Dette virker selvfølgelig også på kommandoen "normal".
Teller
Anta at du av en eller annen usaklig grunn vil ha linje-nummer satt inn først på hver linje. For å få til dette kan du gjøre slik:
:let n = 0
:g/^/let n=n+1 | execute "s/^/" . n
hovedgreia her er å vise bruken av let og execute. Med let kan du sette variable til en verdi og manipulere dem, for eksempel inkrementere. Kommandoen execute vil tolke den følgende tekst-strengen som et ex uttrykk, og utføre den. Det vil si at vi her gjøre en global kommando på alle linjer som inneholder ^, det vil si alle linjer. For hver linje legger vi til en i telleren n, deretter substituerer vi starten av linjen med innholdet i n. Punktumet er i denne sammenheng tekstkonkatenering. Variabelen n må stå utenfor fnuttene for å bli interpolert.

Teller

Dersom man skriver på tekster sammen med andre, og de andre bruker tulle-editorer, hender det relativt ofte at man får behov for å fikse opp tegnsettproblemer. For eksempel kan man i en utf8-fil se tegn av typen <92> eller <95> eller andre rare ting - dette kan dreie seg om diverse apostrofer og tankestreker som gir mening i Word, men ikke funker så godt i en plain-text/LaTeX sammenheng, og som må settes på en annen måte. Ikke alle tegnene er like kjappe og finne ut hvordan man kan reprodusere for søk-og-erstatt i Vim, så det kan være greit å lime et av tegnene inn i et buffer, og bruke dette til søk. En kjapp måte å ordne dette på er å stille cursor over aktuelt tegn og gjøre følgende

vy:%s/^R"/<tegn>/g

Det som skjer her er at man går over i visual-mode (v), trykker yank for å legge tegn under cursor, dvs. som nå er markert visuelt, inn i default-buffer (y), deretter går man inn i kommando-modus (:), angir søke i hele filen (%s/), henter så ut tegn som ble lagt inn i default-buffer ved å trykke ctrl-R (markert med ^R) etterfulgt av " som angir default-buffer. Deretter angir man hva man vil erstatte med på vanlig måte (/<tegn>), og at man vil endre alle forekomster (/g). Alternativt kan man benytte navngitt buffer f.eks ved å si v"ay (yank inn i buffer 'a'), og så bruke ^Ra for å hente innhold i buffer 'a' isteden.

Mine vimrc-filer

Jeg har en ganske omfattende .vimrc, som er delt opp i flere filer som sources etter behov. Hvis du har lyst til å se på disse, er de tilgjengelig i tar.bz2 format her.

The most recent update of this page was done:19.01.2012 by Åsmund Ødegård