Vi Editor: Hvorfor programmerere synes denne gamle redaktøren er fremdeles fantastisk

Formidling: Din støtte hjelper med å holde nettstedet i gang! Vi tjener et henvisningsgebyr for noen av tjenestene vi anbefaler på denne siden.


Vi er en tekstredigerer som opprinnelig ble opprettet for Unix-operativsystemet. I stedet for menyer bruker vi kombinasjoner av tastetrykk for å utføre kommandoer. Som sådan er det ikke behov for bruk av mus eller pekeplate – alt gjøres utelukkende med tastaturet.

Lær Vi Editor

Kort historie

Vi sporer opphavet til den tidligste kommandolinjeditoren som brukes i Unix-systemer kalt ed. Ed jobbet ekstremt bra med teletyper, men var ikke egnet for visningsterminaler. Mange mennesker vurderte å være uvennlige og tok det på seg å lage en bedre versjon. Blant dem er George Coulouris, den gang en foreleser ved Queen Mary College, som opprettet em, redaktøren designet for visningsterminaler.

I 1976 besøkte han UC Berkeley og viste dem til forskjellige mennesker. Reaksjonene var blandede, men et par studenter, Bill Joy og Chuck Haley, var imponert over dem og brukte det som base for deres egen redaktør som ble kalt en som deretter ble utvidet til å lage ex versjon 0.1. Etter at Haley forlot Berkeley, redesignet Joy redaktøren i 1977, da han la til en visuell modus på fullskjerm til ex, slik at tekst kan vises på en fullskjerm i stedet for bare en linje om gangen.

Ex 1.1 ble offisielt inkludert i den første BSD Unix-utgivelsen i 1978 og den ble kjent som vi etter utgivelsen av ex 2.0 som en del av den andre Berkeley Software Distribution i 1979 da redaktøren ble installert under navnet “vi” fordi den automatisk tok brukere rett inn i ex’s visuelle modus.

vi Kloner

Tatt i betraktning det faktum at kildekoden for den opprinnelige vi-en ikke var fritt tilgjengelig før i 2002, ble mange kloner av vi-redaktøren opprettet. De hadde lignende utseende og funksjonalitet, men ble skrevet helt fra bunnen av. Dette gjorde det mulig å legge til flere funksjoner og port redigereren til andre operativsystemer.

Listen over vi-kloner inkluderer calvin, elvis, elwin, lemmy, nvi, stevie, vile, viper, BusyBox og xvi. Den mest populære klonen er imidlertid Vim, som er en forbedret versjon av vi-editoren som er distribuert med de fleste UNIX-systemer.

Vim

Vim står for Vi IMproved, og den inkluderer enda flere funksjoner enn vi, noe som gjør den til en favoritt blant mange programmerere. Funksjonene inkluderer (skriptbar) syntaksutheving, musestøtte, grafiske versjoner, visuell modus, nye redigeringskommandoer og utvidelser for ex-kommandoer. Det følger med nesten hver Linux-distribusjon og leveres med hver kopi av Apple MacOS.

På grunn av det faktum at noen vi-funksjoner mangler fra Vim, har den en vi-kompatibilitetsmodus, noe som gjør at den blir strengere i samsvar med vi. Denne funksjonen kan styres av det: angi kompatible alternativet.

Vim kan tilpasses på mange måter – inkludert brukergrensesnitt og grunnleggende funksjonalitet. Du kan definere tilpassede makroer for å automatisere sekvenser av tastetrykk, angi interne brukerfunksjoner og dra nytte av mange plugins som gir Vim en ny funksjonalitet. Pluginsene er skrevet på Vims interne skriptspråk kalt vimscript. Den støtter også skripting ved å bruke Lua, Perl, Python, Ruby, Tcl og Racket.

Vi Grunnleggende

Denne delen vil ta deg gjennom alt det grunnleggende i vi, slik at du kan begynne å redigere dokumenter produktivt med en gang. Men husk: det er mye mer å vite, og alt du lærer vil gjøre deg mer produktiv.

Hva gjør Vi?

Med vi kan du redigere tekstfiler med bare tastaturet. Dette inkluderer XML, TeX, HTML og programmeringsspråk, men ikke binære filer som Word eller OpenDocument. For å redigere en fil skriver du inn kommandolinjen:

vi filnavn

Når vi kjører, tar det over terminalvinduet. Hvis filen allerede eksisterer, vil begynnelsen av den fylle ut skjermen. Filens navn vises på den siste linjen. Hvis den ikke allerede eksisterer, vil skjermen fylles med tomme linjer, bortsett fra en side i venstre marg. Den nederste linjen vil vise “[Ny fil]” etter navnet.

Til å begynne med er du i kommandomodus. Dette er en av vi tre hovedmodus. I kommandomodus er et hvilket som helst tastetrykk en kommando. Du kan starte med å trykke “i.” Du er nå i insert-modus, som ordet “- INSERT -” nederst i vinduet minner deg om. Alt du skriver vil bli satt inn som tekst. Trykk på tasten for å komme tilbake fra innsats til kommandomodus.

Den tredje modusen er siste linjemodus. Du kommer til det fra kommandomodus ved å skrive kolon (:) -tasten. Mens du er i siste linjemodus, skriver du inn en kommandolinje nederst i vinduet. Den kjøres bare når du trykker. For å lagre det du har satt inn, skriver du inn “: w” (kolon etterfulgt av små bokstaver w og). Det vil skrive filen ut. Hvis det er en ny fil, må du oppgi et filnavn. Dette gjøres ved å legge inn “: w filnavn” etterfulgt av. Etter dette vil du returnere deg til kommandomodus.

Alle tastetrykk i vi er store og små bokstaver! Hvis du ved et uhell lar lupper låses på, kan rare ting skje.

Navigasjon

Denne artikkelen beskriver bare noen grunnleggende vi-kommandoer. For mer avansert informasjon, se på vim-dokumentasjonen.

Liten skala bevegelse

Du kan flytte markøren med piltastene, eller med “j” (ned), “k” (opp), “h” eller (venstre) og “l” eller (høyre). Det er best å unngå piltastene av flere årsaker. Det største er at fingrene dine ikke trenger å forlate hjemmeposisjonen. En annen er at de ikke alltid er tilgjengelige – hvis du finner en gammel versjon eller en der terminaltypen ikke er riktig angitt. Til slutt, hvis du oss: kartfunksjonen (se nedenfor), er det lettere å bruke bokstavkommandoene.

Du kan fremme ett ord med “w” eller gå tilbake et ord med “b.”

Storskala bevegelse

Hvis du skriver “0”, kommer du til begynnelsen av linjen og “$” til slutten. Tilsvarende vil “: 0” ta deg til begynnelsen av filen, og “: $” tar deg til slutten av den. Dette er en del av et generelt system der “: num” tar deg til linjenummer. Så “: 101” vil ta deg til linjenummer 101. (Hvis det er mindre enn 101 linjer i filen, tar den deg til slutten av filen.)

Vi lar deg vanligvis gjøre viktige ting på mer enn en måte. Så du kan gå til en bestemt linje med “Gnum” der num er linjenummeret. Det har fordelen av å kreve en mindre karakter. Men det har ulempen å ikke være i samsvar med “0” og “$”, slik at “0G” ikke tar deg til begynnelsen av filen og “$ G” ikke tar deg til slutten.

To kritiske navigasjonskommandoer er ctrl-b for å gå tilbake til en side, og ctrl-f for å gå videre en side.

Legge til og endre tekst

Du har allerede sett “i” -kommandoen for å sette inn tekst. Det vil plassere det du skriver fra på markørposisjonen. Kommandoen “a” vil sette inn tekst som starter på tegnet etter den du er på. Så det er lett å tenke på disse to kommandoene er å sette inn (i) og legge til (a). Hvis du husker disse, kan du enkelt huske de versjonene av disse kommandoene med store bokstaver. Kommandoen “A” setter inn tekst på slutten av linjen, og “jeg” -kommandoen setter inn tekst på begynnelsen av linjen. Kapitalen “A” -kommandoen vil legge til det du skriver på slutten av linjen.

Hvis du skriver “o”, åpnes en ny linje etter markørlinjen og lar deg begynne å skrive inn den. Hovedstaden “O” vil gjøre det samme før markørlinjen.

Slette tekst

Slettingskommandoene er svært allsidige. Å skrive “dw” vil slette et ord, og begynne på markørposisjonen. Du kan sette et nummer foran det for å slette så mange ord. Så “3dw” vil slette tre ord. Å skrive “d $” eller “D” vil slettes til slutten av linjen. Kommandoen “dd” vil slette hele linjen, og “10dd” vil slette ti linjer. Å skrive “d” (bokstaven d etterfulgt av et mellomrom) eller “x” vil slette et enkelt tegn. Å skrive “20x” vil slette opptil 20 tegn, men vil ikke gå forbi den gjeldende linjen.

Endre tekst

Kommandoen for å endre tekst er “c.” Den fungerer nøyaktig det samme som “d” -kommandoen, bortsett fra at den deretter går inn i insert-modus der teksten ble slettet. Så 3cw vil slette tre ord og erstatte dem med hva du skriver til du treffer .

Ikke få panikk hvis du har slettet feil ting. Kommandoen “u” vil angre den siste endringen du har gjort. I de fleste implementeringer kan du legge den inn flere ganger for å angre de nylige endringene. Hvis du angir en gang for mange, vil ctrl-r gjøre om det du bare angrer.

En av de kraftigste tingene i vi er “.” kommando. Dette gjentar den siste endringen din. Så hvis du bare brukte “3cw” for å endre tekst, skriver du inn “.” vil føre til de neste tre ordene (uansett hvor du er) til hva du endret de tre siste ordene til. Eller, hvis du bare har slettet ti linjer med “10dd”, inn “.” vil slette de neste ti linjene. Dette er også veldig nyttig med kommandoen “: kart”.

Lim inn tekst

Du kan flytte tekst fra et sted til et annet ved å slette og lime inn. Kommandoen for å lime inn er “p” for å lime inn etter markøren eller “P” for å lime inn før den. Hvis du sletter en eller flere fulle linjer med tekst, vises teksten under (med “p”) eller over (med “P”) den gjeldende linjen.

Yanking Text

Kommandoen “y” for “yank” kopierer i stedet for å slette. Den setter teksten i en midlertidig buffer som du kan lime andre steder, en eller flere ganger. Alternativene er som de som skal slettes, bortsett fra at “yy” brukes til å trekke en hel linje. (Dette tilsvarer “dd” for å slette en hel linje.)

Vær forsiktig. Hver gang du hanker eller sletter, går teksten i den navngitte buffer, som er som utklippstavlen i andre applikasjoner. Den erstatter den forrige navngitte bufferen. Hvis du vil holde teksten litt lenger, kan du bruke en av de 26 navngitte bufferne. Du spesifiserer den ved å gå foran bokstaven med et dobbelt sitatkarakter. Hvis du vil trekke fire linjer i bufferen som heter “c”, skriver du ‘4 ″ cyy’ (sitert i enkle anførselstegn bare for klarhet). For å lime den inn bruker du det samme tegnet med dobbelt sitat og bufferbokstav før lime-kommandoen. Så hvis du vil lime inn de fire linjene vi nettopp kopierte til “c” -bufferen til linjen under den gjeldende, ville du bruke “” cp-kommandoen.

Søker

For å søke etter tekst skriver du “/” etterfulgt av søkestrengen og. Den vil finne den neste kampen etter markøren, og vikle seg rundt til toppen om nødvendig. Hvis du vil søke bakover, skriver du “?” i stedet for “/.”

Sak

Søk er som standard store og små bokstaver. For å gjøre et lite søksensitivt søk, start søkestrengen med “c”. Så hvis du bruker “/ cthis” etterfulgt av, vil vi finne “dette” uansett kapitalisering. Du kan også endre standard ved å legge inn “: set ignorecase” etterfulgt av. Du kan også oppgi “: set ic.” Hvis du vil gå tilbake til små og små bokstaver, vil du oppgi “: set noignorecase” eller “: set noic.”

Du kan gjenta det siste søket med kommandoen “n”. Hvis du ønsker å søke i motsatt retning, bruk “N” -kommandoen.

Vanlig uttrykk

Søkestrengen er faktisk et vanlig uttrykk. Dette lar deg søke etter mønstre, men visse tegn fungerer ikke som bokstavelige treff. Som et enkelt eksempel, vil du finne “tre,” “vind” eller “w00d” ved å søke etter “w..d”. Dette er fordi “.” i et søk samsvarer med alle tegn. Hvis du vil søke etter “.” legger du inn en skråstrek før den. Så du vil gå inn i “/.” kommando.

For mer informasjon om vanlige uttrykk, sjekk ut artikkelen vår, Regular Expressions Primer and Resource.

Arbeide med filer

Som allerede nevnt vil “: w” lagre filen. Hvis du vil lagre den i en annen fil, skriver du “: w newfilename.” Når du er ferdig med vi, kan du skrive “: wq” for å lagre og avslutte. Ikke glem at en kommando fra siste linje som starter med et kolon, krever at du skriver for å fullføre den. Som et resultat bruker mange vi-entusiaster “ZZ” -kommandoen, som gjør det samme.

Ny fil

Hvis du vil bytte til en annen fil, skriver du “: e newfilename”. Hvis du ikke har lagret den forrige filen, vil vi advare deg. Hvis du virkelig vil forkaste endringene, bruker du “e! newfilename “. Du kan bruke “: e!” uten filnavn hvis du har rotet opp og vil gå tilbake til den sist lagrede versjonen av den gjeldende filen.

Du kan veksle mellom gjeldende fil og den siste filen du redigerte ved å bruke kommandoen “: e #”. Med dette kan du bytte frem og tilbake mellom to filer, som ligner på å redigere to filer samtidig, som vi diskuterer nedenfor.

Flere filer

Du kan redigere flere filer samtidig og bytte mellom dem. I vi-terminologien bytter du mellom redigeringsbufferne deres. For å redigere flere filer i en økt, start vi med en kommandolinje som denne:

vi fil1 fil2 fil3

Den første filen du lister vil vises på skjermen. For å bla gjennom dem kan du bruke “: bn” (neste buffer) eller “: bp” (forrige buffer). Du kan trekke deg inn i navngitte buffere for å kopiere tekst fra en fil til en annen. (Rediger buffere og lim inn buffere er to forskjellige ting. Det er litt forvirrende.)

Shell-kommandoer fra Vi

Du kan kjøre skall-kommandoer uten å forlate vi. For å gjøre dette, skriver du “:!” (tykktarm og utropstegn) etterfulgt av kommandoen. Du ser utdataene fra kommandoen, og deretter må du trykke for å komme tilbake til kommandomodus. Du kan til og med skrive “:! Sh” for å kjøre et skall fra vi, utføre flere kommandoer og deretter gå tilbake til vi. Dette er nyttig hvis du redigerer litt kode og vil teste endringene dine.

Du kan kjøre en shell-kommando og sette inn utdataene i den gjeldende filen ved å skrive “: r! Kommando”.

Kartlegging av tastatur

En av de kraftigste tingene med vi er dens evne til å kartlegge kommandoer på nøkler. Det gjøres som følger:

: kart nøkkelkommandoer

Nøkkelen er et enkelt tegn. Det kan være et hvilket som helst tegn, men det er best for deg å ikke bruke en tast som allerede er en kommando som “c” eller “a.” Kommandoene kan være ganske kompliserte. De kan for eksempel inkludere enter-tasten med “” og fluktnøkkelen med “.” Så hvis du har en repeterende oppgave, kan du enkelt kartlegge den til en enkelt tast. For eksempel vil følgende kommando føre til at “q” -tasten går til det andre ordet i den neste raden, endre den til “Hjelp!” og gå tilbake til det første tegnet i den opprinnelige raden:

: kart q j0wcwHjelp! k

Kartkommandoen er på sitt kraftigste når den kombineres med vanlige uttrykk og repetisjonskommandoen (“.”). Når du synes at du gjør noe kjedelig mens du er i vi, kan du se om du kan lage en kartlegging som kan gjøre det. I de fleste tilfeller kan du det.

ressurser

Dette har vært en veldig rask oversikt over hva som er mulig i vi. Igjen, sjekk dokumentasjonen for fullstendig informasjon. Det kan være lurt å bokmerke et jukseark, for eksempel vimsheet.com eller Vim Cheat Sheet for Programmers. Her er noen flere ressurser:

Online ressurser

Følgende ressurser består av forskjellige artikler, opplæringsprogrammer og til og med jukseark.

  • The Traditional Vi: den offisielle hjemmesiden for vi-editoren med nedlastingslenker.
  • Vi Vanlige spørsmål: et flott sted å begynne, da det svarer på noen av de mest stilte spørsmålene om vi, og hvorfor det er verdt å lære det.
  • En introduksjon til skjermredigering med Vi: en tutorial om vi beregnet på mer avanserte brukere, som dekker funksjonene og hvordan du bruker den.
  • Vi Manual Page: gir en beskrivelse av tilgjengelige kommandoer.
  • Unix – Vi Editor Tutorial: en veldig kort og til poenget tutorial for vi, rettet mot komplette nybegynnere.
  • Hvordan bruke Vi: en annen tutorial rettet mot komplette nybegynnere å tjene som en “mild introduksjon” til redaktøren, men den kan også brukes som et referansemateriale for mellomliggende brukere.
  • Vi Cheat Sheet: et hendig jukseark med de viktigste vi-kommandoene.
  • Vim: den offisielle hjemmesiden for Vim.
  • Interaktiv Vim-opplæring: Som navnet antyder er denne opplæringen interaktiv – emulerer kommandolinjen og tastaturet rett i nettleseren din, slik at du kan teste den ut og lære Vim uten frykt for å ødelegge datamaskinen din.
  • Grafisk Vi-Vim Cheat Sheet and Tutorial: et grafisk jukseark som viser kjernekommandoene på et tastatur GIF med en tilhørende veiledning.
  • Vim Awesome: en ganske stor samling av plugins for Vim.
  • En ekstremt rask og enkel introduksjon til Vi Text Editor: denne opplæringen av Norm Matloff gir en “5-minutters introduksjon” til vi. Det er sannsynligvis litt for anstrengt for ekte nybegynnere, men det er et flott dokument hvis du bare trenger en rask påminnelse.
  • Vi Text Editor: denne Ryan’s Tutorial gir en grunnleggende introduksjon som tar deg måter fra å vite ingenting.
  • Lær Vim progressivt: denne opplæringen starter i begynnelsen, men kommer raskt inn i mange avanserte fag.
  • Kartlegging av nøkler i Vim: dette er en grundig guide til kartlegging ved bruk av vim. Hvis du vil bli en vi-bruker, må du sjekke dette ut.

Videoopplæringer

Flere videoopplæringer er tilgjengelige hvis du foretrekker å lære mens du går.

  • Vi / Vim Editor: en introduksjonsveiledning for hvordan vi bruker vi / vim-redigereren, inkludert hvordan du åpner en fil, setter inn tekst, skriver teksten til en fil og avslutter vi.
  • Lær å elske Vim: ikke en veiledning i seg selv, men det fremhever hvorfor du bør bruke Vim.
  • Learning Vim in a Week: en foredrag presentert av Mike Coutermash, basert på hans blogginnlegg Learning Vim in a Week. Målrettet mot nybegynnere, dekker det å komme i gang med Vim.

bøker

Gitt populariteten til både vi og Vim, dekker de følgende bøkene redaksjonen i stor dybde.

  • Learning the Vi and Vim Editors (2008) av Robbins, Hannah og Lamb: dekker redigering av grunnleggende og avanserte verktøy for både redaktører og programmerere, for eksempel redigering i flere vinduer, hvordan du skriver både interaktive makroer og skript for å utvide redaktøren, og mer.
  • Mastering Vim (2014) av Damien Conway: best egnet for mellombrukere, dekker Vims mer avanserte funksjoner, konfigurasjonsalternativer og flere plugins som gjør redigeringsopplevelsen bedre.
  • Hvordan bruke UNIX-LINUX Vi teksteditor: tips, triks og teknikker (And Tutorials Too!) (2006) av Larry L Smith: dette er en kort og enkel introduksjon til redaktøren. Hvis du vil komme i gang i løpet av en helg, er dette boken du skal bruke.
  • Practical Vim: Edit Text at the Speed ​​of Thought (2015) av Drew Neil: hvis du allerede kjenner vi-redaktøren og vil bli strømbruker, er dette boken du skal bruke. Den består av 126 tips som vil vise deg hvorfor noen mennesker går tapt uten vi.
  • Vi og Vim Editors Pocket Reference (2011) av Arnold Robbins: dekker de mest verdifulle kommandoene for vi, Vim og vi hovedkloner.

Det tar litt tid å bli vi-ekspert, men når du kommer dit, vil du lure på hvorfor du noen gang har brydd deg med en mus.

Konklusjon

Blant seriøse utviklere (i det minste i Unix-verdenen) er det egentlig bare to redaktører som er verdt å nevne: Emacs og vi. De har begge fordeler og ulemper. Og forskjellige mennesker har sterke meninger om hvilken redaktør du skal bruke.

Richard Stallman er grunnleggeren av GNU-prosjektet og den frie programvarebevegelsen. I tillegg til å skrive den første GNU-kompilatoren (GCC), skrev han GNU Emacs. Her har han det litt moro på bekostning av oss:

Emacs lar deg gjøre mye mer – spesielt hvis du koder i Lisp. Men vi er ekstremt lett og for en som kjenner det godt, ekstremt kraftig og raskt.

Ressursene ovenfor vil hjelpe deg å bli en vi-mester på kort tid – og forbedre produktiviteten din.

Videre lesing og ressurser

Vi har flere guider, veiledninger og infografikk relatert til koding og utvikling:

  • Mantis Hosting: finn ut hva webhotellfirmaer tilbyr gode tilbud som inkluderer dette populære bug tracking-programmet, et viktig verktøy for seriøse kodere.
  • Ubuntu Primer: lær alt om en av de mest populære Linux-distribusjonene. Det er et flott system å utvikle på – og det kommer med vim!
  • Objektorientert programmering: lære om konseptene til objektorienterte språk og detaljene i et bredt spekter av objektorienterte programmeringsspråk. Noen kan overraske deg. Objektorientert Fortran?!

Ville Internett overleve verdens ende?

Har du noen gang lurt på hva en stor katastrofe vil gjøre med internett? Ta en titt på infografien vår, ville Internett overleve verdens ende? Det er mulig vi alle kan bli ødelagt, men internett ville leve videre.

Ville Internett overleve verdens ende?
Ville Internett overleve verdens ende?

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map