Vim 201: En Intermediate Guide to Vim

Klar til å øke din Vim ferdigheter? Mange bruker Vim, men ikke gjør bruk av nesten alle funksjonene. I denne guiden vil vi ta en titt på noen av de mellomliggende funksjonene som tilbys av Vim, inkludert forkortelser, fullføring av ord, og redigerings flere dokumenter i samme Vim økt.

I forrige termin, tok jeg en se på det grunnleggende redigering, bevegelse, søke og erstatte, og kopiere og lime inn tekst. Det er nok til å få folk flest med hvis de bare bruker Vim for rask og skitne tekstredigeringene, etc. Men det betyr ikke engang begynne å skrape i overflaten av hva Vim kan gjøre! Husk at læring Vim er ikke en sprint, det er en maraton! Men du kan gå i ditt eget tempo og stopp langs ruten når som helst å beundre naturen.

Selv om jeg skal prøve å dekke så mye som mulig i hver guide, er det umulig å dekke alt som Vim er i stand til i en håndfull artikler. Dette er ikke ment å være en helt omfattende guide, men et sett med startpunkter for brukerne å få orientert med Vim og bli mer og mer produktiv.

Word Completion

Hvis læring Vim virker som hardt arbeid i starten, være trygg på at i det lange løp vil det spare deg jobbe. En av måtene som Vim sparer du arbeidet med fullføring av ord. Dette er selvsagt svært nyttig for utviklere og systemadministratorer ved redigering kode eller konfigurasjonsfiler.

Som du skriver en lengre ord, trykke Ctrl-p eller Ctrl-n. La oss si at du skriver ordet søker
, som du allerede har brukt en gang i et dokument. Skriv "hav" og deretter trykke Ctrl-p, og Vim vil enten autofull ordet om "havet" er en unik streng, eller vise en liste over ord som begynner med "sjø".

Når du treffer Ctrl -p, kan du fortsette å skrive for å begrense utvalget, eller bruke piltastene til å velge det rette ordet, og deretter fanen hit.

Hva Vim gjør når du bruker denne kommandoen er å søke gjennom dokumentet og finne lignende strenger, og viser deretter options.If ordet /string har ikke dukket opp i dokumentet før, vil du få en feilmelding som sier "mønsteret ikke funnet."

Hva er forskjellen mellom Ctrl- p og Ctrl-n? Ctrl-p kommandoen søk på "tidligere" brukt begrepene og viser dem i den rekkefølgen, og Ctrl-n søker etter "Neste" vilkår, og viser i den rekkefølgen. For de fleste bruksområder, de er ganske tilsvarende.

Forkortelser

Som du sikkert legge merke til, er Vim en stor redaktør for folk som liker å spare tastetrykk. En annen svært praktisk funksjon i Vim er forkortelser. Disse kan settes på fly. La meg vise deg hva jeg snakker om.

La oss si at du redigerer et dokument, og må bruke en spesielt lang ord gjentatte ganger, eller en bedrift eller personens navn. Hvis du ikke ønsker å skrive ut ReallyLongWord om og om igjen, kan du gjøre dette i stedet:

: ab RLW ReallyLongWord 

Så det første argumentet er forkortelsen, den andre argument til: ab kommandoen er utvidelsen. Nå, når du skriver inn tegnene RLW du får ReallyLongWord. Enkelt, ikke sant? Hva skjer hvis du vil usatt
en forkortelse? Du kan avslutte Vim, og forkortelsen vil gå bort Når økten avsluttes, men det er en problemfri

For å bli kvitt en forkortelse, bruk:. Una RLW og det vil klare det. Bare så enkelt!

Dette er en funksjon som jeg brukt mye når du skriver på heltid. Den kom i spesielt hendig med lengre navn og prosjekter. Det sikret også jeg bare trengte å stave navnet til en riktig en gang
, noe som er nyttig.

Kartlegginger

Å kunne raskt legge inn vilkårlige strenger med forkortelser er nyttig, men hva Hvis du ønsker å kjøre en sekvens av kommandoer med et tastetrykk eller to? Du kan gjøre det med en kartlegging.

La meg gi et raskt eksempel. Vim tilbyr muligheten til å markere søkeord. Dette bør være av som standard. Hvis du kjører? SEARCH
eller / SEARCH
du vil bli flyttet til den første forekomsten av disse vilkårene, men vil ikke se resten av forekomstene i bufferen. Hvis du ønsker å se alle tilfeller, skjønt, må du ha ditt utheving på. Jeg synes det er distraherende mesteparten av tiden, men noen ganger er det nyttig. Så jeg har denne kartleggingen satt i min Vim konfigurasjonsfil:

 nmap < stille > < C-n > < Esc >: kalle ToggleHLSearch () < CR > 

Dette setter opp en kartlegging for Ctrl-n for å slå Høydepunktet søkefunksjonen av og på. Den går i utgangspunktet Escape for å gå inn kommando-modus, og deretter:. Kaller ToggleHLSearch () for å slå på høydepunktet søkefunksjonen

En annen, enklere eksempel. Når jeg redigerer andres skriving, jeg liker å hoppe gjennom filen noen få ord om gangen og se gjennom alt. Så jeg har satt følgende kartlegging for å hoppe gjennom dokumentet fem ord om gangen:

 imap, w 5W 

Det kan ikke virke som mye forbedring, bytte to tegn for to andre tegn, men ved hjelp, w jeg slipper å flytte hendene mine til talltastene.

Du kan legge forkortelser og kartlegginger til Vim konfigurasjonsfilen, .vimrc i ditt hjemmeområde forutsatt at du er på en Linux eller annen * nix system, og gjøre dem permanent. Vi får inn flere kartlegginger og konfigurere .vimrc i neste avdrag!

Maste Vim Interface

Det er ikke opplagt i starten, men du kan faktisk redigere to, tre, og med dusinvis av filer samtidig i en enkelt sesjon Vim samtidig. Du kan gjøre dette ved å gjøre bruk av flere "viewports" og ved å bruke en relativt ny funksjon introdusert i Vim 7, faner.

La oss starte med visningsfeltene først. Når du fyrer opp Vim med en fil, vil du se en enkelt view med filen. La oss si at du redigerer en virkelig lenge
fil og ønsker å være i stand til å gjøre endringer i to deler av filen samtidig. Kjør: split (husk, du må treffe Escape først) og da vil du se to visninger av samme fil

Det er nyttig, men hvordan får vi til den gamle view.? Enkelt, skriv kommandomodus (hit Escape) og bruke Ctrl-w og deretter enten piltastene eller bevegelse tastene for å flytte. Ctrl-w kommandoen forteller Vim du ønsker å gjøre et vindu /view drift, og deretter bevegelses nøkler som du allerede er kjent med (h, k, j, l) vil bevege deg rundt. For eksempel, hvis du har en Vim sesjon kjører delt horisontalt med to visningsfeltene, kan du kjøre Ctrl-w k å flytte til øvre synsfeltet, og Ctrl-w j for å gå ned. Eller ved hjelp av Ctrl-w Ctrl-w vil bla deg gjennom vinduene.

Hvis du i stedet for å flytte mellom feltene, du ønsker å flytte visningsfeltene, kan du bruke Ctrl-w r og Ctrl-w R for å rotere vinduer med klokken og mot klokken, henholdsvis.

Å se flere visninger av samme fil er moderat nyttig. Men det jeg finner spesielt nyttig er å ha to (eller flere) feltene åpen med forskjellige filer i hver. La oss si at du ønsker å åpne en ny view med din httpd.conf i den. Bare kjør: splitte httpd.conf og så er du i business

Hva om du ønsker å gå tilbake til en enkelt visning.? Du kan lukke visningen ved å avslutte filen normalt (: q) eller ved å kjøre Ctrl-w c i synsfeltet du vil lukke. Merk at Vim ser ut for deg, og vil ikke slutte et ulagret fil når du bruker Ctrl-w c. Du vil bli bedt om å lagre filen først. Er ikke Vim en kjæreste?

Her er en titt på alle de store kommandoene du ønsker å vite. Legg merke til at det finnes flere gyldige kombinasjoner som gjør det samme. I interesse av kortfattethet, jeg kommer ikke til å dekke svært tenkelig tastekombinasjon som arbeider for å gjøre de samme tingene

:. Splitt eller Ctrl-w s vil dele Vim se inn i to visningsfeltene, horisontalt

:.. vsplit eller Ctrl-w v vil dele Vim se inn i to visningsfeltene, vertikalt

: split filnavn
vil dele Vim se inn i to visningsfeltene, . horisontalt, og åpen filnavn
i den nye view

: vsplit filnavn
vil dele Vim se inn i to visningsfeltene, vertikalt, og åpen filnavn
i den nye synsfeltet.

Ctrl-w r beveger feltene med klokken.

Ctrl-w R flytter feltene mot klokken.

Hvorfor ønsker du å Dette gjør alt i en enkelt økt? Et par grunner. Først, hvis du SSH'ed inn en ekstern maskin, kan det være en hassle å åpne to, tre eller flere økter. Bedre å ha en enkelt økt åpen. Dessuten kan det være lurt å gjøre ting som å kopiere og lime mellom filer -. Som du kan gjøre enkelt ved å åpne flere filer i feltene

Vim og Tabs

Fanen grensesnitt har gjort nettsurfing så mye mer brukervennlig, hvorfor ikke ta dem til Vim også? Hvis du har en tendens til å jobbe med flere prosjekter på en gang, å ha faner satt opp kan være en god måte å multitaske uten å måtte se alle filene dine på en gang.

Hvis du ønsker å starte Vim med mer enn én fil, kjøre vim -p filnavn1 filnavn2
. Dette vil åpne hver fil i sin egen fane.

Allerede i et Vim sesjon? Du kan åpne en ny fane med: tabnew filnavn
å åpne (eller opprett) en fil

Flytting mellom fanene er døde lett.. For å bytte til neste fane (neste blir en til høyre, eller innpakning tilbake til den første kategorien) bruker gt i kommandomodus. Hvis du vil bytte til forrige kategori, bruker gt.

Hvis du vil lukke en fane kan du gjøre et par ting. Det ene er å bare bruke Vim er vanlige kommandoer for å avslutte en økt. Hvis du redigerer en fil i en fane og bruk: wq eller lignende, vil det også lukke fanen. Eller du kan bruke: tabc å lukke fanen. Igjen, Vim ser ut for deg, og vil ikke slutte at økten uten å lagre filen.

  • vim -p filnavn1 filnavn2
    å åpne flere filer i faner fra kommando . linje

    :... tabnew å åpne en ny fane

    gt for å bytte til neste fane

    GT for å bytte til forrige kategori

    : tabc å lukke en fane

    Du kan også kombinere faner og viewports - slik at du kan ha en økt med flere visningsfeltene i hver kategori, hvis du vil.. Miks og match, er Vim svært fleksibel, og hvis du kan tenke på noe som Vim ville logisk trenger å gjøre, oddsen er at det ikke
    .

    Det er selvfølgelig alltid mer. Bruk Vim-tallet: hjelp-funksjonen for å lese mer om de ulike fane kommandoer og funksjoner

    mestre teknikkene jeg har dekket her, og du er godt på vei til å bli produktiv med Vim.. I de neste avdrag, vil jeg komme inn på mer avanserte teknikker. I mellomtiden kan du også være lurt å sjekke ut vimtutor kommandoen. Det vil lede deg gjennom noen av de mer vanlige funksjoner i Vim, de fleste som ble dekket i 101 guide, og er god hands-on erfaring.

    Joe 'Zonker' Brockmeier er en langvarig FOSS advokat, og arbeider for Novell som community manager for opensuse. Før han kom til Novell, jobbet Brockmeier som en teknologi journalist som dekker åpen kildekode rytme til en rekke publikasjoner, inkludert Linux Magazine, Linux Weekly News, Linux.com, UnixReview.com, IBM developerworks, og mange andre.