Vi Text Editor!
Textredigering, på rätt sätt.
Introduktion
Mästra Vi texteditorn och lär dig hur du kan göra komplexa redigeringar i dina filer med mindre tid och ansträngning.
I förra avsnittet skapade vi några filer men de var tomma. Lite tråkigt men vi måste börja någonstans. I det här avsnittet ska vi titta på ett verktyg för att lägga in innehåll i filer och redigera det innehållet också. Vi är en textredigerare som med största sannolikhet skiljer sig mycket från alla redaktörer som du har använt tidigare. Det kommer att ta ett tag att sätta sig in i den, men när du väl har gjort det kommer du att inse att den faktiskt är ganska kraftfull. Det är ungefär som att skriva med pekdatorn, till en början är det besvärligt att lära sig och du undrar varför du bryr dig, men när du väl har fått grepp om det kommer du inte att vilja gå tillbaka.
Även om du inte använder Vi hela tiden kommer du definitivt att märka att de arbetsmönster som du utvecklar när du lär dig editorn lätt kan överföras till andra program och med stor effekt.
Detta avsnitt och de kommande avsnitten utgör faktiskt grunden för de sista avsnitten där vi kommer att sätta ihop allt och börja göra några riktigt roliga saker. Jag har valt att titta på Vi först så att ditt sinne har lite tid att bearbeta och förstå det som en förberedelse för senare när vi kommer att behöva det.
Vi är ett mycket kraftfullt verktyg. I det här avsnittet är mitt mål inte att täcka allt som Vi kan göra, utan att få dig att komma igång med grunderna. I slutet av avsnittet ger jag några länkar till resurser där du kan lära dig Vi ytterligare. Jag rekommenderar starkt att du tittar på några av dem.
En kommandoradsredigerare
Vi är en kommandoradsredigerare för text. Som du säkert känner till nu är kommandoraden en helt annan miljö än ditt grafiska gränssnitt. Det är ett enda fönster med enbart textinmatning och -utmatning. Vi har utformats för att arbeta inom dessa begränsningar och många skulle hävda att det faktiskt är ganska kraftfullt som ett resultat. Vi är tänkt som en redigeringsprogram för vanlig text (liknande Notepad på Windows eller Textedit på Mac) i motsats till ett ordbehandlingsprogram som Word eller Pages. Det har dock mycket mer kraft jämfört med Notepad eller Textedit.
Som ett resultat av detta måste du slänga musen. Allt i Vi görs via tangentbordet.
Det finns två lägen i Vi. Insert-läget (eller inmatningsläget) och redigeringsläget. I inmatningsläget kan du mata in eller skriva in innehåll i filen. I redigeringsläget kan du flytta runt i filen, utföra åtgärder som t.ex. ta bort, kopiera, söka och ersätta, spara osv. Ett vanligt misstag är att börja skriva in kommandon utan att först gå tillbaka till redigeringsläget eller att börja skriva in input utan att först gå in i inmatningsläget. Om du gör något av dessa är det i allmänhet lätt att återhämta sig så oroa dig inte för mycket.
När vi kör vi brukar vi normalt utfärda det med ett enda kommandoradsargument som är den fil du vill redigera.
vi <file>
Om du glömmer att ange en fil finns det ett sätt att öppna en fil i vi, men det är enklast att bara avsluta vi och försöka igen. Kom också ihåg att när vi anger filen kan det vara med antingen en absolut eller relativ sökväg.
Vi dyker in och sätter igång. Det kommer att bli svårt för mig att demonstrera mycket av det här så istället listar jag upp vad jag vill att du ska skriva och du får ge dig i kast med det och se vad som händer.
Först av allt går vi in i din katalog som du skapade i avsnittet om filmanipulation. Vi kommer att skapa några filer och detta kommer att hålla dem ur vägen för dina normala saker.
Nu ska vi redigera vår första fil.
- vi firstfile
När du kör det här kommandot öppnar det filen. Om filen inte finns kommer den att skapas åt dig och sedan öppnas den. (du behöver inte röra filerna innan du redigerar dem) När du går in i vi kommer det att se ut ungefär så här (men beroende på vilket system du är på kan det se lite annorlunda ut).
- ~
- ~
- ~
- ~
- ~
- ”firstfile”
Du börjar alltid i redigeringsläget, så det första vi kommer att göra är att byta till infogningsläget genom att trycka på i. Du kan se när du är i infogningsläget eftersom det visas i det nedre vänstra hörnet.
- ~
- ~
- ~
- ~
- ~
- ~
- — INSERT —
Ta nu in ett par rader text och tryck på Esc vilket tar dig tillbaka till redigeringsläget.
Spara och avsluta
Det finns några olika sätt att göra detta på. De gör alla i princip samma sak så välj det sätt som du föredrar. För alla dessa ska du först se till att du är i redigeringsläge.
Om du är osäker på om du är i redigeringsläge eller inte kan du titta i det nedre vänstra hörnet. Så länge det inte står INSERT är det okej. Alternativt kan du bara trycka på Esc för att vara säker. Om du redan är i redigeringsläget gör ett tryck på Esc ingenting så du gör ingen skada.
De flesta kommandon i vi utförs så snart du trycker på en sekvens av tangenter. Alla kommandon som börjar med ett kolon ( : ) kräver att du trycker på <enter> för att slutföra kommandot.
Spara och avsluta den fil du för tillfället har öppen
Andra sätt att visa filer
vi tillåter oss att redigera filer. Om vi vill kan vi använda det för att visa filer också, men det finns två andra kommandon som är lite mer praktiska för det ändamålet. Det första är cat som egentligen står för concatenate. Dess huvudsyfte är att sammanfoga filer, men i sin mest grundläggande form är den användbar för att bara visa filer.
cat <file>
Om du kör kommandot cat och ger det ett enda kommandoradsargument, som är den fil vi just skapat, kommer du att se dess innehåll visas på skärmen, följt av prompten.
Om du råkar köra cat utan att ge det ett kommandoradsargument kommer du att märka att markören flyttas till nästa rad och sedan händer ingenting. Eftersom vi inte angav någon fil läser cat istället från något som kallas STDIN (som vi kommer att lära oss mer om i avsnittet ”Piping and redirection”, vilket som standard är tangentbordet. Om du skriver något och sedan trycker <enter> kommer du att se cat spegla din inmatning till skärmen. För att ta dig härifrån kan du trycka <Ctrl> + c som är den universella signalen för Cancel i Linux.
I själva verket kan du när du hamnar i trubbel generellt trycka <Ctrl> + c för att ta dig ur trubbel.
- cat firstfile
- här ser du
- det innehåll du
- infört i din fil
Det här kommandot är trevligt när vi har en liten fil att titta på, men om filen är stor så kommer det mesta av innehållet att flyga över skärmen och vi kommer bara att se den sista sidan av innehållet. För större filer finns det ett bättre lämpat kommando som är less.
less <file>
less låter dig röra dig uppåt och nedåt i en fil med hjälp av piltangenterna. Du kan gå framåt en hel sida med hjälp av mellanslagstangenten eller bakåt en sida genom att trycka på b. När du är klar kan du trycka på q för att avsluta.
Ta en titt på filen som du just skapat nu med hjälp av båda dessa kommandon.
Navigera i en fil i Vi
Nu går vi tillbaka till filen som vi just skapat och skriver in lite mer innehåll. I infogningsläget kan du använda piltangenterna för att flytta markören. Skriv in ytterligare två stycken innehåll och tryck sedan på Esc för att gå tillbaka till redigeringsläget.
Nedan följer några av de många kommandon som du kan skriva in för att flytta runt i filen. Lek med dem och se hur de fungerar.
- Piltangenterna – flytta markören runt
- j, k, h, l – flytta markören nedåt, uppåt, vänster och höger (liknar piltangenterna)
- ^ (caret) – flyttar markören till början av aktuell rad
- $ – flyttar markören till slutet av aktuell rad
- nG – flyttar till den nionde raden (t.ex. 5G flyttar till 5:e raden)
- G – flyttar till den sista raden
- w – flyttar till början av nästa ord
- nw – flyttar fram n ord (t.ex. 2w flyttar två ord framåt)
- b – flyttar till början av föregående ord
- nb – flyttar tillbaka n ord
- { – flyttar bakåt ett stycke
- } – flytta framåt ett stycke
Om du skriver :set nu i redigeringsläge i vi aktiverar det linjenummer. Jag tycker att det är mycket lättare att arbeta med filer om man aktiverar radnummer.
Raderar innehåll
Vi såg nyss att om vi vill förflytta oss i vi så finns det en hel del alternativ tillgängliga. Flera av dem tillåter oss också att föregå dem med en siffra för att flytta så många gånger. Radering fungerar på samma sätt som förflyttning, faktum är att flera delete-kommandon tillåter oss att införliva ett rörelsekommando för att definiera vad som ska raderas.
Nedan följer några av de många sätt på vilka vi kan radera innehåll i vi. Lek lite med dem nu. (Läs också avsnittet nedan om ångra så att du kan ångra dina raderingar.)
- x – raderar ett enda tecken
- nx – raderar n tecken (t.ex. 5x raderar fem tecken)
- dd – raderar den aktuella raden
- dn – d följt av ett rörelsekommando. Radera till den plats där förflyttningskommandot skulle ha tagit dig. (t.ex. d5w innebär att du raderar 5 ord)
Undoing
Det är ganska enkelt att göra ändringar i vi. Det är tecknet u.
- u – Ångra den senaste åtgärden (du kan fortsätta att trycka på u för att fortsätta ångra)
- U (Obs: stor bokstav) – Ångra alla ändringar på den aktuella raden
Vi kan nu infoga innehåll i en fil, flytta runt i filen, radera innehåll och ångra det och sedan spara och avsluta. Du kan nu göra grundläggande redigering i vi. Detta är dock bara att röra vid ytan av vad vi kan göra. Jag kommer inte att gå in på alla detaljer här (jag tror att jag har kastat tillräckligt mycket på dig redan) men jag ska ge dig några saker som du kanske vill titta på för att öka dina kunskaper i vi. En enkel sökning i din valfria sökmotor på vi <insert concept here> kommer att ge dig många sidor med användbar information. Det finns också många vi-fuskblad där ute som listar alla kommandon som är tillgängliga för dig.
- kopiera och klistra in
- söka och ersätta
- buffertar
- markeringar
- områden
- inställningar
Har du roligt och kom ihåg att fortsätta med det. Vi kommer att vara smärtsamt i början men med övning kommer det snart att bli din vän.
Sammanfattning
Aktiviteter
Låt oss leka med lite innehåll.
- Börja med att skapa en fil och lägga in lite innehåll i den.
- Spara filen och visa den i både cat och less
- Gå tillbaka till filen i vi och skriv in lite mer innehåll.
- Förflytta innehållet med hjälp av minst sex olika rörelsekommandon.
- Lek med flera av raderingskommandona, särskilt de som innehåller ett rörelsekommando. Kom ihåg att du kan ångra dina ändringar så att du inte behöver lägga in nytt innehåll hela tiden.