Porteer de beste Vim-opdrachten naar uw favoriete teksteditor

Ik weet zeker dat iedereen het erover eens kan zijn dat de kracht en controle van een programma als Vim ongelofelijk is. Het is begrijpelijk dat velen zich niet op hun gemak voelen met de verschillende modi, en de opdrachtregel het gevoel hebben. Het is moeilijk om visueel te concurreren met een prachtige gebruikersinterface, zoals Espresso. Maar wat als we enkele van de meer populaire Vim-commando's / snelkoppelingen zouden kunnen gebruiken en ze handmatig zouden kunnen overdragen voor gebruik in Espresso? Zou dat niet het beste van beide werelden zijn?


Het doel

U haalt het meeste uit deze zelfstudie als u een bescheiden vertrouwdheid met Vim en de bijbehorende syntaxis hebt.

Laten we meteen een paar dingen rechtzetten. Werken met Vim is werken met een taal; dit is specifiek waarom het zo krachtig is. Wilt u de volgende vier woorden verwijderen? Eenvoudig, type c4w (verander vier woorden). Hoe zit het met de volgende twee woorden? Nou, we kennen de syntaxis: C2W. Hmm ... wat als ik de volgende drie regels van de positie van de cursor moet verwijderen? Nogmaals, we hoeven geen apart toetsenbordcommando te onthouden; wij gebruiken in plaats daarvan de taal: 3DD (verwijder de volgende drie regels).

Ons doel is om zoveel mogelijk van deze functionaliteit over te dragen aan de populaire editor, Espresso voor Mac. De reden waarom dit Espresso specifiek is, is omdat we macro's gaan gebruiken om een ​​handvol taken na te bootsen voor elke opdracht. De specifieke taken / toetsenbordstreken variëren van editor tot editor.

Ik hoop dat leden van de community een eigen community gaan maken havens voor hun favoriete editors. Op dat moment kunnen we een repository ontwikkelen op Github.

We kunnen de volledige taal en de modi zeker niet overdragen aan Espresso; dat is onmogelijk. Maar we kunnen veel van de meer populaire opdrachten met macro's nabootsen.


Volledige screencast



Waarom zou je je drukmaken?

Ik veronderstel dat het antwoord op deze vraag volledig afhangt van ... u. Toen ik in september met mijn 4 Weeks of Vim-proef begon, werd ik al snel verliefd op de modi en de taal. Elke editor heeft echter zijn voor- en nadelen. In mijn geval, hoewel ik nog steeds elke dag van Vim houd en gebruik, vind ik het niet leuk hoe:

  • Zelfs met plug-ins, zoals NerdTREE, is het voor mij nog steeds moeilijk om met grote projecten en mappenstructuren te werken.
  • Het werken met bestanden, via FTP, was moeilijker dan het gebruik van Espresso.
  • Het valt niet te ontkennen dat Vim niet zo fraai kan zijn als een native Cocoa-app.
  • Espresso heeft een kick-butt live voorvertoning functie die kan worden ingeschakeld, op een nieuw tabblad, gewoon door te typen Command + Option + P. Verder wordt dit venster in realtime bijgewerkt terwijl u typt.
  • Ik worstelde met het vinden van adequate foutopsporingsprogramma's voor Vim.

Onlangs, terwijl ik aan het spelen was met toetsenbordmacro's, vroeg ik me af of er een manier was om deze functionaliteit te porten. Misschien hou je van het idee; misschien haat je het.


Vereiste hulpmiddelen

Terwijl Vim 100% gratis is (dat is een deel van zijn grootheid), is Espresso dat niet. Verder gaan we toetsenbordmacro's maken met een programma, Keyboard Maestro genaamd. Dit is ook niet gratis. Ik ben er zeker van dat er op internet open source macro-creatieprogramma's beschikbaar zijn; dit is echter de beste die ik heb kunnen vinden. Het is de $ 35 waard.

Om mee te gaan, heb je nodig:

  • Een Mac
  • Een kopie van de Espresso-codebewerker van MacRabbit. Nogmaals, je kunt elke editor gebruiken; maar de macro's zullen enigszins verschillen. Volg deze tut en maak vervolgens je eigen editor-macro's. (Laat het me weten!)
  • Een kopie van Keyboard Maestro. Als je het nog nooit hebt gebruikt, kun je een volledig werkende proefversie van hun website downloaden. MacAppStorm heeft een geweldig artikel over KeyBoard Maestro, als je een primer nodig hebt.

Je eerste macro

Laten we beginnen met een eenvoudige macro. Vim gebruiken in normaal modus kunnen we typen CIW (verander het innerlijke woord) om het huidige woord te verwijderen en naar binnen te gaan invoegen mode.

Nu heeft Espresso niet modes, maar, zoals ik ontdekte, dat is oke. We kunnen deze opdrachten nog steeds typen; terwijl ze als gewone tekst worden ingevoerd, worden ze zodra ze worden geactiveerd, supersnel verwijderd.

Dus voor onze eerste macro willen we deze functionaliteit nabootsen. Wanneer de cursor op de top van een woord staat, wil ik snel typen cw om het woord te veranderen.

Umm ... waarom niet gewoon de Command + Shift + W kortere weg?

Ja, dat zouden we kunnen doen, maar naar mijn mening zouden we dat niet moeten doen.

  • Als elke eenvoudige opdracht zijn eigen verwarrende modifier + sneltoets heeft, wordt het snel moeilijk om ze allemaal te onthouden.
  • Ik hou van het taalaspect van Vim. Als je het eenmaal hebt geleerd, wordt het idee om terug te gaan naar het indrukken van meerdere modifidertoetsen een grote pijn.
  • Een groot voordeel voor Vim is dat het grote nadruk legt op het zo veel mogelijk vergrendelen van je vingers in de middelste rij van je toetsenbord. Hiermee kunt u niet alleen sneller typen, maar hoeft u ook niet elke keer uw vingers uit te steken als u een eenvoudige handeling wilt uitvoeren.

Taak 1

Bij het maken van een nieuwe macro is de eerste stap om uit te zoeken hoe de taak handmatig moet worden uitgevoerd in de code-editor. In dit geval, Shift + Command + W zal het woord selecteren. Vervolgens de verwijderen sleutel, natuurlijk, zal het woord verwijderen. Die twee commando's alleen zullen nabootsen CIW in Vim.

Start Keyboard Maestro op

De volgende stap is om de macro te maken. Start Keyboard Maestro op en creëer, vóór alles, een nieuwe groep speciaal voor je Vim-commando's.

Op deze manier kunt u deze snelkoppelingen beperken zodat ze alleen op Espresso worden toegepast, en niet bijvoorbeeld op Microsoft Word. Ik heb mijn groep gebeld, VimMimic.

Nu moeten we een nieuwe macro maken, een trigger instellen en de uitbreiding kiezen.

Als je je afvraagt ​​waarom we je bestaande TextExpander-programma niet gebruiken, is dat omdat programma's alleen tekst uitbreiden. Maar we moeten macro's of taken uitvoeren.

De macro opnemen

Met de voorbereiding uit de weg, nu moeten we onze stappen vastleggen. Hoewel Keyboard Maestro beschikt over een groot aantal mappen / commando's, is het geweldig dat het een "Record" -knop biedt, waar het alle toetsen die u typt, muisbewegingen / klikken, enz. Zal beluisteren en opnemen..

Als dat nodig is, gaat u terug naar Espresso en onthoudt u de toetsen / opdrachten die u moet typen om het woord te wijzigen. Wees hier echter slim over. Moet bijvoorbeeld uw macro iets selecteren sheldon.couper in zijn geheel? Of wilt u dat het alleen het woord selecteert, tot (of na) de periode? In Espresso, Command + Shift + W zal de laatste uitvoeren. Beslis hier zelf over. Ik denk dat ik het eerste zal doen en alles zal selecteren.

In dat geval moet ik slimmer zijn over de macro. Na een beetje spelen in de buurt, heb ik dit bedacht.

Maak desgewenst een tweede macro, CIW (verander het innerlijke woord), dat alleen voor of na de periode ook zal selecteren.

Het uitproberen

Zodra je je macro hebt voltooid, probeer het dan! Keer terug naar Espresso en typ, als de cursor over een woord staat cw. Dit zal dan de macro activeren, waarin al uw eerder opgenomen acties op hoge snelheid worden afgespeeld.

Ik hoop dat er een manier is om een ​​macro uit te voeren zonder de gebruikersinterface tot het einde bij te werken. Maar ik weet op dit moment niet hoe dit moet.

Een heel lotta-werk

Als je geen Vim-gebruiker bent, zou ik van je verwachten dat je bij jezelf denkt: "Alles werkt om een ​​woord te verwijderen?" En geloof me, ik begrijp het. Wat ik echter wel kan zeggen, is dat, als je Vim een ​​tijdje hebt gebruikt, een taal-achtige syntaxis veel logischer voor je is dan het onthouden van ontelbare sneltoetsen voor modificatietoetsen.

En toegegeven, dit is een zeer minimaal voorbeeld.


j voor Down; k voor Up

De eerste keer dat ik hoorde dat van mij werd verwacht dat ik de letters zou gebruiken om omhoog, omlaag, naar links en naar rechts te gaan (kjhl), Ik lachte. Hoe ouderwets is dat !? Maar als je eenmaal de sleutels van het spiergeheugen hebt vastgelegd, wordt je snelheid groter. U hoeft niet langer uw rechterhand naar het gedeelte rechtsonder van het toetsenbord te slepen om de pijl-omlaag te raken. Nee, je handen blijven in rustpositie, omdat die toetsen direct in de tweede rij liggen.

Vim gebruikt modes om te schakelen tussen opdrachten en tekst in te voegen. Maar zoals hierboven vermeld, heeft Espresso deze niet. Dus we gebruiken de Caps Lock sleutel om als onze te dienen normaal mode.

De Caps Lock-toets herberekenen

Stel jezelf de vraag: "Hoe vaak gebruik ik de Caps Lock sleutel? "Als je bent zoals ik, is het antwoord:" Bijna nooit. "Met dat in gedachten, haal er wat gebruik van uit de weg, en herleid zijn functie. Op een Mac is dit eenvoudig.

Ga naar Systeemvoorkeuren -> Toetsenbord -> Modificatietoetsen, en verander de Caps Lock om naar de Controle sleutel, die ik altijd problemen heb met richten als ik aan het typen ben (tenminste op mijn laptop).

Nu, wanneer u maar op drukt Caps Lock, de controle sleutel wordt geactiveerd.


Maak een nieuwe macro

Deze is lachwekkend eenvoudig, maar het werkt. Nu, wanneer u typt Caps Lock + J, de pijl naar beneden zal worden geactiveerd. Het is belangrijk om in gedachten te houden dat je niet gedwongen wordt om dit te gebruiken, als je dat niet wilt. U kunt nog steeds op de pijl-omlaagtoets drukken. Maar voor degenen die zich prettiger voelen om hun handen in rustpositie te houden, kan dit de voorkeur hebben.

Herhaal voor elke richting

De volgende stap is om de cyclus voor omhoog, links en rechts te herhalen - met exact dezelfde methode.


Verander Volgende '

Vim heeft een mooie opdracht, ci' waarmee je de inhoud van de volgende reeks kunt legen, verpakt in enkele aanhalingstekens. Het is verbazingwekkend nuttig en kan je codering echt versnellen.

Laten we proberen een macro te maken om dit in Espresso te doen. Deze zal ingewikkelder zijn, omdat we de zoekfunctie in Espresso moeten gebruiken om te zoeken naar het volgende exemplaar van een enkele quote. Dus, de oplossing zal niet perfect zijn, maar hij zal de klus gedeeltelijk klaren.

Probeer het zelf uit. Overal in uw document typt u cn'. Helaas werkt het, althans voorlopig, alleen perfect voor losse woorden in citaten.


Verander tot het einde van de regel

In Vim, als je een hoofdletter typt C, in de normale modus verwijdert het alle tekst op een regel die wordt weergegeven na de positie van de cursor. Het is erg nuttig. We kunnen hetzelfde doen in Espresso met een eenvoudige macro. Echter, Shift + C zal niet werken, omdat Espresso niet heeft modes. Laten we doen Caps Lock + C in plaats daarvan. Vergeet niet dat caps nu naar de Controle sleutel!


Verwijder de omringende tag

In Vim kan ik met de Surround-plugin typen dst (verwijder de omringende tag) om een ​​wrapping-tag te verwijderen. Ik gebruik het vaak. Hmm - dit wordt een lastiger exemplaar in Espresso, maar het kan worden gedaan. Hier is wat ik bedacht; probeer het uit op uw machine.

Het is een beetje ingewikkelder, maar het werkt!

Merk op dat, als het lijkt alsof een paar van die acties kunnen worden verwijderd, ze daar zijn omdat ik vreemde situaties vond waarin ze nodig waren. Het is beter om veilig te zijn.


Wijzig de omringende tag

Even zo handig als het verwijderen van de omringende tag, is veranderen de tagnaam.

Er is één krasgeluid over deze specifieke methode. Omdat Espresso niet op mode is gebaseerd, zal deze opdracht u naar het punt brengen waar u de waarde van de tag kunt wijzigen wanneer u de tag wijzigt. Zodra u dit doet, drukt u gewoon op Rechts, en plak in de originele tekst (die werd gekopieerd door de macro). Je zult zien wat ik bedoel als je het uitprobeert. Laat het me weten als Espresso een ingebouwd change-tag-name commando heeft.


Conclusie

Oké, daar moet je mee beginnen. Als je een Premium-lid bent, raadpleeg dan het videogedeelte van deze tutorial voor een meer een-op-een-demonstratie. Ik heb een repository gemaakt bij Github, die tientallen opdrachten bevat die je gratis kunt gebruiken (en verbeteren) naar wens.

Dingen om bang voor te zijn

  • Kies geen snelkoppelingen die u normaal zou typen. Gebruik bijvoorbeeld dd om een ​​regel te verwijderen, zal je elke keer dat je typt dingen verpesten "Een grapje."
  • Wees voorzichtig met het negeren van ingebouwde commando's. Dit is altijd moeilijk; het kan wat vallen en opstaan ​​kosten om de meest niet-intrusieve snelkoppelingen te vinden.

Wat denk je ervan? Vind je het idee leuk? Ik ben nieuwsgierig, hoewel ik in het laatste kamp paste.

De macro-groep Keyboard Maestro wordt voortdurend bijgewerkt. Als u de meest recente versie wilt downloaden, kunt u deze hier downloaden: http://github.com/JeffreyWay/VimMimic-for-Espresso

Tutorial koppelingen:

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