next up previous contents
Vidare: Pakethantering i Slackware. Uppåt: Att använda Slackware Linux. Tillbaka: Att arkivera filer.

vi.

vi(1) är den gängse textredigeraren i Unix, och det är väsentligt för systemadministratörer att bemästra den. Flera versioner (eller efterlikningar) av vi finns tillgängliga, däribland vi, elvis, vile och vim. Åtminstone någon utav dessa är tillgänglig i så gott som vilken som helst unixversion liksom i Linux. Samtliga dessa versioner innehåller samma grunduppsättning av egenskaper och kommandon, så att det bör vara lätt att lära sig en ny avart av vi, när man redan kan en av dem.

vi är försedd med en mängd kraftfulla egenskaper, däribland syntaxkänslig markering av nyckelord, programkodsformatering, kraftfull sökning och ersättning, makron m.m. Dessa egenskaper tilltalar särskilt programmerare, dem som utvecklar för WWW m.fl. Systemadministratörer brukar uppskatta den automatisering och integrering med kommandoskalet, som är möjlig.

I Slackware Linux är det elvis, som är standardversion av vi. Även andra versioner -- däribland vim och gvim -- finns tillgängliga, om man har installerat motsvarande paket. gvim är en vi-version för fönstersystemet X. Den är försedd med verktygslister, löstagbara menyer och dialogrutor.

Starta vi.

vi kan startas från kommandoraden på flera olika sätt. Det enklaste är:

   $ vi
Detta startar vi och öppnar en tom buffert. Först ser man en nästan tom skärm. Editorn är nu i »kommandoläge« (»command mode«) och väntar på, att man skall göra någonting med den. Arbetslägen i vi behandlas på s. gif i avsnittet vid namn Arbetslägen. När man skall lämna vi skriver man

  :q

Förutsatt att inga ändringar har gjorts i filen, så kommer vi att stänga den. Om ändringar har gjorts, så kommer vi att varna för detta och tala om, hur man skall bära sig åt för att stänga utan att spara.

Man kan även starta vi och samtidigt öppna en befintlig fil. Vi kan t.ex. öppna filen /etc/resolv.conf på följande vis:

   $ vi /etc/resolv.conf
Slutligen kan vi startas på en bestämd rad i en fil. Till exempel kan man starta vi och öppna rad 47 i filen /usr/src/linux/init/main.c på följande vis:

   $ vi +47 /usr/src/linux/init/main.c
vi visar begärd fil och ställer inskrivningspunkten på angiven rad. Ifall man anger ett alltför högt radnummer, som skulle befinna sig någonstans efter filens slut, så ställer vi markören någonstans på sista raden. Detta är särskilt behändigt för programmerare, eftersom de kan hoppa direkt till det ställe i filen, där ett fel har tillstött, utan att behöva söka efter detta.

Arbetslägen.

 

vi arbetar i olika lägen, som användes till att lösa skiftande uppgifter. När man först startar vi, kommer man in i kommandoläge. Där har man tillgång till olika kommandon för att hantera text, flytta omkring i filen, spara, lämna och växla arbetsläge. Redigering av text sker i inmatningsläge. Man kan snabbt växla mellan lägen medelst ett antal tangentkombinationer, vilka förklaras nedan.

Kommandoläge.

Ifrån början kommer man in i kommandoläge. Från detta läge kan man inte direkt mata in text eller redigera befintligt innehåll. Dock kan man hantera texten, söka, lämna programmet, spara, ladda nya filer m.m. Detta avsnitt avses endast vara en introduktion till kommandoläget. Se beskrivningar av tangentkommandon i avsnittet om vi-tangenter på s. gif.

Kommandoläge är således det, man kan använda för att röra sig omkring i filen. På en del system kan man använda piltangenterna. På andra system kan man behöva använda de traditionella tangenterna »hjkl«. Här är en enkel förteckning över dessa tangenter, vilka brukas till att förflytta sig omkring i filen:

Tangent Förflyttning
h vänster ett tecken
j ner ett tecken
k upp ett tecken
l höger ett tecken

Man trycker på en av de uppräknade tangenterna enbart. Såsom vi senare skall se, så kan dessa tangenter kombineras med siffror för att ge effektivare förflyttningar.

Många av de kommandon, man utnyttjar i kommandoläge, börjar med kolon. Man avslutar t.ex. programmet med :q, såsom tidigare nämnts. Detta kolon anger endast, att det är fråga om ett kommando, medan det är »q«, som befaller vi att stänga. Andra kommandon kan vara en siffra följd av en bokstav. Dessa kommandon föregås inte av kolon och brukas vanligen till att hantera text.

Exempelvis kan man ta bort en rad ifrån en fil genom att slå dd. Detta raderar hela den rad, markören står på. Kommandot 4dd skulle befalla vi att avlägsna den rad, markören står på, samt ytterligare tre rader efter. I allmänhet anger siffror hur många gånger, vi skall utföra kommandot.

Man kan kombinera en siffra med någon av rörelsetangenterna för att förflytta markören flera tecken åt gången. Till exempel skulle 10k förflytta markören tio rader uppåt.

Kommandoläge kan även brukas till att klippa och klistra, infoga text samt läsa in andra filer i förhandenvarande buffert. Kopiering av text åstadkommes medelst tangenten y (för yank). Man kopierar aktuell rad med yy, och detta kommando kan förses med en siffra före, så att det då gäller flera rader. Därefter flyttar man dit, där kopian skall infogas, och slår p för paste. Texten klistras då in på raden efter den, markören står på.

Urklipp sker genom bruk av dd, och p kan även användas till att klistra tillbaka urklippt text. Inläsning av text ifrån en annan fil är en enkel procedur. Man slår :r åtföljt av mellanslag och namnet på den fil, som skall infogas. Filens innehåll klistras in i aktuell buffert på raden efter den, markören står på. Mer förfinade vi-kopior kan till och med komplettera filnamn på liknande sätt som skalet.

Slutligen skall vi behandla sökning. Kommandoläget medger enkel sökning såväl som komplicerade sök-och-ersätt-kommandon, vilka utnyttjar en kraftfull version av regelbundna uttryck. En uttömmande diskussion om regelbundna uttryck (reguljära mönster) ligger bortom synranden för detta kapitel, så detta avsnitt skall endast behandla några enkla sätt att söka.

En enkel sökning genomföres, när man slår an tangenten / åtföljd av den text, som sökes. vi söker framåt ifrån markören till filens slut och stannar, när det hittar en träff. Lägg märke till, att även icke fullt överensstämmande träffar får vi att stanna upp. Till exempel kan sökning efter »de« få vi att stanna på »dem«, »detta« o.s.v. Detta beror på, att alla dessa ord innehåller »de«, om än bara i början.

Efter att vi hittat första träffen, kan man fortsätta med att söka efter nästa träff genom att slå an tangenten / åtföljd av Retur. Man kan även söka baklänges igenom filen, om man ersätter snedstrecket med frågetecknet ?. Sökningen bakåt efter »de« skulle t.ex. kunna åstadkommas med ?de.

Inmatningsläge.

Infogande och ersättande av text sker i inmatningsläge. Såsom vi tidigare sagt, så kan man välja inmatningsläge genom att slå an tangenten i, när man befinner sig i kommandoläge. Därefter matas allt, man slår på tangenterna, in såsom text i aktuell buffert. När man slår an tangenten Escape, kommer man tillbaka till kommandoläge.

Ersättning av text kan åstadkommas på flera sätt. I kommandoläget slår man r och kan sedan ersätta ett tecken under markören. Man slår in det nya tecknet, så ersätter det tecknet under markören. Därefter blir man omgående återförpassad till kommandoläge. Om man slår an R, får man därefter ersätta så många tecken, man önskar. Först när man slår an tangenten Escape, kommer man ut ur detta läge och tillbaka till kommandoläge.

Det finns ytterligare ett sätt att växla mellan infogning och ersättning. Om man slår an tangenten insert i kommandoläge, så kommer man till inmatningsläge. När man väl är i inmatningsläge, fungerar tangenten insert såsom vippomkopplare mellan infogning och ersättning. Trycker man en gång, får man därefter ersätta text. Trycker man en gång till, får man åter infoga text.

Öppna filer.

vi låter oss öppna filer från kommandoläge såväl som att ange en fil, som skall öppnas, på kommandoraden. Vi kan t.ex. öppna /etc/lilo.conf:

   :e /etc/lilo.conf

Om man har gjort ändringar i aktuell buffert utan att spara, så klagar vi. Man får likväl öppna filen utan att spara aktuell buffert, om man slår :e! åtföljt av mellanslag och filnamnet. I allmänhet kan vi:s varningar undertryckas, genom att kommandot åtföljes av utropstecken.

Om man vill öppna aktuell fil på nytt, kan man göra det genom att slå e!. Detta är användbart, när man på något vis har rört till innehållet i filen och vill öppna den på nytt.

En del vi-kopior (t.ex. vim) medger flera öppna buffertar på en gång. Till exempel skulle vi kunna öppna filen 09-vi.sgml i vår hemkatalog, medan en annan fil är öppen, med kommandot

   :split ~/09-vi.sgml

 figure2772
: Visning av två filer samtidigt i vi.

Den nya filen visas på skärmens övre halva, medan den gamla filen visas på den nedre. Det finns en mängd kommandon, som hanterar delad skärm, och flera av dessa kommandon börjar likna någonting i EMACS. Det bästa stället att leta efter sådana kommandon är manualsidan för respektive vi-kopia. Lägg märke till det, att många kopior saknar stöd för delad skärm, så att man kanske inte alls kan använda det.

Spara filer.

Det finns många sätt att spara filer i vi. Om man vill spara aktuell buffert till filen randomness, så slår man

  :w randomness

När man väl har sparat en fil en gång, så behöver man bara slå :w. Alla ändringar skrives då till filen. När man har sparat filen, kommer man tillbaka till kommandoläge. Om man vill spara filen och lämna vi, (en mycket vanlig åtgärd), så slår man wq. Det befaller vi att spara filen och återvända till skalet.

Ibland händer det, att man vill spara en fil, som är märkt read-only. Det kan man göra, om man lägger till ett utropstecken efter kommandot, som så:

   :w!
   :wq!

Emellertid inträffar det likväl, att man inte kan spara en sådan fil (t.ex., om man försöker redigera en fil, som någon annan äger). När detta händer, säger vi, att det inte kan spara filen. Om man då verkligen vill redigera filen, får man komma tillbaka och redigera den som root.

Lämna vi.

Ett sätt att lämna vi är genom kommandot :wq, vilket sparar den öppna bufferten, innan programmet stänges. Man kan även stänga utan att spara, om man kommenderar :q eller :q!. Det senare kommandot användes, när man har gjort ändringar i filen, inte vill spara ändringarna.

Ibland kan det hända, att maskinen störtar eller att vi störtar. Emellertid vidtar då såväl elvis som vim mått och steg för att i möjligaste mån förminska skadan på öppna buffertar. Bägge dessa textredigerare sparar öppna buffertar i en tillfällig fil då och då. Denna tillfälliga fil heter oftast något, som liknar namnet på den öppna filen, men är försedd med en punkt i början av namnet. Detta gör filen till en dold fil.

Denna temporära fil avlägsnas så ofta editorn stänges på normalt vis. Detta betyder, att den tillfälliga kopian finns kvar, om någonting störtar, men inte annars. När man sedan vill redigera filen igen, uppmanas man välja mellan att använda säkerhetskopian eller bortse från den. elvis sänder även ett epostmeddelande (ifrån Graceland, märkvärdigt nog :), vilket talar om, att det finns en säkerhetskopia.

Ställa in vi.

Den vi-kopia, man helst använder, kan ställas in på många sätt.

En mångfald av kommandon kan matas in, medan man kör vi i kommandoläge, för att konfigurera vi så, som man vill ha det. Beroende på vilken editor, man använder, så kan man aktivera egenskaper, som underlättar programmering (såsom syntaxkänslig färgmärkning av nyckelord, automatiska indrag m.m.), rigga upp makron för att automatisera uppgifter, möjliggöra ersättning av fraser i texten m.m.

Nästan samtliga dessa kommandon kan skrivas in i en konfigureringsfil i användarens hemkatalog. elvis förväntar sig en sådan fil vid namn .exrc, medan vim läser sina inställningar ur .vimrc. Flertalet inställningskommandon, som kan matas in i kommandoläget, kan även placeras i inställningsfilen. Detta inbegriper inställningar, ersättningsfraser, makron m.m.

Dessa valmöjligheter och skillnaderna mellan textredigerarna utgör ett omfattande tema. För att få ytterligare upplysningar om dem, bör man läsa manualsidan eller WWW-stället för den avart av vi, man föredrar. En del editorer (såsom vim) har omfattande inbyggd hjälp, som man kan nå med kommandot :help eller liknande. Man kan även läsa i förlaget O'Reillys bok Learning the vi Editor av Lamb och Robbins.

Många vanliga program i Linux brukar vara förinställda till att ladda textfiler i vi. Exempelvis startas vi såsom förval, när man redigerar sina crontab-filer (se avsnittet om cron). Om man inte tycker om vi och hellre vill använda en annan textredigerare, så skall man sätta miljövariabeln VISUAL till namnet på den editor, man föredrar. Upplysningar om, hur man kan sätta miljövariabler, står i avsnittet om miljövariabler på s. gif i kapitel 8. Om man vill förvissa sig om, att älsklingseditorn blir förval var gång, man loggar in, så skall man lägga till inställningen för variabeln VISUAL i sin .bash_profile eller .bashrc i hemkatalogen.

Tangentkombinationer i vi.

 

Åtgärd Tangent Åtgärd Tangent
vänster, ner, upp, höger h, j, k, l utplåna rad dd
till radens slut $ utplåna fem rader 5dd
till radens början ^ ersätta tecken r
till filens slut G utplåna tecken x
till filens början :1 utplåna tio tecken 10x
till rad 47 :47 ångra senaste åtgärd u
läsa in utmatning ifrån ls :r !ls förena rad med nästa J
söka efter »asdf« /asdf upprepa sökning framåt /
söka bakåt efter »asdf« ?asdf upprepa sökning bakåt ?
lämna :q lämna utan att spara :q!
spara och lämna :wq spara utan att lämna :w
ladda om öppen fil :e! öppna fil hejaz :e hejaz
spara buffert till fil asdf :w asdf läsa in fil asdf :r asdf

Sammanfattning.

Man bör nu ha bekantat sig med vi -- standardeditorn i Unix. vi är ett tämligen sammansatt program med mängder av kommandon och inställningsmöjligheter. Man bör dock kunna öppna en fil, förflytta sig omkring i en fil, redigera en fil och lämna vi. Mer än så behöver man inte lära sig för vardagsuppgifter. Efter hand som man känner behov av mer makt över detta redskap, så kan man ta till vi:s väl utbyggda hjälp för att lära sig mer om programmet.


next up previous contents
Vidare: Pakethantering i Slackware. Uppåt: Att använda Slackware Linux. Tillbaka: Att arkivera filer.


Denna översättning ifrån engelskan är utförd av Erik Jonsson <[email protected]> efter Slackware Linux Essentials, officiell handbok för Slackware Linux.

Denna översättning tillhandahålles liksom engelskspråkiga originalet enligt villkoren i GNU General Public License (GPL).
Uppgifterna om författarnas och översättarens namn får ej avlägsnas, utplånas eller eljest göras oläsliga.
Förvaras åtkomligt.
Bäst före: senaste ändringsdatum.
Äldre versioner bör förstöras.
Senast ändrad Tue Oct 24 09:36:13 CEST 2000

Hela boken finns här även beredd för utskrift i PDF-filen slwhbk.pdf.

http://www.slackware.com/http://www.sslug.dk/Ser bra ut i vilken vävläsare som helst.


Generaldepoten — Emil Tusens Kulturpalats.
Om goda kagor och torra kakor (»cookies«).

Innehåll:

Litteraturförteckning

Om goda kagor och torra kakor (»cookies«).