Vim tips: Arbeide med ekstern commands


Vim er et kraftig redigeringsverktøy, men det er noen ting det kan bare ikke gjøre. Men lar Vim deg tilgang shell-kommandoer og verktøy uten å forlate Vim, og som lar deg utføre noen utrolige triks



Hvis du kjører. Shell eller bare: sh mens du er i editoren, Vim (eller gvim, hvis du er delvis til Vim sin GUI) vil plassere deg i et interaktivt skall. Du kan kjøre hva kommandoer du vil, og gjenoppta Vim økten ved å gå ut av skallet.

Som de fleste andre * nix programmer, du kan også pause Vim med Ctrl-z, som vil slippe deg tilbake til skallet. Når du er ferdig, kan du gjenoppta Vim med fg. (Dette er en funksjon av skallet, ikke en Vim funksjonen.)

Har du noen gang begynte å redigere en fil, laget en haug med endringer, og deretter skrev: w å skrive endringene, bare for å oppdage at filen er skrivebeskyttet? Du kan takle det i et par måter, men en av de enkleste ting å gjøre er å påberope et skall innenfra Vim og endre filens tillatelser før du lagrer den på nytt.

Bang!
< p> Vim kan du også kjøre en kommando direkte fra redaktøren, uten å slippe til et skall, ved hjelp bang (!) etterfulgt av kommandoen som skal kjøres. For eksempel, hvis du redigerer en fil i Vim og ønsker å finne ut hvor mange ord er i filen, kjører

! wc%

Dette forteller Vim å kjøre filen (%) gjennom wc vaskerom og rapportere resultatene. Vim vil vise kommandoutdataene nederst i redigeringsvinduet til du trykker på Enter. Merk at denne kommandoen kjører filen gjennom kommando, og ikke innholdet i buffer - så hvis du ikke har lagret nylig, vil det ikke rapportere den siste ord teller

Bang fungerer best med. ikke-interaktive kommandoer. Du ville ikke ønsker å kjøre topp eller annen interaktiv kommando hjelp! kommando
, men du kan slippe til et skall og kjøre en slik kommando med. sh eller Ctrl-z

bang kommandoen kan være nyttig hvis du bruker Vim for programmering. Hvis du skriver et PHP-skript, for eksempel, kan du bruke PHP syntaks sjekk alternativ (-l) for å se om skriptet har syntaksfeil:

! php5 -Jeg%

Hvis du jobber med et manus eller et prosjekt, kan det være lurt å sjekke det regelmessig, og med minimal skrive. Du kan bla gjennom Vim befaling historie ved hjelp av pil opp, men hvis du bare ønsker å kjøre den siste ekstern kommando, kan du bruke: !! i stedet

Reading kommandoutdataene

De fleste Vim brukere er allerede kjent med bruken av lesekommando, som setter inn tekst fra en bestemt fil i gjeldende buffer, slik:.

: r tekstfil

Dette er nyttig, men mange brukere er ikke klar over at du også kan lese i produksjon av skall applikasjoner. For eksempel, hvis du ønsket å inkludere en liste over filer fra en bestemt katalog, kan du inkludere dem ved hjelp av denne lesekommando:

: r! ls -1 /home /bruker /katalog

Dette forteller Vim å utføre kommandoen ls -1 /home /bruker /katalog og deretter omdirigere utdataene for at kommando i buffer. Du kan også bruke denne funksjonen til å lese tekst fra en webside til filen du redigerer, ved hjelp av en tekst-modus nettleser som w3m. Det er ganske enkelt å ta en side ved hjelp w3m og dumpe det rett inn i redigeringsøkten uten å forlate Vim:

: r! w3m http://en.wikipedia.org/wiki/Vi -dump

-dump alternativet forteller w3m å bare spytte ut websiden som ren tekst og avslutte.

Det er også mulig til å utføre flere kommandoer for å behandle teksten før du leser det inn Vim. Et enkelt eksempel vil være å liste opp katalogen innholdet, deretter rør utgang til den slags kommando for å sortere filnavnene i motsatt rekkefølge, før du setter teksten i gjeldende buffer:

: r! ls -1 /home /bruker /katalog | sort -r

Lese kommandoen kan også komme godt med hvis du prepping en hendelsesrapport fra serverlogger. La oss si at du ønsket å inkludere alle feilene i en Apache logg som inneholder en bestemt streng. Du kan grep'e loggen og sette inn innspill til din Vim sesjon:

: r! grep string
/var/log/apache2/site-error.log

Vim gjør det enkelt å omdirigere utdataene for de fleste standard * nix verktøy til en fil, og rør tekst fra fil det er å redigere i standard * nix verktøy.

Filtrering tekst gjennom eksterne filtre

Mens i Vim, kan du velge et område med tekst og kjøre at teksten gjennom en ekstern kommando. I visuell modus, bare markere teksten du vil arbeide med, og deretter kjøre! kommando
. Den markerte teksten vil bli erstattet av resultatet av kommandoen. La oss si at du ønsket å bruke svak kryptering på en del av en fil ved å kjøre det gjennom ROT13 verktøyet. Bruk v, V, eller Ctrl-v å gå inn i visuell modus av ditt valg og velge teksten du vil kryptere. Så løpe! ROT13 å erstatte den markerte teksten med ROT13-kodet tekst. Dette kan være nyttig når du skriver en e-post med en spoiler om den nyeste episoden av Battlestar Galactica
for å sende en e-postliste. Det er trivielt for mottakerne å dekode ROT13-kodet tekst, men folk som ikke liker spoilers vil ikke ha noen overraskelser ødelagt av skimming over teksten.

Du kan også angi en rekke linjer for å behandle, snarere enn å velge linjer i visuell modus. For eksempel for å filtrere linjer 20 gjennom 25 av en fil gjennom ROT13:

: 20,25! ROT13

Vim vil kjøre teksten gjennom ROT13 og sett den i stedet for den eksisterende teksten. Hvis du ved et uhell overskriver noen tekst i Vim at du ikke mente å, ikke bekymre deg - Vim er undo kommando (u) lar deg gjenopprette den opprinnelige teksten

Ved hjelp av en annen skallet
<. p> Som standard skal Vim bruke standard skall. Hvis du vil være sikker på at Vim er ved hjelp av standard shell, kan du sjekke verdien av skallet alternativet ved å kjøre denne spørringen:

:? Sett shell

Vim vil vise shell = /bin /bash, eller hva skallet er satt til. Merk at dette fungerer med andre alternativer også, slik at du kan bruke: set alternativ
? sjekke verdien av alle alternativene innen Vim

Hvis du ønsker å endre verdien av skallet midlertidig, kjør:. sett shell = /sti /til /skall
med riktig bane til din valgte skall. For eksempel, på Ubuntu, hvis du ønsker å bruke Korn skallet, kan du kjøre: set shell = /usr /bin /ksh - forutsatt at du har Korn skallet installert

For å gjøre endringen av skjell. permanent, åpne din ~ /.vimrc og legge til denne linjen:

satt shell = /sti /til /skall

Neste gang du starter et Vim-økt, det nytt skall alternativet vil bli satt

Få i vanen med å bruke Vim-tallet:. skallkommando og! verktøyet, og du vil finne at du kan være enda mer produktiv mens du bruker Vim enn du kanskje trodde var mulig. Anmeldelser