Port de beste Vim-kommandoene til din favoritt tekstredigerer

Jeg er sikker på at alle kan være enige om at kraften og kontrollen som et program som Vim gir, er utrolig. Men forståelig nok er mange ikke komfortable med de forskjellige modiene, og kommandolinje følelsen av det. Det er vanskelig å konkurrere, visuelt, med et vakkert brukergrensesnitt, som Espresso. Men hva om vi kunne ta noen av de mest populære Vim-kommandoene / snarveiene, og overfør dem manuelt til bruk i Espresso? Ville ikke det være det beste fra begge verdener?


Målet

Du får mest ut av denne opplæringen hvis du har en beskjeden kjennskap til Vim og sin syntaks.

La oss få noen ting rett, rett utenfor flaggermuset. Å arbeide med Vim er å jobbe med et språk; Dette er spesielt hvorfor det er så kraftig. Vil du slette de neste fire ordene? Enkel, type c4w (endre fire ord). Hva med de neste to ordene? Vel, vi kjenner til syntaksen: c2w. Hmm ... hva om jeg må slette de neste tre linjene fra markørens posisjon? Igjen, vi trenger ikke å huske en separat tastaturkommando; vi, i stedet, bruker språket: 3DD (slett de neste tre linjene).

Vårt mål er å port så mye av denne funksjonaliteten over til den populære redaktøren, Espresso for Mac. Årsaken til at dette er Espresso-spesifikke, er at vi skal bruke makroer for å etterligne en håndfull oppgaver for hver kommando. De spesifikke oppgavene / tastaturstrømmene varierer fra editor til editor.

Det er mitt håp at medlemmer av samfunnet vil begynne å lage sine egne porter for deres favorittredaktører. På det tidspunktet kan vi utvikler et repository på Github.

Vi kan absolutt ikke porte hele språket og dets moduser over til Espresso; det er umulig. Men vi kan etterligne mange av de mer populære kommandoene med makroer.


Full Screencast



Hvorfor bry seg?

Jeg antar at svaret på dette spørsmålet helt avhenger av ... du. Da jeg begynte min 4 uker av Vim-rettssaken, tilbake i september, ble jeg raskt forelsket i modene og språket. Men hver redaktør har sine fordeler og ulemper. I mitt tilfelle, selv om jeg fremdeles elsker og bruker Vim hver dag, liker jeg ikke hvordan:

  • Selv med plugins, som NerdTREE, er det fortsatt vanskelig for meg å jobbe med store prosjekter og mappestrukturer.
  • Arbeide med filer, via FTP, var vanskeligere enn å bruke Espresso.
  • Det er ikke nektet at Vim ikke kan være så pen som en innfødt kakao app.
  • Espresso har en kick-butt live forhåndsvisning funksjon som kan aktiveres, i en ny kategori, bare ved å skrive Kommando + Alternativ + P. Videre oppdateres dette vinduet i sanntid, mens du skriver.
  • Jeg kjempet for å finne tilstrekkelige feilsøkingsverktøy for Vim.

Nylig, da jeg spilte rundt med tastaturmakroer, spurte jeg meg selv om det var en veihytte denne funksjonaliteten. Kanskje du vil elske ideen; kanskje du hater det.


Nødvendige verktøy

Mens Vim er 100% fri (det er en del av sin storhet), er Espresso ikke. Videre skal vi lage tastaturmakroer med et program, kalt Keyboard Maestro. Dette er også ikke gratis. Jeg er sikker på at det er noen åpen kildekode-makroopprettingsprogrammer tilgjengelig rundt på nettet. Men dette er det beste jeg har kunnet finne. Det er verdt $ 35.

Å følge med, du trenger:

  • En Mac
  • En kopi av MacRabbits Espresso-kodeditor. Igjen kan du bruke noen redigeringsprogrammer; men makroene vil avvike noe. Følg med denne tut, og opprett deretter din egen redaktørens makroer. (Gi meg beskjed!)
  • En kopi av Keyboard Maestro. Hvis du aldri har brukt det, kan du laste ned en fullstendig prøve fra deres nettsted. MacAppStorm har en flott artikkel på KeyBoard Maestro, hvis du trenger en primer.

Din første makro

La oss begynne med en enkel makro. Bruk Vim i normal modus, kan vi skrive CIW (endre indre ord) for å slette det gjeldende ordet, og flytt inn sett inn modus.

Nå har Espresso ikke moduser, men som jeg fant, er det greit. Vi kan fortsatt skrive disse kommandoene; mens de blir skrevet inn som vanlig tekst, så snart makroen utløser, blir de slettet super fort.

Så, for vår første makro, ønsker vi å etterligne denne funksjonaliteten. Når markøren er på toppen av et ord, vil jeg raskt skrive cw å endre ordet.

Umm ... hvorfor ikke bare slå på Kommando + Skift + W snarvei?

Ja, vi kunne gjøre det, men etter min mening burde vi ikke.

  • Hvis hver enkel kommando har sin egen forvirrende modifier + nøkkel snarvei, blir det raskt vanskelig å huske dem alle.
  • Jeg elsker språkaspektet av Vim. Når du lærer det, blir ideen om å gå tilbake til å trykke på flere modifider-taster en stor smerte.
  • En stor fordel for Vim er at det legger stor vekt på å holde fingrene låst (så mye som mulig) til midten av tastaturet. Dette gjør det ikke bare mulig å skrive hurtigere, men du trenger heller ikke å strekke ut fingrene hver gang du vil utføre en enkel operasjon.

Oppgave 1

Når du oppretter en ny makro, er det første trinnet å finne ut hvordan du utfører oppgaven manuelt i kodeditoren. I dette tilfellet, Skift + Kommando + W vil velge ordet. Deretter slette nøkkel, selvfølgelig, vil slette ordet. Disse to kommandoer alene vil etterligne CIW i Vim.

Brann opp tastaturet Maestro

Det neste trinnet er å lage makroen. Slå opp Keyboard Maestro, og før noe annet, opprett en ny gruppe spesielt for dine Vim-kommandoer.

På denne måten kan du begrense disse snarveiene til kun å brukes på Espresso, og ikke for eksempel Microsoft Word. Jeg har ringt til min gruppe, VimMimic.

Nå må vi opprette en ny makro, sette en utløser, og velg ekspandereren.

Hvis du lurer på hvorfor vi ikke bruker ditt eksisterende TextExpander-program, er det fordi programmer som det bare utvider tekst. Men vi må utføre makroer eller oppgaver.

Registrere makroen

Med forberedelsen ut av veien, må vi nå registrere våre skritt. Mens Keyboard Maestro har mange mapper / kommandoer tilgjengelig for deg, er det utrolig at den tilbyr en "Record" -knapp, hvor den vil høre og ta opp noen av tastene du skriver, musebevegelser / klikk osv..

Hvis du trenger, gå tilbake til Espresso, og husk nøklene / kommandoene du må skrive for å kunne endre ordet. Vær imidlertid snill om dette. For eksempel, bør makroen din velge noe som sheldon.couper i sin helhet? Eller vil du at den bare skal velge ordet, opp til (eller etter) perioden? I Espresso, Kommando + Skift + W vil utføre sistnevnte. Bestem deg selv på denne. Jeg tror jeg skal gjøre det første og velge alt.

I så fall må jeg være smartere om makroen. Etter litt toying rundt, dette er hva jeg kom opp med.

Hvis du vil, lag en annen makro, CIW (endre indre ord), som bare vil velge før eller etter perioden.

Prøver det ut

Når du har fullført makroen din, kan du prøve den! Gå tilbake til Espresso, og når markøren er over et ord, skriv inn cw. Dette vil da utløse makroen, der alle dine tidligere innspilte handlinger vil bli spilt ut, i høy hastighet.

Jeg håper at det er en måte å utføre en makro uten å oppdatere brukergrensesnittet helt til slutten. Men jeg er ikke klar over hvordan jeg gjør det nå.

En hel Lotta Arbeid

Hvis du ikke er en Vim-bruker, forventer jeg at du skal tenke på deg selv, "Alt dette fungerer bare for å slette et ord?" Og stol på meg, jeg forstår. Det jeg kan fortelle deg, er at når du har brukt Vim for en stund, er et språklignende syntax langt mer fornuftig for deg enn å huske utallige snarveier for modifiseringsnøkkel.

Og gitt, dette er et svært lite eksempel.


j for ned; k for opp

Første gang jeg lærte at jeg var forventet å bruke bokstavene til å flytte opp, ned, venstre og høyre (kjhl), Jeg lo. Hvor gammeldags er det !? Men når du har begått nøklene til muskelminne, øker hastigheten din. Du trenger ikke lenger å dra høyre hånd til nederste høyre del av tastaturet for å trykke på nedpilen. Nope - hendene dine står i hvilestilling, da disse nøklene ligger direkte i andre rad.

Vim bruker moduss for å bytte mellom kommandoer og sette inn tekst. Men som nevnt ovenfor har Espresso ikke disse. Så, vi skal bruke Caps Lock nøkkel til å tjene som vår normal modus.

Rerouting Caps Lock Key

Spør deg selv, "Hvor ofte bruker jeg aldri caps lås nøkkel? "Hvis du er som meg, er svaret" nesten aldri ". Med det i tankene, få litt bruk ut av det, og omdøp funksjonen. På en Mac er dette enkelt.

Gå til Systemvalg -> Tastatur -> Modifikatortaster, og endre Caps Lock å rute til Styre nøkkel, som jeg alltid har problemer med å målrette når jeg skriver (minst på min laptop).

Nå, når som helst du trykker på caps lås, de styre nøkkelen vil bli utløst.


Lag en ny makro

Denne er latterlig enkel, men det fungerer. Nå, når du skriver inn Caps Lock + J, pil ned vil bli utløst. Det er viktig å huske på at du ikke er tvunget til å bruke dette, hvis du ikke vil. Du kan fortsatt trykke på pil ned-tasten. Men for de som føler seg mer komfortable holder hendene i hvilestilling, kan dette bli foretrukket.

Gjenta for hver retning

Ditt neste skritt er å gjenta syklusen for opp, venstre og høyre - ved hjelp av nøyaktig samme metode.


Endre neste '

Vim har en fin kommando, ci' som lar deg tømme innholdet i neste streng, pakket inn i enkelt anførselstegn. Det er utrolig nyttig, og kan virkelig øke hastigheten på kodingen.

La oss prøve å lage en makro for å gjøre dette i Espresso. Dette vil bli mer komplisert, fordi vi må bruke søkeverktøyet i Espresso for å søke etter det neste forekomsten av et enkelt tilbud. Så løsningen vil ikke være perfekt, men det vil få jobben gjort delvis.

Prøv det selv. Hvor som helst i dokumentet ditt, skriv inn cn'. Dessverre, i hvert fall for nå, fungerer det bare perfekt for enkle ord innpakket i sitater.


Endre til slutten av linjen

I Vim, hvis du skriver inn en hovedstad C, I normal modus vil den slette all teksten på en linje som kommer etter markørens posisjon. Det er veldig hjelpsomt. Vi kan gjøre det samme i Espresso med en enkel makro. derimot, Skift + C vil ikke fungere, fordi Espresso ikke har moduser. La oss gjøre Caps Lock + C i stedet. Husk at kappene nå ruter til Styre nøkkel!


Slett omliggende merket

I Vim, med Surround-pluginet, kan jeg skrive dst (slett rundt tagg) for å slette en pakketikett. Jeg bruker det ofte. Hmm - dette vil være en vanskeligere i Espresso, men det kan gjøres. Her er hva jeg kom opp med; prøv det på maskinen din.

Det er litt mer komplisert, men det fungerer!

Vær oppmerksom på at hvis det virker som noen av disse handlingene kan fjernes, er de der fordi jeg fant ulike situasjoner der de trengte. Bedre å være trygg.


Endre omliggende merket

Like nyttig som å slette den omkringliggende taggen, er endring taggenavnet.

Det er en quirk om denne metoden. Fordi Espresso ikke er modusbasert, når du endrer taggen, vil denne kommandoen ta deg opp til punktet der du kan endre verdien av taggen. Når du gjør det, trykker du bare på Ikke sant, og lim inn i den opprinnelige teksten (som ble kopiert av makroen). Du ser hva jeg mener når du prøver det ut. Gi meg beskjed hvis Espresso har en innebygd endring-tag-navn kommando.


Konklusjon

Ok, det burde komme i gang. Hvis du er et Premium-medlem, må du se videodelen av denne opplæringen for en mer en-mot-en-demonstrasjon. Jeg har opprettet et repository på Github, som inneholder dusinvis av kommandoer som du er fri til å bruke (og forbedre) hvordan du ønsker.

Ting å være skeptisk til

  • Ikke velg snarveier som du ville skrive normalt. For eksempel bruker dd Å slette en linje vil skru opp ting hver gang du skriver "tuller."
  • Vær forsiktig med overordnede innebygde kommandoer. Dette er alltid tøft; Det kan ta litt prøve og feil å finne de mest ikke-påtrengende snarveiene.

Så hva tror du? Liker du ideen? Jeg er nysgjerrig, selv om jeg passer inn i sistnevnte leir.

Tastatur Maestro makro-gruppen oppdateres kontinuerlig. For å laste ned den mest oppdaterte versjonen, vennligst hent den her: http://github.com/JeffreyWay/VimMimic-for-Espresso

Tutorial Links:

Espresso: http://macrabbit.com/espresso/
Tastatur Maestro: http://www.keyboardmaestro.com