>> [Seminar Vim]
[Brandon Liu] [Harvard University]
[Det här är CS50.] [CS50.TV]
>> I dag kommer att bli en introduktion till Vim.
Hur många av er har hört talas om Vim?
Vad har du hört om Vim?
[Student] Det löser alla dina problem.
[Brandon L.] Det löser alla dina problem.
Något annat ni har hört talas om Vim? Några visningar?
[Student] Nästan alla jag har pratat med gillar att använda Vim.
Åh, söt.
[Student] Många människor jag känner gillar att använda Vim.
Okej, det är bra, eftersom många människor i CS51
börja plocka upp Emacs eftersom Emacs har något bättre stöd
för det språk du ska använda i CS51,
och jag är rädd att inte tillräckligt många människor på Harvard använder Vim,
så jag försöker verkligen och gör ett bra jobb med att uppmuntra Vim användning.
>> Men här är ett klassiskt xkcd komiker som ni kan finna intressant.
Har ni använt Nano innan alls?
Denna komiska säger Nano? Verkliga programmerare använder Emacs.
Hej, riktiga programmerare använder Vim.
Nej, riktiga programmerare använder Ed som är här-du inte någonsin vill använda Ed.
Det är riktigt, riktigt gamla och riktigt dåligt, och riktiga programmerare använder
en magnetiserad nål och en stadig hand.
Och du kan läsa resten, men det är ganska underhållande.
Och det roliga är i slutet.
De säger, "Ja, naturligtvis, det finns ett Emacs-kommando för att göra det."
Good old Cx Mc M-fjäril, som är typ av en jab på Emacs
eftersom Emacs är historiskt kända för att vara lite uppblåst
och att ha kommandon för nästan vad som helst, så det blir liksom ett skämt för Emacs.
>> Vad är Vim? Vim är en avancerad programmerare textredigerare.
Jag vill verkligen göra skillnaden mellan textredigerare
och något som liknar ett dokument processor.
Microsoft Word är känd som en dokumentprocessor.
Du kan ställa in marginalerna, göra saker fetstil, understrykning saker,
slå igenom saker, ändra teckenstorlek och vad inte.
En textredigerare gör ingenting mer än bara redigera text.
Bokstavligen du bara tecken.
Det finns ingen typ av styling, storlekar, typsnitt, färger, eller något liknande.
Allt du behöver göra är redigera text, och Vim har speciellt gjort för programmering.
Den har en mängd funktioner som byggts på bara för programmering.
Den är utformad uttryckligen för effektiv textredigering.
>> I allmänhet är Vim kända för att vara i stort sett den snabbaste textredigerare
du kan eventuellt använda jämföras med någon annan textredigerare som är möjligt.
Många IDE-liknande funktioner är inte inbyggd i Vim,
så om du har använt en IDE och du är van vid saker som kompilera och köra automatiskt
eller felsökning av vad som finns i din IDE eller en mängd olika saker
Vim kommer inte med som naturligt,
men det finns en mängd plugins som du kan använda för att lägga den typen av funktionalitet till Vim.
Vim i sig fokuserar på textredigering och gör textredigering riktigt, riktigt bra.
Och slutligen, det är verkligen anpassningsbar och utbyggbar,
och i princip Vim har funnits, eller Vi, som Vim bygger på,
har funnits i över 40 år, och det är en mycket, mycket djup program,
och människor kommer att använda den för en livstid och aldrig riktigt behärska programmet till fullo,
och du kommer alltid att fortsätta att lära under hela livet genom åren,
alltid bli bättre och bättre.
>> Det finns i princip ingen ände på vad du kan lära dig och hur mycket du kan förbättra med Vim,
vilket är riktigt spännande.
Du vill inte se det som något skrämmande eftersom du kan bli väldigt, väldigt duktiga
i Vim på bara några veckor, men det är ungefär som en kontinuerlig-
kan du alltid lära mer och lära sig mer och göra saker bättre och bättre,
vilket är ganska spännande för mig.
Detta är ett exempel på vad Vim ser ut.
Det här är inte min. Du ser några demonstrationer just nu.
Det här är ett exempel på vad Vim kan se ut.
>> Vad vi ska göra i dag är att vi kommer att börja med
en snabb presentation av vad Vim kan göra.
Jag kommer att göra några tricks och allt för er
så att du kan se varför jag gillar Vim så mycket och varför människor som Vim så mycket,
och sedan därifrån går vi in ​​i en mild introduktion.
Faktiskt kommer det att vara lite snabb, en introduktion till Vim.
Jag ber er att ladda ner en textfil och att följa med mig om du kan.
Detta är Vim, och just här jag använder MacVim,
så om ni har Mac-datorer kanske du vill överväga att använda MacVim
eftersom det är en grafisk version av Vim, även om den vanliga Vim,
vad som finns i din kommandorad, fungerar alldeles utmärkt.
Jag ska visa er några slumpmässiga tips och tricks
som du kan använda i Vim visa dig varför det är så coolt.
>> Bara några slumpmässiga saker jag kommer att gå igenom.
Det första är textobjekt, och det finns några kommandon runt textobjekt,
och jag ska verkligen lära dig vad textobjekt är mer i detalj senare i seminariet,
men till exempel, låt oss säga att jag stavade mitt namn fel,
Barndon Liu, och jag vill ändra på det.
Allt jag behöver göra är att få min markören någonstans i mitt namn och skriv in kommandot
CIW, och det kommer att ta bort hela mitt namn, sätta mig i insats-läge,
och jag kan skriva in mitt namn och fixa det.
Likaså om jag vill ändra något inne citat finns också ett kommando för det.
Jag kan ta bort saker inuti citat.
Inget mer att behöva dubbelklicka, flytta handen över till musen,
Dubbelklicka och skriv något igen
Du kan göra allt från tangentbordet, oavsett vad det är.
Eller alternativt, låt oss säga att jag har den här bilden tagg inuti denna ankartaggen.
>> Har ni täckt HTML i klassen än?
Ja, så kanske jag vill ta bort denna tagg,
som normalt vad du behöver göra är att du måste använda musen
och försiktigt lyfta fram exakt vad du vill ta bort och ta bort den.
Men i Vim som är helt enkelt dit, och du kan radera ut det riktigt snabbt,
och jag ska förklara för er vad alla dessa kommandon betyder och hur du använder dem i en sekund.
Ett annat exempel, jag har lite kod här,
och låt oss säga att jag vill dra in koden, men jag vill dra in koden
bara inom parentes, och jag kan också dra in koden med hjälp av 3-kommandon
använder i grunden> iB.
En annan sak som är riktigt coolt om Vim är något som kallas visuell blockera redigering.
Jag vet inte om ni någonsin har velat lyfta fram
ett rektangulärt block av text i koden ibland
istället för att behöva göra detta konstiga sorts linje sak som spänner över alla olika linjer.
Till exempel i Vim kan du göra det.
Jag kan markera rektanglar som detta, vilket är ganska cool,
men dessutom kan jag redigera med hjälp av denna funktion.
Till exempel, om jag vill ge någon form av prefix till alla våra namn
Jag kan markera ett block och sedan lägga till något.
>> På samma sätt kan jag också lyfta fram detta block och väljer att ta bort det,
eller kanske jag ska lyfta fram detta block och ändra den till D för att vi är alla läkare.
Vad det än är, kan du göra alla dessa olika saker.
Slutligen är fällbara riktigt coolt.
Många IDE har här du kan vika olika funktioner utom synhåll
om du inte vill se dem.
Anta till exempel att jag har denna massa text här, och jag vill verkligen inte se den.
Jag vill hålla det utom synhåll eftersom jag redigerar något annat i filen.
Jag kan vika upp den så det är allt kollapsade,
och på det sättet det är utom synhåll,
och jag kan redigera andra saker som är på sidan, och det är riktigt bra.
Du kan vika upp funktioner och allt eller lägga upp klasser när du programmerar
bara för att hålla dem utom synhåll när du inte redigerar dem,
och senare när du vill se dem kan du öppna dem.
Och du kan se det just öppnat upp allt.
Flikar, buffertar, och fönster.
Vim är ganska cool i det
normalt i en hel del textredigerare som du kan bara redigera en fil i taget,
som i Nano, eller kanske om du använder Anteckningar eller Gedit.
Jag har faktiskt aldrig använt Gedit väldigt mycket, men åtminstone i Notepad + +
du kan ha flikar, men Vim har begreppet flikar, buffertar och fönster.
Till exempel kan du öppna upp ett gäng nya flikar.
>> Här kan du se högst upp har jag nu en massa flikar,
och jag kan stänga dem.
Dessutom finns det här begreppet buffertar,
vilket är tanken att när du har öppnat en fil
det stannar vid liv i bufferten, och om du vill navigera till den filen riktigt snabbt
Du kan navigera till det riktigt snabbt inom bufferten också,
och dessutom inom en ruta du kan också dela dina fönster upp i flera fönster.
Till exempel, om jag vill dela detta fönster upp i flera fönster
du kan se här att jag kan ha samma kod två gånger,
och jag kan dela mer och mer och mer, och just nu är det inte ser så bra
eftersom standard Jag har standardfönsterstorleken vara typ av stora
så alla de andra är hoptryckt ut,
men normalt när jag är på min dator och inte på denna projektor
Jag kan ha flera rutor öppna samtidigt, vilket är riktigt trevligt för
redigera flera filer samtidigt.
Du kan också få saker som att välja och byta ut,
och vi kommer faktiskt täcker det i seminariet,
så jag ska hoppa över det för nu.
Du kan också interagera med kommandoraden i alla möjliga olika sätt.
Till exempel, om jag har någon form av lista här, och jag vill att sortera-
Jag vet inte, låt oss lägga till en frukt, druva,
och jag kan lyfta fram detta med hjälp av höjdpunkten funktionen
och ringa sortera, och det kommer att sortera det automatiskt för mig.
>> Likaså om du ska kunna redigera CSS, som jag antar att du förmodligen kommer att göra
för ditt slutprojekt, de flesta människor gör,
och kanske du vill behålla din CSS organiseras genom att sortera dem i alfabetisk ordning.
Du kan också markera dem och ringa sortera, och det kommer att sortera dem för dig.
Dessa är några av de exempel på de saker som Vim kan göra,
och du kommer att märka att den viktigaste sak som jag verkligen vill göra er uppmärksamma på
är att jag gör allt från tangentbordet,
och om du har möjlighet att se var mina händer placeras
du kommer också att se att mina händer egentligen aldrig flytta från hemmet raden.
Normalt när du redigerar text du brukar använda en mus
och klicka runt och allt, och den sortens rörelse drar du ner
och avfall tid, eller kanske du flyttar mellan hemma raden och piltangenterna,
och så att du flyttar fram och tillbaka så där, vilket är lite besvärligt
men även saktar ner dig, och saken är när du får riktigt bra på Vim
allt du vill göra är gjort utan att behöva flytta händerna
från hemmet rad, vilket är bra.
Håll ut, jag ska öppna det här programmet. Så där.
>> Nu kan du se vilka kommandon som kör ner det nedre högra fönstret.
Alla funktioner som jag visade bara att du är saker som ingår som standard med Vim,
men det finns också ett stort antal plugins som du också kan använda
för att förbättra din Vim upplevelse.
Om du har hämtat de konfigurationsfiler som jag ingår,
och det finns anvisningar om hur du installerar dem i PowerPoint
och även i mailet jag skickade ut, jag har ungefär 40 plugins installerade
eller kanske 30 plugins, och varenda en
ger ytterligare funktionalitet till Vim som förbättrar din Vim upplevelse.
Till exempel är en av mina favoriter något som kallas surround.vim,
och det i grund och botten gör att du kan arbeta med närliggande
eller avgränsande tecken mycket lättare.
>> Ett exempel, jag vet inte om ni någonsin kod i LaTeX,
men LaTeX är ett matematiskt sättning språk som används för att göra
riktigt snygg matte, och när du vill ha något att se ut som matematik
du slå in den i dollartecken, och låt oss säga att jag skriver lite ekvation som F = ma,
och jag glömde att packa in den i dollartecken.
Då kan jag lyfta fram detta och slå in den i dollartecken precis som det.
Alternativt låter Vim du ta bort saker inuti taggar
och ta bort taggar och vad inte, men Vim av naturen
inte tillåter dig att ändra taggar, så till exempel, jag har denna div-taggen,
och jag vill uppgradera till HTML5 och använda en ny header tag.
Jag kan göra förändring omgivande taggen och skriv in rubrik,
och det kommer automatiskt att ändra på det för mig.
På samma sätt, låt oss säga att vi har något inom parentes,
och jag ville ändra på det från parentes i parentes eller något liknande.
Jag kan också ändra på det riktigt enkelt genom att skriva in c för förändring,
s för surround, parenteser.
Åh, jag antar att jag måste skriva det snabbare.
Parenteser och hängslen eller konsoler, och det kommer automatiskt att ändra på det för mig,
vilket är riktigt trevligt, annars normalt är det riktigt besvärligt.
>> Det är verkligen trevligt att växla mellan kanske enda anbud
och dubbla citationstecken strängar eller något liknande.
Det är ett exempel användningsfall.
Det finns en plugin som heter Fugitive
som integrerar med Git.
Jag gissar att ni kanske inte har använt Git så mycket i CS50,
men du hittar dig själv med hjälp av Git mer och mer och mer,
inte bara i klasserna hela Harvard men även på jobb och vad inte,
och normalt du måste växla fram och tillbaka mellan
kommandoraden och Vim för att interagera med Git,
men det finns plugins för att integrera med Git inifrån Vim
och även för att ge dig ännu fler funktioner ovanpå Git.
Det finns något som heter NERDTree, som du kan använda för att utforska
filstrukturerna inifrån Vim.
>> Till exempel kan jag öppna NERDTree på den högra rutan,
och du kan i princip se slumpmässiga filer
och öppna inte skatter, inte titta på mina skatter.
Du kan titta på filer och allt och öppna andra filer och så vidare och så vidare.
Och jag tänker inte gå in på alla plugins, så vi kan i princip dyka in
och börja arbeta på Vim, men det finns plugins som gör att du kan
comment lättare, plugins som gör att du kan hoppa in mellan filer lättare,
plugins som ger dig syntax kontroll inifrån Vim,
vilket är riktigt coolt, och det ger dig syntax kontroll
för de flesta språk direkt ur lådan,
saker som regnbåge parenteser, vilket är faktiskt riktigt, riktigt coolt.
Låt mig ge er ett exempel på det just nu.
>> Låt oss se.
Här är några random kod som jag skrev,
och du kommer att märka att fästena och parenteser alla är färgade,
och parenteser och konsoler av samma färg som matchar, vilket är trevligt
och ibland förbättrar läsbarheten av koden.
Du har också automatisk komplettering, tabellformatering.
När du har något som du vill få alla kommentarer att rada upp
eller om du vill göra en tabell i din text och du vill
få allt att se ut som en trevlig tabell, istället för att behöva formatera det manuellt
det finns plugins som kommer att formatera det för dig och så vidare och så vidare.
Listan kan göras lång och på.
Jag skulle kunna tillbringa timmar med att utforska alla de olika Vim plugins som finns,
och det är otroligt vad som finns därute.
>> Några frågor hittills? Söt.
I så fall kommer vi att börja spela runt med Vim,
och jag vill att ni ska arbeta med några Vim med mig
så att du kan få en känsla för det, och jag kan vägleda dig i dina första steg som arbetar med Vim
eftersom många människor blir överväldigad när de öppnar Vim upp,
och ibland om du inte ens vet kommandot för att avsluta du kan inte ens få ut av Vim,
men det är inte så illa.
Du behöver bara ett par minuter av vägledning från någon som har använt Vim före
eller att läsa några tutorials på nätet, och du kommer att vara på väg på nolltid.
Här är några instruktioner för att installera Vim om du inte redan har.
Du kan titta på dessa bilder efter presentationen om du vill installera fler saker.
>> Även dessa är några instruktioner för att installera mina konfigurationsfiler,
och du kan även följa dessa instruktioner senare om du inte redan har.
Om ni skulle kunna gå till denna länk och ladda ner en textfil.
Länken tar dig till denna textfil, som jag skulle vilja att ni ladda ner och öppna upp i Vim,
och det finns en massa övningar och allt i det att du kan följa runt med mig
och börjar få lite övning med några av de grundläggande funktionerna i Vim.
Bra.
Även om du öppnar upp det jag ska ge en kort introduktion till två riktigt viktiga principer
i Vim redigering som är verkligen viktigt att förstå innan du dyker in i Vim,
och det är modal redigering och operatörer och rörelser.
Jag ska omfatta trafik redigering först, och sedan kommer vi att täcka operatörer och motioner
i en liten bit.
>> Den första nyckeln distinktionen mellan Vim och ganska mycket alla andra
textredigerare av någon sort är att Vim är en modal redaktör,
och vad det betyder är när du använder Vim
du kan vara i en av många olika lägen.
Det finns normalt läge, finns det insatsläge, det är visuellt läge,
så vidare och så vidare, och saken är, dina tangenttryckningar ta på olika åtgärder,
ta på olika betydelse, beroende på vilket läge du befinner dig i.
Bara som ett exempel, är normalläge det läge du befinner dig i när du flyttar runt,
och så skulle jag använda nyckeln J för att flytta nedåt,
men i insatsläge, använder du nyckeln J att faktiskt skriva ut J på skärmen,
och det är därför många människor blir förvirrade eftersom de inte är vana vid
vara i olika lägen hela tiden, och så de kommer att skriva ut saker,
och du är van vid att ha vad du skriver på skärmen,
men i Vim kanske markören rör sig överallt
eftersom du skriver konstiga tecken, och plötsligt får du
skiftade i insert läge, eftersom du skrev några viktiga
som placerar dig i insert mode, och sedan text börjar flyga ut,
så att folk blir förvirrade på grund av detta.
Men du måste hålla reda på vilket läge du är i,
och om du tittar längst ner verktygsfältet i Vim
bör det finnas en indikator som talar om vilket läge du är närvarande i,
vilket bör vara till hjälp.
>> Men i allmänhet, de 3 huvudlägen som du bör känna till,
det finns bara förmodligen 6 eller 7 eller 8 lägen eller så,
men du merparten av din tid på 3.
Det första är normalläge. Det är där du tillbringar merparten av din tid.
Alla tangenttryckningar loggas som någon sorts kommando,
och vi kommer att lära sig en hel del av dessa kommandon under hela dagen idag.
Det andra läget är insert mode, vilket är där du faktiskt skriver ut saker,
och infoga läge är i grunden det läge du är vanligtvis används för att.
Du skriver något, och det bara kommer på skärmen,
och visuellt läge är något där du kan göra markering.
Du såg tidigare där ibland jag skulle lyfta fram text
och manipulera den på olika sätt, och det är ett exempel med hjälp av visuellt läge.
>> Vi ska börja med de absoluta grunderna du behöver för att överleva i Vim,
och det är i princip dessa 7 kommandon här.
HJKL används för att navigera runt i filen,
och de motsvarar vänster, ner, upp, och rätt,
och du är fri att använda piltangenterna också,
men vi verkligen uppmuntra dig att använda HJKL så mycket som möjligt
eftersom tanken är att när du redigerar kan du flytta runt i dokumentet
utan att behöva växla mellan piltangenterna
och där du skriver, vilket är riktigt, riktigt nice.
Du vill bara flytta några tecken över.
Du behöver inte flytta hela handen över, och det är ganska trevligt att ha det.
Vissa Vim experter faktiskt kartlägga sina piltangenterna för att andra funktioner
eftersom de redan har HJKL, och de kan använda sina piltangenterna för andra funktioner också.
HJKL flyttar dig runt när du är i normalläge.
Om du vill gå in i insert mode och skriver något
du kan trycka på i för insättningsläge, och som placerar dig i insert mode,
och du kan skriva något, och du skriver fly
att ta sig från insättningsläget tillbaka till normalläge.
Escape alltid skickar dig tillbaka till normalläge
oavsett vilket läge du befinner dig i, och om du vill lämna
Du kan skriva in: wq komma in,
och hur du kan komma ihåg detta är w står för skrivning,
och q står för sluta, så: wq,
och kolon kör kommandot, och så: wq enter för att köra kommandot
sparar och utgångar.
>> Om du öppnar filen upp går vi igenom den första övningen tillsammans.
Steg 1 är att överleva i Vim,
och förhoppningsvis ni alla har det öppet.
Bra, och vi har några enkla övningar för dig att vänja sig vid att använda dessa knappar.
HJKL verkligen inte verkar intuitivt i början,
och detta är en av de första blocken som människor har när du använder Vim
är med hjälp av dessa knappar för att navigera runt.
Det är inte intuitivt, men när man vänjer sig
det verkligen integreras i ditt sinne, och många människor befinner sig ofta
med hjälp av J och K i Word eller även i Chrome,
och faktiskt människor har skapat denna Chrome plugin som heter Vimium
som du kan använda i Chrome eller Chromium för att navigera genom Chrome
använda tangentbordet med hjälp av Vim-liknande genvägar,
så att folk är mycket entusiastiska över det, men gå vidare och försöka använda
HJKL att navigera mellan siffrorna bara så kan du bekanta dig
med hur dessa saker fungerar.
>> När du är klar med det, kan du också gå och leka med den här labyrinten jag skapat
bara för skojs skull, och du kan slags följa den streckade linjen
och försöka att inte krascha in i väggarna
och försöka göra det till slutet av labyrinten.
Om du använder kortkommandon i Gmail eller valfritt antal olika applikationer
du kommer att upptäcka att J och K, till exempel, används ofta för att flytta upp och ner,
och som i grunden kommer från Vim i huvudsak, så du har J och K,
och det är verkligen trevligt eftersom du kan gå upp och ner utan att behöva
rör handen fram och tillbaka från piltangenterna.
Nu ska vi försöka gå in i införingsläge och få ut ur insättningsläge.
Du kommer att märka att just nu är min markören är en stor, svart låda,
och när du går in i insättningsläge ska du finna att
den förvandlas till en smal markör som du är van vid.
Om du använder Vim i terminalen som du kanske inte tycker att detta är fallet
eftersom terminalen inte stödjer denna typ av tunna markör,
men om du använder MacVim eller gvim på Windows
så ska du finna att den förvandlas till en markör, och det är en riktigt snabb visuell indikator.
Det är för dig att se om du är i normalläge eller insättningsläge.
>> Låt oss gå vidare och prova att redigera denna linje.
Fyll den med ditt egna uppgifter eller vad det är,
och hur du kan göra det är att du kan flytta fram till slutet av den tomma,
skriver jag för att komma in i införingsläge, och du kan backa
och skriv in ditt namn, och när du är klar att skriva
du kan trycka på flykt för att komma ur ingsläge,
och du kan flytta hit, typ insats för att ta bort det,
typ fly för att komma ur ingsläge, och du kan skriva: w anger
för att spara filen.
Du kan skriva in bara: w för att spara filen.
Du kan skriva in bara: q för att avsluta utan att spara,
eller så kan du skriva in: wq för att spara och avsluta.
Visst, vill vi inte att sluta ändå, så du kan skriva in: w.
Och kanske det verkade lite ineffektiva vid första
därför att flytta till den platsen du var tvungen att skriva J en massa gånger,
kanske L en massa gånger för att komma till den platsen,
och du måste trycka på backsteg en massa gånger, och det verkade riktigt ineffektivt
medan normalt skulle du förmodligen flytta musen över det,
dubbelklicka och börja skriva, och naturligtvis,
saken är den, när du börjar med Vim och du bara känner till dessa grundläggande kommandon,
ja, det blir lite långsammare, men snart kommer du lära dig några mer kraftfulla kommandon,
vilket gör att du kan flytta över dokument mycket snabbare,
och du kommer inte att ha denna mycket besvärliga användning av
upprepa Js och upprepa Ks och Ls och så vidare och så vidare.
>> Några frågor hittills? Solid.
Tillbaka till PowerPoint.
Nu ska vi presentera några fler kommandon för avancerade rörelser.
Du upplevde att behöva skriva kanske L mycket eller H mycket,
och här är några fler kommandon som du kan använda för att röra sig snabbare.
Antag att markören är på O över på några i "Det här är en text,"
och här är 5 fler kommandon som du kan använda för att gå över linjen lättare.
Så ^ och $ flytta dig till början och slutet linje,
och någon gång när du lär reguljära uttryck eller andra saker
ser du att dessa slags avtal är mycket vanliga.
Den ^ i allmänhet hänvisar till början av raden.
Den $ hänvisar ofta till slutet av raden.
Dessa är mycket lätt att komma ihåg, och på samma sätt, b, e, och w,
de är lätta att komma ihåg och eftersom B motsvarar att backa eller början,
e motsvarar utgången, vilket är slutet av ordet,
och w motsvarar nästa ord, så w för ord.
Och om du fortsätter att skriva e eller behålla skriva w
du märker att du kan hoppa mellan ord, och det är mycket snabbare än att bara skriva l..
>> Nu är nästa sak Operator-Motion modell.
Detta är faktiskt en av de viktigaste anledningarna till Vim kan vara så kraftfull,
och det beror på att du kan i princip komponera olika element
till mer kraftfulla funktioner, så generellt
när du gör något i Vim du kan se det som
kombinera en operatör med en rörelse.
Hittills har vi bara behandlat motioner, som HJKL.
De flyttar dig runt, och sedan b och w, de också flytta dig runt olika sätt,
men vi har inte gått ännu till att kunna ta bort saker eller ändra saker eller whatnot,
och när du kombinerar operatörer med rörelser då du kan ha
mycket mer kraftfulla effekter, så till exempel,
om jag ville ta bort två ord, kan jag använda d för radering operatören,
och jag kan lägga till en 2 för att visa att jag vill ta bort två ord,
och då jag har en rörelse.
Jag skulle kunna omfatta w att säga ta bort 2 ord.
Jag skulle kunna använda något som J säga radera nedåt två gånger
och ta bort 2 rader under mig.
Jag skulle kunna säga D2B radera bakåt två gånger,
och det finns ännu fler rörelser än de som jag har visat här
att verkligen, verkligen göra ditt Vim redigering mycket mer kraftfull.
>> Dessa är några av de mest populära och de vanligaste operatörerna
och är ganska lätt att komma ihåg också.
D för radering, c. för förändring.
C är i princip exakt samma sak som förändring, förutom att
när du använder c du automatiskt får tas i insatsläge efteråt.
Normalt när du använder rader du använder den från normalläge,
och efter att du tar bort något som du bor i normalt läge.
Men om du vill ändra något kan du använda c
att ta bort något och sedan omedelbart gå in i insättningsläge
så att du kan börja skriva och fixa något.
Y är för YanKing.
Det är i grunden Vim idé om kopiering.
Till exempel, om jag vill kopiera de kommande 2 ord jag kan göra y2w eller något liknande,
och v är att lyfta fram, i huvudsak.
Och även vad som verkligen är coolt är om du skriver en operatör två gånger
det kommer att fungera på en hel rad, så om jag vill ta bort en hel rad
Jag kan skriva dd att ta bort hela raden,
eller om jag vill kopiera hela raden jag kan använda yy eller något liknande.
>> Låt oss prova det här lite mer.
Det finns en övning här för en avancerad rörelse operatör samt
och även en del andra saker som jag inte kommer att täcka i PowerPoint idag,
men du kan känna dig fri att se över dem senare och leka med dem
och bekanta dig med dem.
Operatörer och rörelser.
Anta till exempel att det finns dessa två ord du bara vill ta bort i meningen.
Vad du vill göra är att du vill vara säker på att din
markören är i början av det första ordet som du vill ta bort,
och du kan skriva in d2w, och det kommer att ta bort de två ord för dig.
Och med hjälp av denna exakt kommando, d2w, kan verka lite besvärligt
och meningslöst, men det är tänkt att uttrycka idén
att du kan komponera dessa olika saker, och även i fall
du råkar vara i situationen, då kan du sluta med dw eller d2w,
som jag använder ibland.
Dd och cc jag använder mycket oftare eftersom du kan handla på hela linjer.
>> Till exempel, låt oss säga att jag har den här slumpmässiga lista här,
och kanske jag vill ta bort den rad som säger Huskies eftersom det inte passar, bara för att,
och jag vill inte att det ska gå in i insättningsläge efteråt.
Jag vill ta bort det, i vilket fall kan jag skriva dd,
och det kommer att ta bort hela raden.
Men låt oss säga att nu finns det annan linje som jag vill ta bort,
men jag vill också att fixa det och skriva om det, i vilket fall jag ska prova något liknande cc,
och som tar bort hela raden, men sätter mig i insättningsläge, som ni kan se,
och jag kan fixa det därifrån.
Och det finns många, många olika sätt som du kan kombinera operatörer och motioner,
och när du använder Vim mer och mer du lär dig mer om olika sätt
du kan använda dessa kommandon, och du kommer att bli bättre och bättre.
Awesome, nu här är några andra diverse kommandon
som också är mycket, mycket vanligt förekommande och även hjälper dig att bli bättre på Vim.
>> Till exempel, vi pratade om gemener v för visuell markering.
Vi kan också använda versaler V för visuell linjemarkering.
Så att du kan markera hela rader åt gången mycket lättare.
Du kan använda o när du är i normalläge för att i grunden sätta in en ny rad
under linjen du är här och lägg den i insättningsläget för att börja skriva.
Du kan använda gemener x för att ta bort tecknet som är närvarande under din markör.
Du kan också använda u att ångra, som är typ av trevligt,
och du kan använda kapitalet A som ska läggas till i slutet av den aktuella raden,
så kanske du har markören någonstans på raden, och du vill lägga till i slutet av raden.
Sedan kan du skriva kapital A att omedelbart hoppa till slutet av raden
och gå in i införingsläge så att du kan lägga till i slutet av raden.
>> Jag tror att jag har några fler övningar för det som vi kan prova.
Faktiskt, nej, det gör jag inte. Inte för dem.
Men vi har några fler övningar för nästa avsnitt där vi får se.
Men dessa kan du testa dig själv också.
Till exempel, om du skriver i vanlig v får du regelbunden markering som du är van att gilla detta.
Om du skriver in kapital V, kan du få full linje som markerar så där,
eller om jag skriver in o det i princip kommer att öppna en ny linje för mig, vilket är ganska trevligt.
X jag kan använda för att ta bort tecken på markören.
Jag kan trycka på x en massa gånger och ta bort saker.
Jag kan trycka på u för att ångra allt det.
A, kan jag skriva in A för att omedelbart gå till slutet av raden,
och jag ingår också några andra trevliga tangenter
att du också kan titta på efter presentationen att lära sig några andra kommandon.
>> [Student] Vad är ersättning om?
[Brandon L.] Byte är också riktigt cool
och i grund och botten om du går någonstans-
har du någonsin-folk egentligen inte använda den så mycket längre i dessa dagar,
men har ni någonsin sett i Microsoft Word om du skriver insats
du plötsligt gå in i denna konstiga läge där varje tecken som du skriver
princip ersätter nästa tecken?
Jag vet inte om ni någonsin har sett det.
Detta liknar det.
Till exempel, om jag vill skriva över det jag idag har av någon anledning
Jag kan skriva i kapital R, och jag ska nu vara i byta läge, som ni kan se i det nedre vänstra.
Om jag skriver grejer det skriver saker, och jag kan också backsteg, vilket är ganska häftigt,
och jag kan ångra det.
Jag använder inte det så ofta, men då och då blir det praktiskt.
>> Låt oss tala om textobjekt, som är en av mina favorit saker om Vim, ärligt.
Textobjekt är i grunden denna föreställning om att definiera någon form av bit av text
inuti din textfil, och jag ska gå över dessa tangenter först,
och sedan ska jag ge dig några demonstrationer för dig att bättre förstå vad det betyder.
W hänvisar till ett ord, som ett textobjekt som ett ord,
så några ord som du normalt vet det,
och om det finns skiljetecken som är bredvid ordet
då det inte kommer att inkludera skiljetecken i allmänhet.
Men till exempel, om du vill inkludera skiljetecken av någon anledning
eller du gör något som inte är engelska och du vill inkludera
alla tecken som är avgränsade med blank
Du kan också använda kapital W för att få allt som omges av mellanslag.
Du kan även använda parenteser för att hänvisa till ett textobjekt
det är inne i en uppsättning av parenteser.
Du kan göra samma sak med hakparenteser, vinkelfästen,
hängslen och offerter samt, slutligen,
Du kan också använda t för att hänvisa till en viss tagg.
>> Låt mig visa dig hur det faktiskt spelar ut.
Till exempel är det här mitt första exempel i min monter.
Det finns vissa ord i denna mening som jag vill ändra,
och vi pratade om W används som en rörelse,
men du kan även använda den som ett textobjekt som så.
Till exempel, ett sätt jag kunde ändra Barack namn eller i grunden förändra det
är jag kunde gå till början av detta ord och skriv in c för förändring och w för ord,
och det kommer att ta bort hela ordet och lägg den i insättningsläge.
Men det är mycket irriterande för mig att gå till början av ordet hela tiden.
Det är riktigt irriterande. Jag vill inte behöva göra det.
Jag kan faktiskt vara var som helst i hans namn
och skriv in CIW, och det jag står för inre,
så om jag skriver in CIW det står för förändring i ett ord,
eller med andra ord, ändra ordet jag är för närvarande inne,
och det kommer att ge dig exakt samma effekt.
Du kan fixa det.
>> På samma sätt kanske jag har en del fall som detta
där av någon anledning finns det några avgränsare eller något liknande,
eller det finns någon interpunktion, och jag ville ta bort det hela.
Om jag skriver i CIW det kommer att ta bort vad som finns inuti dessa avgränsare,
men jag vill få det hela som är omgiven av mellanslag,
så jag kan använda guiden för att ta bort det hela.
Jag ska skriva i fem, gör samma sak, och skriv in sex.
Likaså om jag vill ändra något som är inom parentes
Jag kan skriva in CI) för att ta bort allt som är inom parentes
och sedan fylla i vad jag vill göra, som int argc, vad du än vill göra,
och på samma sätt, samma sak med offerter.
Jag kan fixa text som är inne i citat,
och jag kan också byta saker som är inne i taggar.
Låter det vettigt?
>> En annan sak du kan göra är att du inte behöver använda c..
Du kan också använda d om du vill ta bort vad som finns i dessa taggar.
Om jag vill ta bort text i en tagg jag kan använda dit för att ta bort den taggen.
Jag kan också använda vit för att markera vad som finns inuti taggen, till exempel.
Den andra saken är istället för att jag i mitten du kan också använda en,
som står för allt, så kom ihåg om du använder jag det kommer att hänvisa till textobjektet
eller använda ett textobjekt som är innesluten inuti avgränsare,
men om du använder en kommer att omfatta den texten samt avgränsare själv.
Till exempel, om jag vill lyfta fram denna text och den omgivande taggen
Jag kan använda karet, v för visuell höjdpunkt, en för alla, och sedan t för taggen.
Du kan göra något sånt också.
Kanske jag vill ta bort det här google.com med citattecken runt det också,
och jag kan använda något som da "för att ta bort allt detta, till exempel.
>> Några frågor hittills?
Jag inser att jag är dumpning på dig mycket Vim kommandon på en gång,
och detta är grunden för att jag vill utsätta dig för alla de olika kommandona
och ger dig en introduktion till vad dessa kommandon gör i Vim.
Men vad som kommer att hända är när du går tillbaka
du kommer att behöva sakta plocka upp dessa kommandon en efter en.
Du vill inte överväldiga dig själv, eftersom det är alltför överväldigande.
Om du vill hämta Vim vad du måste verkligen göra är
börja med den första grundläggande uppsättning, och jag har brutit upp den i lektioner för dig
att göra det lättare för dig att följa och försöka behärska varje uppsättning kommandon
en efter en, en i taget.
Det är för mycket att göra allt på en gång, så vad ska du göra när du går tillbaka är
gå till första lektionen, vilket är HJKL, insättningsläge, fly in i normalt läge,
och spara och avsluta, och det är allt du egentligen behöver för att överleva i Vim,
och blir riktigt, riktigt bekväm med det.
Och efter några dagar när du är mycket bekväm med det
du ska gå vidare till mer avancerade rörelseoperatörer,
de mer avancerade rörelser, och vidare till de operatörer och så vidare och så vidare.
>> Jag vet att jag går igenom en hel del, men jag vill få dig utsatt för en massa olika saker.
Men om du är redo för utmaningen, kan jag visa dig
hur du kan sätta detta tillsammans med den mesta av vad vi just lärt oss i dag,
och du kan också följa med om du vill,
men jag skapade några random övning.
Antag att vi har någon sorts register som detta
där du har dessa block med människors namn,
hus, år, och koncentrationer och vad inte,
och du vill lägga till en ny post för dig själv.
Vad är det bästa sättet för dig att göra detta?
Låt oss göra så här.
Varför inte vi först belysa detta block.
Du kommer att välja det, och vi kan trycka på y för att hämta tillbaka den,
så nu kan vi i princip kopiera och klistra in den här mallen först
utan att behöva skriva om det hela från början.
Nu ska jag trycka j ner en massa gånger för att gå ner,
och jag ska trycka på p för att klistra in den.
Kanske ska jag lägga till några extra rader för en plats,
och låt oss säga att nu vill jag ändra ditt namn till någon.
Då kan jag gå här och skriv in c2w som innan för att ändra det namnet.
Bob Jones, vem vet.
Kanske om jag vill ändra i huset jag kan gå in i mitten här
och skriv in guiden och sätta Cabot House.
>> Här kan vara ett exempel på där du kanske vill överväga att använda
ersättningsläget för att ändra din examen år om du vill,
eller vi kan också använda guiden också.
Det spelar ingen roll.
Kanske vill du ändra din stora.
Och det är vad du gör.
Och kanske jag kommer att ge er en demonstration av vad jag kan göra
om jag var-om du fortsätter att lära sig mer avancerade kommandon i Vim
eftersom vi knappt skrapat på ytan här,
och jag skulle kunna göra den här typen av redigering ännu snabbare än jag har visat dig här
eftersom jag vet att fler kommandon som jag inte har fått en chans att visa dig för idag.
Till exempel, om jag vill lyfta fram det jag kan göra det så där,
flytta ner.
Jag har lagt min egen kartläggning
att i princip automatiskt markera saker för mig
och jag kan-jag vet inte.
Jag menar, det är bara att försöka visa dig att du kan verkligen, verkligen
börja redigera saker snabbare, särskilt när du har alla dessa olika områden,
och normalt vad du kanske gör är slags klicka
och lyfta fram och skriva.
Du kan göra allt på en gång, kopiera och klistra in,
rör sig upp och ner mellan filen,
bara avgränsa grejer, formatering grejer.
Allt detta kan göras mycket, mycket snabbare i Vim.
>> Bara en sista liten sak som jag tror kan vara riktigt trevligt,
som sök och ersätt.
De av er som har använt Gmail genvägar
kommer du också veta att om du skriver in / skickar dig till sökrutan
och i en mängd olika applikationer i allmänhet hittar du att snedstreck
eller kanske styra snedstreck eller något att göra med snedstreck
kommer att sätta dig in i någon sorts sökläge,
och som också i grunden kommer från Vim huvudsak
eftersom snedstreck operatör eller kommando snedstreck kan du ta in
något slags snöre som du kan använda för att söka i dokumentet.
Du kan n och kapital N för att gå till nästa och föregående förekomst,
och du kan även använda något liknande för att söka och ersätta i dokumentet.
Jag ska ge er en demonstration på vad som kan göras.
>> Kanske om jag vill hitta alla förekomster av strängen ryck i det här dokumentet
Jag kan skriva in / ryck, som ni kan se i det nedre vänstra hörnet,
och när jag skriver in den belyser alla instanser.
Jag kan använda i princip n för att hoppa fram och tillbaka mellan alla dessa olika instanser,
och låt oss anta att jag vill söka och ersätta ryck med några slumpmässiga ord
det är också i dokumentet.
Jag kan trycka på: för att börja skriva in någon form av kommando inom Vim,
något kommando som är mer sofistikerad än att flytta runt
eller ta bort eller något liknande.
Jag kommer att skriva in% tecknet att hänvisa till att jag vill använda det här kommandot substitution
på hela dokumentet.
Skriv in er för substitution. Detta kommer från PEARL väsentligt.
Och detta nästa steg är en ganska standard kommando som du hittar i PEARL
stället och i andra programmeringsspråk som du kommer
nog börja lära sig som du gör mer datavetenskap,
och jag kan i princip använda / skriva en /, skriv in ordet jag vill söka och ersätta
och skriv sedan en annan / och skriva vad ord jag vill ersätta det ordet med.
Vem vet, kanske NyanCat.
Jag gör det, och då ser du att allt blev ersatt.
>> Men du kommer att märka att det är det här ordet här.
Av någon anledning har vissa av våra instanser av ryck ersättas men inte alla,
och det beror på hur denna typ av språk har skrivits
inte bara i Vim men på andra ställen är att när du kör kommandot substitution
det kommer bara att ersätta den första förekomsten av det ordet i varje rad,
så om jag vill verkligen ersätta alla förekomster av ordet på varje rad
då måste jag göra samma sak men lägga en g flaggan i slutet,
som står för den globala, och då kommer faktiskt
ersätta alla instanser.
Och när du lär dig de reguljära uttryck, det finns faktiskt en CS50 seminarium
på reguljära uttryck, så om du är nyfiken på reguljära uttryck
Du kan också ta det seminarium och lära sig mer.
>> Men till exempel, låt oss säga att jag har en lista med namn som detta,
och jag vill ordna det, så istället för att ha efternamn, kommatecken, förnamn
Jag vill ordna det så det står förnamn, utrymme, efternamn.
Du kan faktiskt använda detta kommando här
att i huvudsak göra det för dig, så att du kan se här
Vi börjar med ett s, vilket innebär att vi vill göra en sök och ersätt,
och sedan jag lagt till en flagga som heter \ v, vilket är något som kallas denna magiska flagga
i Vim som låter mer lätt att du kan göra reguljära uttryck.
Sedan från det vi i princip matcha för en enskild linje
som är av formen en uppsättning ord, kommatecken, utrymme och en uppsättning ord eller en uppsättning bokstäver.
\ W + innebär i grunden ett eller flera tecken,
och parentes används för att fånga dessa grupper
så jag kan hänvisa till dem senare.
Som ni ser, en gång dessa fångar 2 block av ord
som är separerade med ett kommatecken, utrymme
vad vi vill ersätta den med är jag använder \ 2 och \ 1
för att gå tillbaka till de ord som var tillfångatagna
i själva find-kommandot,
och så \ 2 refererar till det som finns i den andra uppsättningen av parenteser,
\ 1 hänvisar till det som finns i den första uppsättningen av parenteser,
och som ni kan se, jag sätter 2 före den 1 med ett mellanslag
att försöka flytta förnamnet före efternamnet.
Låter det vettigt?
>> Och vad jag kan göra är att jag kan gömma dem först så jag bara köra det här kommandot på dessa linjer,
och sedan ska jag skriva in detta kommando.
Du kan se den gör exakt som delas.
Och återigen, det är knappt skrapat på ytan,
och om du går till den reguljära uttrycket seminariet då jag är säker på att du kommer att lära dig
mycket mer olika saker du kan göra med reguljära uttryck,
och detta börjar i princip att antyda vad du verkligen kan göra med Vim
om du verkligen börjar att bli en mästare på det.
Kanske vill du Refactor något, och du vill hitta alla förekomster
av någon funktion som följer någon slags namngivning mönster.
Du vill ändra det sätt som är namngivna.
Du kan skriva någon form av kommando som detta för att göra det åt dig,
och det är den typ av flexibilitet du kan få inom Vim
att du bara inte kommer att få i andra textredigerare.
>> Det täcker i stort sett alla de saker som jag ville lära dig idag i dagens seminarium,
men återigen, jag vill verkligen betona att om du vill plocka upp Vim
det är sant att det finns en något högre inlärningskurva i början.
I början kommer du att vara något mindre produktiv
än vad du förmodligen skulle vara på annat sätt, men om du hålla fast vid det
inom några dagar eller några veckor, beroende på hur snabbt du lär dig,
du kommer att bli mycket, mycket snabbare, och jag försökte ge dig en demonstration
på vad Vim kan men jag fick verkligen en chans att visa dig
vad som händer när jag normalt, till exempel i klass jag skriver i mina anteckningar med Vim.
Det beror på att jag kan jobba så mycket snabbare i Vim än jag kan med något annat program.
Det är bokstavligen en 2 eller 3 tiden produktivitetsökning i Vim jämfört med andra program,
inte bara med hastigheten på textredigering utan även på det sätt jag kan flytta runt i dokumentet
och hur jag kan komma åt andra filer på min dator
och hoppa in mellan dem och så vidare och så vidare.
Det är bara en riktigt, riktigt stor produktivitet uppsving.
>> Men när du lär dig, vill du se till att du lär dig en sak i taget,
och försöka att inte överväldiga dig med alltför många olika kommandon
eftersom det finns en hel del kommandon och en massa olika genvägar kan du lära dig i Vim.
Du vill plocka upp en liten bit i taget och under åren
gradvis samla en större och större förståelse för Vim.
Om du vill fortsätta att lära sig mer, dessa är några av de mer avancerade ämnen
du kan fortsätta att lära sig om, och även detta skrapar knappt på ytan.
Här är några populära plugins kan du välkommen att kolla in och Googla dem
och leka med dem om du vill och bara se vilken typ av plugins är ute.
Och sedan i slutet av denna PowerPoint, jag har en massa länkar
till olika resurser kan du använda för att lära av.
Här finns en massa olika länkar som du kan använda för att komma igång med Vim.
De har olika tutorials och vad inte,
och slutligen, dessa är några mer avancerade saker du kan använda
att även kolla in också,
vissa skärm avgjutningar och några mer avancerade tekniker i Vim
och även några olika delar av källkoden kan du slå upp på GitHub
bara titta på andras konfigurationsfiler
eller för att titta på plugins i Vim och så vidare och så vidare.
>> Det är allt jag har för dig.
[CS50.TV]