[Seminar Vim] [Brandon Liu] [Harvard University] [Dette er CS50.] [CS50.TV] I dag kommer til å være en introduksjon til Vim. Hvor mange av dere har hørt om Vim? Hva har du hørt om Vim? [Student] Det løser alle dine problemer. [Brandon L.] Det løser alle dine problemer. Noe annet dere har hørt om Vim? Noen visninger? [Student] Nesten alle jeg har snakket med liker å bruke Vim. Oh, sweet. [Student] Mange jeg kjenner liker å bruke Vim. Ok, det er bra, fordi mange mennesker i CS51 begynne å plukke opp Emacs fordi Emacs har litt bedre støtte for det språket du skal bruke i CS51, og jeg er redd for at ikke nok folk på Harvard bruker Vim, så jeg virkelig prøve og gjøre en god jobb med å oppmuntre Vim bruk. Men her er en klassisk xkcd tegneserie som dere kan finne interessant. Har dere brukt Nano før i det hele tatt? Denne tegneserien sier Nano? Ekte programmerere bruke Emacs. Hei, ekte programmerere bruke Vim. Nei, ekte programmerere bruke Ed som er dette-du ikke noen gang vil bruke Ed. Det er virkelig, virkelig gamle og virkelig ille, og ekte programmerere bruke en magnetisert nål og en stødig hånd. Og du kan lese resten, men det er ganske morsomt. Og det morsomme er på slutten. De sier: "Å, ja, selvfølgelig, det er en Emacs-kommandoen til å gjøre det." Gode ​​gamle Cx Mc M-butterfly, som er liksom en jab på Emacs fordi Emacs er historisk kjent for å være litt oppsvulmet og å ha kommandoer for nesten hva som helst, så det er liksom en spøk for Emacs. Hva er Vim? Vim er en avansert programmerer tekst editor. Jeg ønsker virkelig å gjøre skillet mellom tekstredigeringsprogram og noe som en dokumentmater. Microsoft Word er kjent som et dokument prosessor. Du kan angi marger, gjøre ting fet, understreket ting, streik gjennom ting, endre skriftstørrelse og whatnot. En tekst editor gjør ingenting mer enn bare redigere tekst. Bokstavelig talt du bare har tegn. Det er ingen form for styling, størrelser, fonter, farger, eller noe sånt. Alt du gjør er å redigere tekst, og Vim er spesielt laget for programmering. Den har en masse funksjoner innebygd i bare for programmering. Den er designet spesielt for effektiv tekstredigering. Generelt er Vim kjent for å være i utgangspunktet den raskeste teksteditor du kan eventuelt bruke sammenlignet med annen tekst editor som er mulig. Mye av IDE-lignende funksjoner er ikke bygget direkte inn Vim, så hvis du har brukt en IDE og du er vant til ting som kompilere og kjøre automatisk eller debugging hva som er i din IDE eller en hel rekke forskjellige ting Vim ikke kommer med som naturlig, men det er en hel rekke plugins som du kan bruke til å legge den slags funksjonalitet til Vim. Vim av seg selv fokuserer på tekstredigering og gjør tekstredigering virkelig, virkelig godt. Og til slutt, det er virkelig tilpasses og utvides, og i utgangspunktet Vim har eksistert, eller VI som Vim er bygget på, har eksistert i over 40 år, og det er en veldig, veldig dypt program, og folk vil bruke det i en mannsalder, og aldri virkelig mestre programmet til fulle, og du vil alltid fortsette å lære gjennom hele livet ditt i løpet av årene, alltid blir bedre og bedre. Det er i utgangspunktet ingen grenser for hva du kan lære og hvor mye du kan forbedre med Vim, som er virkelig spennende. Du ønsker ikke å se på det som noe skummelt fordi du kan bli veldig, veldig dyktig i Vim på bare noen få uker, men det er liksom som en kontinuerlig- du kan alltid lære mer og lære mer og gjøre ting bedre og bedre, som er litt spennende for meg. Dette er et eksempel på hva Vim ser ut. Dette er ikke min. Du vil se noen live demonstrasjoner akkurat nå. Dette er et eksempel på hva Vim kan se ut. Hva vi skal gjøre i dag er vi kommer til å begynne med  en rask presentasjon av hva Vim kan gjøre. Jeg kommer til å gjøre noen triks og whatnot for dere slik at du kan se hvorfor jeg liker Vim så mye, og hvorfor folk liker Vim så mye, og deretter fra det vi vil gå inn i en mild introduksjon. Egentlig vil det være litt rask, en innføring i Vim. Jeg vil be dere å laste ned en tekstfil og å følge med meg hvis du kan. Dette er Vim, og akkurat her jeg bruker MacVim, så hvis dere har Mac kan det være lurt å vurdere å bruke MacVim fordi det er en grafisk versjon av Vim, selv om den vanlige Vim, hva som er i kommandolinjen, fungerer helt fint. Jeg skal vise deg noen tilfeldige tips og triks som du kan bruke i Vim å vise deg hvorfor det er så kult. Bare noen få tilfeldige ting jeg kommer til å gå gjennom. Det første er tekstobjekter, og det er et par kommandoer rundt tekstobjekter, og jeg vil faktisk lære deg hva teksten gjenstander er i mer detalj senere i seminaret, men for eksempel, la oss si at jeg stavet navnet mitt feil, Barndon Liu, og jeg ønsker å endre det. Alt jeg trenger å gjøre er å få min markøren et sted i mitt navn, og skriv inn kommandoen CIW, og det vil slette hele mitt navn, sette meg i insert-modus, og jeg kan skrive inn navnet mitt og fikse det. Tilsvarende, hvis jeg ønsker å endre noe inni sitater er det også en kommando for det. Jeg kan slette ting inni sitater. Ikke mer å måtte dobbeltklikke, bevege hånden over til mus, dobbeltklikk, og deretter skrive noe tilbake igjen Du kan gjøre alt fra tastaturet, uansett hva det er. Eller alternativt, la oss si at jeg har dette bildet tag inni denne ankerkoden. Har dere dekket HTML i klassen ennå? Ja, så kanskje jeg vil slette denne taggen, som normalt hva du trenger å gjøre er at du må bruke musen og nøye markere nøyaktig hva du ønsker å slette og slette det. Men i Vim som er rett og slett DIT, og du kan slette det ut veldig raskt, og jeg skal forklare deg hva alle disse kommandoene betyr, og hvordan du bruker dem i et sekund. Et annet eksempel, har jeg noen kode her, og la oss si at jeg vil rykke inn koden, men jeg vil rykke inn koden bare innenfor parentesene, og jeg kan også rykke inn koden ved hjelp av tre kommandoer bruker i utgangspunktet> iB. En annen ting som er virkelig kult om Vim er noe som kalles visuell blokk redigering. Jeg vet ikke om dere noen gang har ønsket å markere en rektangulær blokk med tekst i koden noen ganger i stedet for å måtte gjøre dette merkelig slags linje ting som spenner over alle forskjellige linjer. For eksempel, i Vim kan du gjøre det. Jeg kan markere rektangler som dette, noe som er ganske kult, men dessuten kan jeg redigere å bruke denne funksjonaliteten. For eksempel, hvis jeg ønsker å gi noen form for prefiks for alle våre navn Jeg kan markere en blokk og deretter legge til noe. Samme måte, jeg kan også markere denne blokken, og velger å slette det, eller kanskje jeg skal markere denne blokken, og endre den til D fordi vi er alle leger. Uansett hva det er, kan du gjøre alle de forskjellige tingene. Til slutt, folding er virkelig kult. Mange IDE har denne hvor du kan brette forskjellige funksjoner ut av syne i tilfelle du ikke ønsker å se dem. For eksempel anta at jeg har denne gjengen av teksten her, og jeg har egentlig ikke lyst til å se den. Jeg ønsker å holde det ute av syne fordi jeg redigerer noe annet i filen. Jeg kan brette den opp slik at det er alt kollapset, og på den måten det er ute av syne, og jeg kan redigere andre ting som er på siden, og dette er virkelig flott. Du kan brette opp funksjoner og whatnot eller kaste opp klasser når du programmerer bare for å holde dem ute av syne når du ikke redigere dem, og senere når du vil se dem kan du åpne dem opp. Og du kan se det bare åpnet alt opp. Tabs, buffere, og vinduer. Vim er ganske kult i det normalt i en rekke tekstredigeringsprogrammer kan du bare redigere én fil om gangen, som i Nano, eller kanskje hvis du bruker Notepad eller Gedit. Jeg har faktisk aldri brukt Gedit veldig mye, men i hvert fall i Notepad + + du kan ha faner, men Vim har begrepet faner, buffere og vinduer. For eksempel kan du åpne opp en haug med nye faner. Du kan se her på toppen Jeg har nå en haug av faner, og jeg kan lukke dem. Videre, det er dette konseptet av buffere, som er ideen om at når du har åpnet en fil den holder seg i live i buffer, og hvis du ønsker å navigere til denne filen veldig raskt du kan navigere til det veldig raskt i kant også, og dessuten, innen en rute du kan også dele din vinduet opp i flere vinduer. For eksempel, hvis jeg ønsker å dele dette vinduet opp i flere vinduer du kan se her at jeg kan ha samme kode to ganger, og jeg kan dele mer og mer og mer, og akkurat nå ser det ikke så bra fordi som standard har jeg standardstørrelsen vinduet være slags stor slik at alle de andre er klemt ut, men normalt når jeg er på min datamaskin, og ikke på denne projektoren Jeg kan ha flere ruter åpner på samme tid, noe som er veldig hyggelig for redigering av flere filer samtidig. Du kan også ha ting som å velge og erstatte, og vi vil faktisk dekke som på seminaret, så jeg skal hoppe over det for nå. Du kan også samhandle med kommandolinjen i alle slags forskjellige måter. For eksempel, hvis jeg har en slags liste her, og jeg ønsker å sortere det- Jeg vet ikke, la oss legge til en annen frukt, drue, og jeg kan markere dette ved hjelp av høydepunktet funksjon og ringe sortere, og det vil sortere det automatisk for meg. Tilsvarende, hvis du kommer til å bli redigere CSS, som jeg antar du sannsynligvis vil være å gjøre for det endelige prosjektet, de fleste mennesker gjør, og kanskje du vil beholde din CSS organisert ved å sortere dem i alfabetisk rekkefølge. Du kan også markere dem og ringe sortere, og det vil sortere dem for deg. Dette er noen av eksemplene på de tingene som Vim kan gjøre, og du vil merke at det viktigste at jeg virkelig ønsker å trekke oppmerksomheten din til er at jeg gjør alt fra tastaturet, og hvis du er i stand til å se hvor mine hender er plassert du vil også se at hendene mine aldri virkelig flytte fra hjemmet rad. Normalt når du redigerer tekst du har som regel å bruke en mus og klikke seg rundt og whatnot, og den slags bevegelse drar deg ned og bortkastet tid, eller kanskje du flytter mellom hjem rad og piltastene, og så du flytter frem og tilbake sånn, som er litt tungvint men også bremser deg ned, og ting er når du får virkelig god til Vim alt du ønsker å gjøre er gjort uten å måtte flytte hendene fra hjemmet rad, noe som er flott. Hold ut, kommer jeg til å åpne opp dette programmet. Det vi går. Nå kan du se hva kommandoer kjører ned nedre høyre vinduet. Alle funksjonene som jeg viste bare at du er ting som er inkludert som standard med Vim, men det er også et stort antall plugins som du også kan bruke å forbedre Vim opplevelse. Hvis du lastet ned konfigurasjonsfilene som jeg inkludert, og det er instruksjoner om hvordan du installerer dem i PowerPoint og også i e-posten jeg sendte ut, jeg har ca 40 plugins installert eller kanskje 30 plugins, og hver eneste en bringer ekstra funksjonalitet til Vim som forbedrer din Vim erfaring. For eksempel, en av mine favoritter er noe som kalles surround.vim, og det i utgangspunktet tillater deg å arbeide med omkring eller avgrense tegn mye lettere. Et eksempel, jeg vet ikke om dere noen gang kode i LaTeX, men LaTeX er et matematisk sats språk som brukes til å lage virkelig hyggelig ser matte, og når du vil ha noe å se ut som matte du pakker det inn i dollartegn, og la oss si at jeg skriver noen ligning som F = ma, og jeg glemte å pakke den inn i dollartegn. Da kan jeg markere dette og pakk den i dollartegn akkurat sånn. Alternativt kan Vim du å slette ting inni koder og slette koder og whatnot, men Vim av natur ikke tillater deg å endre kodene, så for eksempel, har jeg denne div tag, og jeg ønsker å oppgradere til HTML5 og bruke en ny header tag. Jeg kan gjøre endring rundt tag og skriv i overskriften, og den vil automatisk endre det for meg. Tilsvarende, la oss si vi har noe i parentes, og jeg ønsket å endre det fra parentes i parentes eller noe sånt. Jeg kan også endre det virkelig enkelt ved å skrive inn c for endring, s for surround, parenteser. Åh, jeg tror jeg trenger å skrive det raskere. Parenteser og bukseseler eller braketter, og den vil automatisk endre det for meg, som er veldig fint, ellers normalt er det veldig tungvint. Dette er virkelig hyggelig å veksle mellom kanskje enkelt sitat og anførsels strenger eller noe sånt. Det er ett eksempel use case. Det er en plugin som heter Fugitive som integrerer med Git. Jeg gjetter kanskje dere har ikke brukt Git så mye i CS50, men du vil finne deg selv ved hjelp av Git mer og mer og mer, ikke bare i klasser over hele Harvard, men også på arbeidsplasser og whatnot, og normalt må du bytte frem og tilbake mellom kommandolinjen og Vim å samhandle med Git, men det er plugins for å integrere med Git innenfra Vim og også for å gi deg selv ekstra funksjonalitet på toppen av Git. Det er noe som heter NERDTree, som du kan bruke til å utforske de filstrukturer fra innenfor Vim. For eksempel, kan jeg åpne opp NERDTree på høyre ruten, og du kan i utgangspunktet se tilfeldige filer og åpne ikke skatter, ikke se på min skatt. Du kan se på filer og whatnot og åpne andre filer og så videre og så videre. Og jeg vil ikke gå inn i disse andre plugins, så kan vi i utgangspunktet dykke i og begynne å jobbe på Vim, men det er plugins som lar deg comment lettere, plugins som lar deg hoppe mellom filer lettere, plugins som gir deg syntakskontroll innenfra Vim, som er kult, og det gir deg syntakskontroll for de fleste språk rett ut av boksen, ting som rainbow parentes, som faktisk er veldig, veldig kult. La meg gi deg et eksempel på det akkurat nå. La oss se. Her er noen tilfeldige kode som jeg skrev, og du vil merke at brakettene og parenteser er alle farget, og parenteser i samme farge er samsvarende, som er fint og noen ganger forbedrer lesbarheten av koden din. Du har også autofullføring, tabellformatering. Når du har noe du ønsker å få alle kommentarene til å stille opp eller du ønsker å lage en tabell i teksten din, og du vil få alt til å se ut som et hyggelig bord, i stedet for å måtte formatere det manuelt det er plugins som vil formatere det for deg, og så videre og så videre. Listen fortsetter og fortsetter og fortsetter. Jeg kunne tilbringe timer å utforske alle de forskjellige Vim plugins som eksisterer, og det er utrolig hva som finnes der ute. Eventuelle spørsmål så langt? Søt. I så fall kommer vi til å begynne å spille rundt med Vim, og jeg ønsker dere å jobbe med noen Vim med meg slik at du kan få en følelse for det, og jeg kan veilede deg i dine første skritt som arbeider med Vim fordi mange mennesker blir overveldet når de åpner Vim opp, og noen ganger hvis du ikke engang vet kommandoen for å avslutte du kan ikke engang komme ut av Vim, men det er ikke så ille. Du trenger bare noen få minutter av veiledning fra noen som har brukt Vim før eller å lese noen tutorials på nettet, og du vil være på vei på kort tid. Her er noen instruksjoner for å installere Vim hvis du ikke allerede har. Du kan se på disse lysbildene etter presentasjonen hvis du ønsker å installere flere ting. Også disse er noen instruksjoner for installering av mine konfigurasjonsfiler, og du kan også følge disse instruksjonene senere hvis du ikke allerede har. Hvis dere kunne gå til denne linken og laste ned en tekstfil. Linken tar deg til denne tekstfilen, som jeg vil gjerne at du skal laste ned og åpne opp i Vim, og det er en haug med øvelser og whatnot i det at du kan følge rundt med meg og begynner å få litt trening med noen av de grunnleggende operasjoner i Vim. Bra. Mens du åpner det opp jeg kommer til å gi en kort intro til to veldig viktige prinsipper i Vim redigering som er veldig viktig for å forstå før du dykke inn i Vim, og det er modal redigering og operatører og bevegelser. Jeg skal dekke modal redigering først, og deretter vil vi dekke operatører og bevegelser i en liten bit. Den første nøkkelen skillet mellom Vim og stort sett alle andre tekstredigeringsprogrammer av noe slag er at Vim er en modal redaktør, og hva det betyr er når du bruker Vim du kan være i en av mange forskjellige moduser. Det er normal modus, er det innsettingsmodus, det er visuell modus, så videre og så videre, og ting er, dine tastetrykk ta på ulike tiltak, ta på annen betydning, avhengig av hvilken modus du er i. Bare som et eksempel, er normal modus modus du er i når du beveger deg rundt, og så jeg ville bruke nøkkelen J for å flytte nedover, men i insert-modus, bruker du nøkkelen J å faktisk skrive ut J på skjermen, og det er derfor mange mennesker blir forvirret fordi de ikke er vant til å være i forskjellige moduser hele tiden, og så vil de være å skrive ting ut, og du er vant til å ha det du skriver vises på skjermen, men i Vim kanskje markøren beveger seg over alt fordi du skriver rare tegn, og du plutselig får flyttet inn i innsettingsmodus fordi du skrev noen viktige som setter deg inn i insert-modus, og deretter tekst begynner flyr ut, slik at folk blir forvirret av den grunn. Men du må holde styr på hvilken modus du er i, og hvis du ser helt nederst verktøylinjen i Vim det bør være en indikator som forteller deg hvilken modus du er i, som bør være nyttig. Men generelt, de tre hovedmoduser du bør vite om, det er bare sannsynlig 6 eller 7 eller 8 modi eller så, men du tilbringer mesteparten av tiden din i tre. Det første er normal modus. Det er der du tilbringer mesteparten av tiden din. Alle tastetrykk registreres som en slags kommando, og vi vil lære mye av disse kommandoene i løpet av dagen i dag. Den andre modusen er innsettingsmodus, som er der du faktisk skriver ut ting, og innsettingsmodus er i utgangspunktet den modusen du vanligvis brukt til. Du skriver noe, og det bare kommer på skjermen, og visuell modus er noe der du kan gjøre utheving. Du så tidligere der noen ganger jeg ville fremheve tekst og manipulere det på forskjellige måter, og det er et eksempel ved hjelp av visuell modus. Vi vil begynne med de absolutte grunnleggende du trenger for å overleve i Vim, og det er i utgangspunktet disse syv kommandoene rett her. HJKL brukes til å navigere rundt i fila, og de svarer til venstre, ned, opp, og høyre, og du er fri til å bruke piltastene i tillegg, men vi virkelig oppfordre deg til å bruke HJKL så mye som mulig fordi ideen er at mens du redigerer, kan du flytte rundt i dokumentet uten å måtte skifte mellom piltastene og hvor du skriver, noe som er veldig, veldig hyggelig. Du bare ønsker å flytte noen få tegn over. Du trenger ikke å skifte hele hånden over, og det er litt fint å ha det. Noen Vim eksperter faktisk kartlegge deres piltastene til andre funksjoner fordi de allerede har HJKL, og de kan bruke sine piltastene for andre funksjoner i tillegg. HJKL beveger deg rundt mens du er i normal modus. Hvis du ønsker å gå inn i innsettingsmodus og skriver noe du kan trykke i for innsetting modus, og som setter deg i innsettingsmodus, og du kan skrive noe, og du skriver flukt å komme fra innsettingsmodus tilbake til normal modus. Escape alltid sender deg tilbake til normal modus uansett hvilken modus du er i, og hvis du ønsker å forlate du kan skrive inn: wq inn, og måten du kan huske dette er w står for skriving, og q står for slutte, så: wq, og tykktarm kjører kommandoen, og så: wq enter for å kjøre kommandoen lagrer og utganger. Hvis du åpner filen opp vi vil gå gjennom den første øvelsen sammen. Trinn en er å overleve i Vim, og forhåpentligvis dere har alt dette åpent. Bra, og vi har noen enkle øvelser for deg å bli vant til å bruke disse tastene. HJKL egentlig ikke synes intuitivt ved første, og dette er en av de første blokkene som folk har når du bruker Vim er å bruke disse tastene til å navigere rundt. Det er ikke intuitivt, men når du blir vant til det det virkelig integreres inn i ditt sinn, og mange folk ofte finne seg selv ved hjelp av J og K i Word eller også i Chrome, og faktisk folk har skapt denne Chrome plugin kalt Vimium som du kan bruke i Chrome eller Chromium å navigere gjennom Chrome ved hjelp av tastaturet ved hjelp av Vim-som snarveier, så folk er veldig begeistret for det, men gå videre og prøve og bruk HJKL å navigere mellom tallene bare så du kan bli kjent med hvordan disse tingene fungerer. Når du er ferdig med det, kan du også gå og leke seg med denne labyrinten jeg opprettet bare for moro skyld, og du kan liksom følge den stiplede linjen og prøv å ikke krasje inn i veggene og prøve å gjøre det til slutten av labyrinten. Hvis du bruker snarveier i Gmail eller en rekke forskjellige programmer du vil finne at J og K, for eksempel, blir ofte brukt til å bevege seg opp og ned, og som i utgangspunktet kommer fra Vim hovedsak, så du har J og K, og det er veldig fint fordi du kan flytte opp og ned uten å måtte bevege hånden frem og tilbake fra piltastene. La oss nå prøve å gå inn i innsettingsmodus og komme seg ut av innsettingsmodus. Du vil merke at akkurat nå min markøren er en stor, svart boks, og når du går inn i innsettingsmodus bør du finne at det blir en smal markør som du er vant til. Hvis du bruker Vim i terminalen du kanskje ikke synes dette å være tilfelle fordi terminalen støtter ikke denne slags tynn markøren, men hvis du bruker MacVim eller gvim på Windows Da bør du finne at det blir til en markør, og det er en veldig rask visuell indikator. Det er for deg å fortelle om du er i normal modus eller innsetting modus. La oss gå videre og prøve å redigere denne linjen. Fyll den på med din egen informasjon eller hva det er, og hvordan du kan gjøre det på er at du kan gå opp til slutten av den blanke, skriver jeg for å komme inn i innsettingsmodus, og du kan vil gå tilbake og skriv inn navnet ditt, og når du er ferdig å skrive du kan trykke escape for å komme seg ut av innsettingsmodus, og du kan flytte over her, type sette inn for å slette det, skriver flukt for å komme ut av innsettingsmodus, og du kan skrive: w inn for å lagre filen. Du kan skrive inn bare: w for å lagre filen. Du kan skrive inn bare: q for å avslutte uten å lagre, eller du kan skrive inn: wq for å lagre og avslutte. Riktignok ønsker vi ikke å slutte ennå, så du kan skrive inn: w. Og kanskje det virket litt ineffektiv i første fordi å flytte til det stedet du måtte skrive J en haug med ganger, Kanskje jeg en haug med ganger for å komme til det punktet, og du må trykke backspace en haug med ganger, og det virket veldig ineffektiv mens normalt ville du sannsynligvis bevege musen over det, dobbelklikk og begynner å skrive, og selvfølgelig, tingen er, når du først begynner med Vim, og du bare vet disse grunnleggende kommandoer, ja, vil det være litt tregere, men snart du lære noen mer kraftige kommandoer, som vil tillate deg å flytte over dokumenter mye raskere, og du trenger ikke å ha dette svært tungvint bruk av repete Js og gjenta Ks og Ls, og så videre og så videre. Eventuelle spørsmål så langt? Solid. Tilbake til PowerPoint. Nå kommer vi til å introdusere noen flere kommandoer for avanserte bevegelser. Du har opplevd å måtte skrive kanskje L mye eller H mye, og her er noen flere kommandoer du kan bruke til å bevege seg rundt raskere. Anta at markøren er på O borte i noen i "Dette er noe av teksten," og her er fem flere kommandoer du kan bruke til å flytte over hele linjen lettere. Så ^ og $ flytte deg til begynnelsen og slutten linje, og på et tidspunkt når du lærer regulære uttrykk eller andre ulike ting du vil finne at disse slags konvensjoner er svært vanlig. Den ^ refererer generelt til begynnelsen av linjen. The $ refererer vanligvis til slutten av linjen. Dette er veldig lett å huske, og på samme måte, b, e, og w, de er enkle å huske så godt fordi b tilsvarer sikkerhets eller begynnelsen, e svarer til enden, som er enden av ordet, og w tilsvarer det neste ordet, så w for ord. Og hvis du fortsette å skrive e eller fortsette å skrive w du legger merke til at du kan hoppe mellom ord, og det er mye raskere enn bare å skrive l.. Nå er det neste Operator-Motion Model. Dette er faktisk en av de viktigste årsakene til at Vim kan være så kraftig, og det er fordi du kan faktisk komponere ulike elementer til mer kraftfulle funksjoner, så generelt når du gjør noe i Vim du kan tenke på det som kombinere en operatør med en bevegelse. Så langt har vi bare jobbet med bevegelser, som HJKL. De beveger deg rundt, og deretter b og w, de også bevege deg rundt forskjellige måter, men vi har ikke gått ennå til å kunne slette ting eller forandre ting eller whatnot, og når du kombinerer operatører med bevegelser så er du i stand til å ha mye kraftigere virkning, slik at f.eks hvis jeg ønsket å slette to ord, kan jeg bruke d for sletting operatør, og jeg kan legge til en to for å vise at jeg ønsker å slette to ord, og da inkluderer jeg en bevegelse. Jeg kunne inkludere w å si slette to ord. Jeg kunne bruke noe sånt som J å si slette nedover to ganger og slett to linjer under meg. Jeg kunne si D2B å slette bakover to ganger, og det er enda flere bevegelser enn de som jeg har vist her å virkelig, virkelig gjøre Vim redigering mye kraftigere. Dette er noen av de mest populære og de mest vanlige operatører og er ganske lett å huske også. D for å slette, c for endring. C er i utgangspunktet akkurat det samme som endring bortsett fra at når du bruker c du automatisk bli satt i innsettingsmodus etterpå. Normalt når du bruker sletting du bruke den fra normal modus, og etter at du sletter noe du bo i normal modus. Men hvis du ønsker å endre noe, kan du bruke c å slette noe, og deretter umiddelbart gå inn i innsettingsmodus slik at du kan begynne å skrive og fikse noe. Y er for prøver å lure. Det er i utgangspunktet Vim begrep om kopiering. For eksempel, hvis jeg ønsker å kopiere de neste to ord jeg kan gjøre y2w eller noe sånt, og v er for å fremheve, egentlig. Og også hva som er virkelig kult er hvis du skriver en operatør to ganger det vil fungere på en hel linje, så hvis jeg ønsker å slette en hel linje Jeg kan skrive dd å slette hele linjen, eller hvis jeg ønsker å kopiere hele linjen jeg kan bruke åå eller noe sånt. La oss prøve dette litt mer. Det er en øvelse her for en avansert bevegelses operatør samt og enda noen andre ting jeg ikke kommer til å dekke i PowerPoint i dag, men du kan føle deg fri til å se over dem senere og leke seg med dem og bli kjent med dem. Operatører og bevegelser. For eksempel anta at det er disse to ordene du bare ønsker å slette i setningen. Hva du ønsker å gjøre er at du ønsker å være sikker på at din markøren er i begynnelsen av det første ordet du vil slette, og du kan skrive inn D2W, og det vil slette disse to ord til deg. Og ved hjelp av denne eksakte kommandoen, D2W, kan virke litt tungvint og meningsløst, men det er ment å uttrykke ideen at du kan komponere disse forskjellige tingene, og også i tilfelle du tilfeldigvis være i den situasjonen, så kan du ende opp med å bruke dw eller D2W, som jeg bruker av og til. Dd og cc jeg bruker mye oftere fordi du kan handle på hele linjer. For eksempel, la oss si jeg har denne tilfeldig liste her, og kanskje jeg ønsker å slette den linjen som sier Huskies fordi det ikke passer, bare fordi, og jeg vil ikke at det å gå inn i innsettingsmodus etterpå. Jeg ønsker å slette den, og da jeg kunne skrive dd, og som vil slette hele linjen. Men la oss si at nå er det dette andre linje som jeg ønsker å slette, men jeg ønsker også å fikse det og skrive om det, og da vil jeg prøve noe som cc, og som sletter hele linjen, men setter meg i innsettingsmodus, som du kan se, og jeg kan fikse det derfra. Og det er mange, mange forskjellige måter du kan kombinere operatører og bevegelser, og som du bruker Vim mer og mer du lære mer om ulike måter du kan bruke disse kommandoene, og du vil bli bedre og bedre. Awesome, nå her er noen andre diverse kommandoer som også er svært, svært ofte brukt og vil også hjelpe deg å bli bedre på Vim. For eksempel snakket vi om små bokstaver v for visuell utheving. Vi kan også bruke store bokstaver V for visuell linje utheving. På den måten kan du markere hele linjer på en gang mye lettere. Du kan bruke o når du er i normal modus for å i utgangspunktet sette inn en ny linje under linjen du er nå, og sette den inn i innsettingsmodus for å begynne å skrive. Du kan bruke liten x for å slette tegnet som er under markøren. Du kan også bruke u å angre, som er slags hyggelig, og du kan bruke kapital A til føye til slutten av gjeldende linje, så kanskje markøren er et sted på linjen, og du ønsker å legge til slutten av linjen. Deretter kan du skrive inn kapital A til umiddelbart hoppe til slutten av linjen og gå inn i innsettingsmodus, slik at du kan legge til slutten av linjen. Jeg tror jeg har noen flere øvelser for det som vi kan prøve ut. Egentlig, nei, jeg gjør ikke det. Ikke for dem. Men vi har noen flere øvelser for den neste delen som vi får se. Men disse kan du prøve ut selv også. For eksempel, hvis du skriver inn i vanlig v, vil du få regelmessig utheving som du er vant til å like dette. Hvis du skriver inn kapital V, kan du få full linje utheving sånn, eller hvis jeg skriver i o det i utgangspunktet vil åpne en ny linje for meg, som er litt fint. X Jeg kan bruke til å slette tegn på markøren. Jeg kan trykke på x en haug med ganger og slette ting. Jeg kan trykke u å angre alt det der. A, kan jeg skrive inn A til umiddelbart gå til slutten av linjen, og jeg har også tatt med noen andre fine taster at du også kan se på etter presentasjonen for å lære noen andre kommandoer. [Student] Hva er erstatning om? [Brandon L.] Erstatning er også veldig kult og i utgangspunktet hvis du går et sted- har du noen gang-folk egentlig ikke bruker det så mye lenger i disse dager, men har dere noen gang sett i Microsoft Word hvis du skriver innsats du plutselig gå inn i denne rare modus der hver enkelt tegn du skriver i hovedsak erstatter den neste tegn? Jeg vet ikke om dere har sett det. Dette ligner på det. For eksempel, hvis jeg ønsker å overskrive hva jeg har for tiden en eller annen grunn Jeg kan skrive i hovedstaden R, og jeg skal nå være i bytte modus, som du kan se nederst i venstre. Hvis jeg skriver ting det overskriver ting, og jeg kan også backspace, som er litt kult, og jeg kan angre det. Jeg bruker ikke det så ofte, men nå og da blir det praktisk. La oss snakke om tekstobjekter, som er en av mine favoritt ting om Vim, ærlig. Tekstobjekter er i utgangspunktet denne oppfatningen av å definere en slags klump av tekst inni tekstfilen, og jeg skal gå over disse tastene først, og så skal jeg gi deg noen demonstrasjoner for deg til mer fullt ut forstår hva det betyr. W refererer til et ord, som et tekstobjekt som et ord, så noen ord som du vanligvis kjenner det, og hvis det er tegnsetting som er ved siden av ordet da det ikke vil inkludere tegnsetting generelt. Men for eksempel, hvis du ønsker å inkludere tegnsetting eller annen grunn eller du gjør noe som ikke er engelsk og du ønsker å inkludere alle tegnene som er avgrenset med mellomrom du kan også bruke kapital W for å få alt som er omgitt av mellomrom. Du kan også bruke parenteser for å referere til et tekstobjekt som er inne i et sett med parenteser. Du kan gjøre det samme med hakeparenteser, vinkelparenteser, bukseseler, og sitater så vel, og til slutt, du kan også bruke t å referere til noen tag. La meg vise deg hvordan det faktisk spiller ut. For eksempel, er dette min aller første eksempel i min presentasjon. Det er noen ord i denne setningen som jeg ønsker å endre, og vi snakket om W blir brukt som en bevegelse, men du kan også bruke den som et tekstobjekt som så. For eksempel, en måte jeg kunne endre Barack navn eller utgangspunktet endre det er jeg kunne gå til begynnelsen av dette ordet og skriv inn c for endring og w for ord, og som vil slette hele ordet og sette det inn i innsettingsmodus. Men det er veldig irriterende for meg å måtte gå til begynnelsen av ordet hele tiden. Det er veldig irriterende. Jeg ønsker ikke å måtte gjøre det. Jeg kan faktisk være hvor som helst inne i hans navn og skriver i CIW, og jeg står for indre, så hvis jeg skriver i CIW det står for endring i et ord, eller med andre ord, endre ordet jeg er for tiden inne, og det vil gi deg nøyaktig samme effekt. Du kan fikse det. Tilsvar, kanskje jeg har noen sak som dette hvor en eller annen grunn er det noen skilletegn eller noe sånt, eller er det noen tegnsetting, og jeg ønsket å slette hele greia. Hvis jeg skriver i CIW vil den slette hva som er inni disse skilletegn, men jeg ønsker å få hele greia som er omgitt av mellomrom, slik at jeg kan bruke CIW å slette hele greia. Jeg skal skrive i fem, gjør det samme, og skriv inn seks. Tilsvarende, hvis jeg ønsker å endre noe som er inni parentesen Jeg kan skrive inn ci) for å slette alt som er inni parentesen og deretter fylle i hva jeg ønsker å gjøre, som int argc, uansett hva du ønsker å gjøre, og på samme måte, det samme med anførselstegn. Jeg kan fikse tekst som er inne i anførselstegn, og jeg kan også endre ting som er inne i koder. Betyr det fornuftig? En annen ting du kan gjøre er at du ikke trenger å bruke c. Du kan også bruke d hvis du vil slette det som er inni disse kodene. Hvis jeg ønsker å slette teksten inne en kode kan jeg bruke dit for å slette denne koden. Jeg kan også bruke vit å markere hva som er inni koden, for eksempel. Den andre tingen er stedet for å bruke jeg i midten du kan også bruke en, som står for alle, så husk hvis du bruker jeg det vil referere til tekstobjekt eller bruke en tekstobjekt som er inneholdt inne i skilletegn, men hvis du bruker en det vil inkludere at teksten så vel som skilletegn i seg selv. For eksempel, hvis jeg ønsker å fremheve denne teksten og den omkringliggende tag Jeg kan bruke vat, v for visuell høydepunkt, en for alle, og deretter t for taggen. Du kan gjøre noe sånt også. Kanskje jeg vil slette denne google.com med anførselstegn rundt det også, og jeg kan bruke noe sånt da "for å slette alt dette, for eksempel. Eventuelle spørsmål så langt? Jeg innser at jeg dumping på deg mye Vim kommandoer på en gang, og dette er i utgangspunktet fordi jeg ønsker å utsette deg for alle de forskjellige kommandoene og gi deg en innføring i hva disse kommandoene gjør i Vim. Men hva som kommer til å skje er når du går tilbake du er nødt til å sakte plukke opp disse kommandoene en etter en. Du ønsker ikke å overvelde deg selv, fordi det er for overveldende. Hvis du ønsker å plukke opp Vim hva du må virkelig gjøre er starter med den første grunnleggende sett, og jeg har brutt den opp i leksjoner for deg som gjør det enklere for deg å følge, og prøve og mestre hvert sett med kommandoer en for en, en av gangen. Det er for mye å gjøre alt på en gang, så hva du bør gjøre når du går tilbake er gå til den første leksjonen, som er HJKL, innsetting modus, flykte inn i normal modus, og lagre og avslutte, og det er alt du egentlig trenger for å overleve i Vim, og får veldig, veldig komfortabel med det. Og etter et par dager når du er veldig komfortabel med at du bør gå videre til mer avanserte bevegelses operatører, de mer avanserte bevegelser, og videre til operatørene og så videre og så videre. Jeg vet at jeg skal gjennom mye, men jeg ønsker å få deg utsatt for en rekke forskjellige ting. Men i tilfelle du er klar for utfordringen, kan jeg vise deg hvordan du kan sette alt dette sammen ved hjelp av det meste av hva vi nettopp har lært i dag, og du kan også følge med hvis du vil, men jeg har laget noen tilfeldig trening. Anta at vi har en slags liste som dette hvor du har disse blokkene med folks navn, hus, år, og konsentrasjoner og whatnot, og du vil legge til en ny oppføring for deg selv. Hva er den beste måten for deg å gjøre dette? La oss gjøre det slik. Hvorfor ikke vi først markere denne blokken. Du kommer til å velge det, og vi kan trykke y å dra heller, så nå kan vi i utgangspunktet kopiere og lime inn denne malen først uten å måtte skrive hele greia fra scratch. Nå skal jeg trykke på j ned en haug med ganger for å gå ned, og jeg skal trykke p å lime det. Kanskje jeg skal legge til noen ekstra linjer for en plass, og la oss si at nå vil jeg endre navnet ditt til noen. Da kan jeg gå her og skriv inn c2w som før til å endre det navnet. Bob Jones, hvem vet. Kanskje hvis jeg ønsker å endre huset jeg kan gå inn i midten her og skriv inn CIW og sette Cabot House. Her kan være et eksempel på hvor det kan være lurt å vurdere å bruke utskifting modus for å endre din konfirmasjonen år hvis du vil, eller vi kan også bruke CIW også. Det spiller ingen rolle. Kanskje du ønsker å endre din store. Og det er hva du gjør. Og kanskje jeg vil gi deg en demonstrasjon av hva jeg kan gjøre hvis jeg var-hvis du fortsetter å lære mer avanserte kommandoer i Vim fordi vi knapt skrape overflaten her, og jeg kunne gjøre denne typen redigering enda raskere enn jeg har vist deg her fordi jeg vet flere kommandoer som jeg ikke har fått en sjanse til å vise deg for i dag. For eksempel, hvis jeg ønsker å fremheve dette jeg kan gjøre det sånn, flytte ned. Jeg har lagt min egen kartlegging til utgangspunktet automatisk markere ting for meg og jeg kan-jeg vet ikke. Jeg mener, er dette bare prøver å vise deg at du kan virkelig, virkelig begynne å redigere ting raskere, spesielt når du har alle disse ulike felt, og normalt hva kan du gjøre er liksom klikke og fremheve og deretter skrive. Du kan gjøre alt på en gang, kopiere og lime inn, beveger seg opp og ned mellom filen, bare avgrense ting, formatering ting. Alt dette kan gjøres mye, mye raskere i Vim. Bare en siste liten ting som jeg tror kan være veldig hyggelig, som er å finne og erstatte. De av dere som har brukt Gmail snarveier vil du også vite at hvis du skriver inn / det sender deg til søkeboksen, og i en rekke forskjellige applikasjoner generelt vil du finne at skråstrek eller kanskje kontrollere skråstrek eller noe å gjøre med skråstrek vil sette deg inn i en slags søkemodus, og som også i utgangspunktet kommer fra Vim hovedsak fordi skråstreken operatør eller slash-kommandoen lar deg legge inn en slags streng som du kan bruke til å søke i dokumentet. Du kan n og kapital N for å gå til neste eller forrige forekomst, og du kan også bruke noe lignende for å søke og erstatte i dokumentet. Jeg skal gi deg en demonstrasjon på hva som kan gjøres. Kanskje hvis jeg ønsker å finne alle forekomster av strengen Yank i dette dokumentet Jeg kan skrive inn / rykk, som du kan se nederst i venstre hjørne, og når jeg skriver inn det fremhever alle forekomster. Jeg kan bruke i utgangspunktet n å hoppe frem og tilbake mellom alle de forskjellige instanser, og la oss anta at jeg ønsker å søke og erstatte Yank med noen tilfeldige ord det er også i dokumentet. Jeg kan trykke på: å begynne å skrive i en slags kommando innen Vim, noen kommando som er mer sofistikert enn å flytte rundt eller slette eller noe sånt. Jeg vil skrive inn tegn% å henvise at jeg ønsker å bruke denne substitusjon kommandoen på hele dokumentet. Skriv inn s for substitusjon. Dette kommer fra PEARL hovedsak. Og dette neste kommando er en ganske standard kommando som du finner i PEARL stedet og i andre programmeringsspråk som du vil sannsynligvis begynne å lære så du gjøre mer informatikk, og jeg kan i utgangspunktet bruke / til å skrive en /, skriv inn ordet jeg ønsker å finne og erstatte og skriv deretter inn en annen / og skrive inn det ordet jeg ønsker å erstatte det ordet med. Hvem vet, kanskje nyancat. Jeg gjør det, og da vil du se at alt fikk erstattet. Men du vil merke at det er dette ordet her. For en eller annen grunn noen av våre tilfeller av yank blir erstattet, men ikke alle, og det er fordi måten denne typen språk er skrevet ikke bare i Vim, men andre steder er at når du kjører substitusjon kommandoen det vil bare erstatte den første forekomsten av ordet i hver linje, så hvis jeg vil faktisk erstatte alle forekomster av ordet på hver enkelt linje så jeg må gjøre det samme, men legger ag flagg helt på slutten, som står for global, og så vil det faktisk erstatte alle forekomster. Og når du lærer de regulære uttrykk, det er faktisk en CS50 seminar på regulære uttrykk, så hvis du er nysgjerrig på regulære uttrykk du kan også ta det seminar og lære mer. Men for eksempel, la oss si jeg har en liste med navn som dette, og jeg ønsker å omorganisere det, så i stedet for å ha etternavn, komma, fornavn Jeg ønsker å omorganisere det slik det står fornavn, mellomrom, etternavn. Du kan faktisk bruke denne kommandoen her egentlig gjøre det for deg, slik som du kan se her Vi starter med en s, som betyr at vi ønsker å gjøre et søk og erstatt, og så la jeg til en som heter flagg \ v, som er noe som heter dette magiske flagg i Vim som lar deg gjøre vanlige uttrykk lettere. Så fra det vi i utgangspunktet matche for noen enkelt linje som er av form et sett med ord, komma, mellomrom, og et sett av ord eller et sett med bokstaver. \ W + betyr i utgangspunktet ett eller flere tegn, og parentesene benyttes for å fange opp disse grupper slik at jeg kan referere til dem senere. Som du kan se, når disse fangst to blokker av ord som er atskilt med et komma, mellomrom så hva vi ønsker å erstatte den med er at jeg bruker \ 2 og \ 1 å se tilbake på det som var blitt tatt til fange i selve find-kommandoen, og så \ 2 refererer til det som er inneholdt i det andre settet med parenteser \ En refererer til det som er inneholdt i det første settet med parenteser, og som du kan se, jeg setter to før en atskilt med et mellomrom å prøve og flytte fornavn før etternavn. Betyr det fornuftig? Og hva jeg kan gjøre er at jeg kan skjule disse først så jeg bare kjøre denne kommandoen på disse linjene, og så skal jeg skrive inn denne kommandoen. Du kan se den gjør akkurat som delt. Og igjen, dette er knapt skrape overflaten, og hvis du går til det vanlige uttrykket seminar så jeg er sikker på at du vil lære mye mer forskjellige ting du kan gjøre med regulære uttrykk, og dette i utgangspunktet begynner å antyde hva du egentlig kan gjøre med Vim hvis du virkelig begynner å bli en mester i det. Kanskje du ønsker å refactor noe, og du vil finne alle forekomster av noen funksjon som følger en slags navnemønsteret. Du ønsker å endre måten som er oppkalt etter. Du kan skrive en slags kommando som dette for å gjøre det for deg, og det er den slags fleksibilitet du kan få innen Vim at du bare ikke kommer til å få i andre tekstbehandlingsprogram. Som i utgangspunktet dekker alle de tingene jeg ønsket å lære deg i dag i dagens seminar, men igjen, jeg virkelig ønsker å understreke at hvis du ønsker å plukke opp Vim det er sant at det er en noe høyere læringskurve i begynnelsen. I begynnelsen vil du være litt mindre produktive enn du sannsynligvis ville være noe annet, men hvis du holder deg med det i løpet av noen dager eller et par uker, avhengig av hvor fort du lærer, du vil bli mye, mye raskere, og jeg prøvde å gi deg en demonstrasjon på hva Vim er i stand til, men jeg gjorde egentlig ikke får en sjanse til å vise deg hva skjer når jeg normalt, for eksempel, i klassen jeg skriver i mine notater med Vim. Det er fordi jeg kan jobbe så mye raskere i Vim enn jeg kan med alle andre program. Det er bokstavelig talt en 2 eller 3 gang produktivitetsøkning i Vim forhold til andre programmer, ikke bare med hastigheten på tekstredigering, men også i måten kan jeg flytte rundt i dokumentet og måten jeg kan få tilgang til andre filer på datamaskinen min og hoppe mellom dem og så videre og så videre. Det er bare en veldig, veldig stor produktivitet boost. Men når du lærer, vil du sørge for at du lærer en ting om gangen, og prøve ikke å overvelde deg med for mange forskjellige kommandoer fordi det finnes en rekke kommandoer og en rekke ulike snarveier kan du lære i Vim. Du ønsker å plukke opp litt om gangen, og gjennom årene gradvis samle en større og større forståelse av Vim. Hvis du ønsker å fortsette å lære mer, dette er noen av de mer avanserte emner du kan fortsette å lære om, og selv dette skraper knapt overflaten. Her er noen populære plugins du kan føle deg fri til å sjekke ut og Google dem og leke seg med dem hvis du vil, og bare se hva slags plugins er der ute. Og så på slutten av denne PowerPoint, inkluderer jeg en haug med lenker til ulike ressurser kan du bruke til å lære av. Her er en haug med forskjellige linker du kan bruke til å komme i gang med Vim. De har forskjellige tutorials og whatnot, og til slutt, dette er noen mer avanserte ting du kan bruke å også sjekke ut også, noen skjerm kast og noen mer avanserte teknikker i Vim og også noen ulike deler av kildekoden kan du slå opp på GitHub bare for å se på andre folks konfigurasjonsfiler eller å se på plugins i Vim og så videre og så videre. Det er alt jeg har for deg. [CS50.TV]