Cool Kids go Old-Skool

René Krewinkel
23-01-2024

Er komt een moment, en dat gaat vrij ongemerkt, dat je de muis steeds vaker naast je toetsenbord laat liggen en je je IDE of editor met de diverse toetscombinaties gaat bedienen - en, geloof het of niet, dat werkt én veel sneller én je blijft lekker in je flow zitten.

Dat moment gaat meestal gepaard met het besef dat je ook de bijhorende workflows (bijvoorbeeld de commit en push van je git repositories) op een gegeven moment "met de hand" gaat doen, en ook dàt werkt lekker snel.
En voor je het weet woon je een groot deel van je dag op command line - hetzij bash of zsh op Linux en Mac systemen of Powershell / Git Bash op Windows.

Nu ben ik in de '90s opgegroeid met HP-UX en Sun Solaris systemen, dus een groot deel van de dag bestond al uit "werken op de prompt" met de notoire vi editor als enige tool.
Tegenwoordig heb ik in mijn dagdagelijkse werk als (front-end) developer gemiddeld 4 terminal schermen open waarin allerlei commando's en servers draaien die moet ik opstarten, afsluiten, herstarten etc. Ook de diverse runtimes en frameworks (React, React Native, Rust) hebben eigenlijk alleen maar een CLI (command line interface) programma om de boel te starten of te compileren.

Om in mijn eigen workflow te blijven, schrijf ik zelf ook steeds meer CLI tools (in oa. Rust, Ansible en NodeJS) die me helpen om efficiënter te werk te gaan en veel zaken te standaardiseren. Atomic Bomb heb ik bijvoorbeeld ontwikkeld om het Atomic Design principe in mijn front-end applicaties te implementeren.

En al doende kom je erachter dat de ingebouwde terminals van je Mac (of Windows machine) je niet echt de flexibiliteit bieden die je eigenlijk nodig hebt.

Op zoek naar een nieuwe dus.

Terminals

Na wat uitprobeersels ben ik geland op de volgende twee: Hyper.is is een fraaie terminal waar een hele community mooie themes en plugins voor schrijft. Is redelijk eenvoudig te configureren als je tenminste een beetje thuis bent in JavaScript en JSON. Voor een groot deel geschreven in JavaScript, C++ op basis van Electron, is het een stabiele app die doet wat-ie moet doen, soms is-ie wat aan de trage kant, maar over het algemeen draait het soepel.

Wil je (op je Mac tenminste - Windows en Linux in de maak) iets meer power, dan is Warp dè terminal of choice! Geschreven in Rust en dat merk je. Lekker snel en stabiel, redelijk configureerbaar en je kunt ook relatief eenvoudig je eigen themes maken. Met ingebouwde AI features en al. Warp is geschreven dóór en vóór developers en DevOps engineers, je kunt commands opslaan en workflows maken zonder dat je meteen zwaar aan het shell-scripten moet slaan. 

Ook heeft Warp al een ingebouwde "autocomplete" feature voor je files en directories en een direct toegankelijk history. In Hyper.is zul je dan een tool als Fig moeten installeren om dit voor elkaar te krijgen.

En met PowerLevel10K kun je je prompt ook nog eens fraai configureren, waardoor je (oa.) git informatie in je prompt te zien krijgt.

Veroordeeld tot de command line

En als je dan eenmaal het stadium van CLI-nerd bereikt hebt, dan heb je (om met collega docent Geert te spreken) levenslang...

Zo blijkt bijvoorbeeld dat onze ouwe, getrouwe vi editor, op Linux ge-reimagined  tot "vim", een nieuwe upgrade heeft gehad tot "NeoVim". Een old-skool (open source) terminal editor in een nieuwig jasje. Die behoorlijk wat fans in de Rust-community heeft.

NeoVim is GE-WEL-DIG, je kunt 'm helemaal configureren zoals je zelf wilt (maar Esc-:q! is nog altijd de manier om eruit te komen), complete met Language Servers voor zo'n beetje elke denkbare taal en debuggers voor zo'n beetje elke denkbare taal.

De prijs die je betaalt is "verslaving". Werken VSCode en Webstorm/PHPStorm gewoon out-of-the-box zoals het hoort, NeoVim is een veeleisend, nukkig kreng (online zag ik de term The Dark Lord) dat je moet temmen met je eigen instellingen en settings via Lua en/of vim.script. Maar als je 'm eenmaal zover hebt - en dan krijg je autocompletion, linting, debug features, code formatting: you name it - en je EINDELIJK de toetscombinaties in je muscle memory hebt zitten, dan wil je niet meer anders.

Enjoy the journey...

03-neovim.png

Git

En als je dan toch op de CLI woont, probeer dan meteen even LazyGit en beheer je repo's en merge conflicten en stashes gewoon op een inzichtelijke manier. Vele malen beter dan VSCode en de JetBrains suites dat kunnen.

02-lazygit.png

Voor JavaScript en React toepassingen grijp ik nog steeds primair naar WebStorm, maar voor Rust en alle andere talen en tools is NeoVim de "editor of choice".

Last but not least...

Het beste voor het laatste: ik kwam een CLI tooltje tegen dat volgens mij een van mijn favorieten gaat worden. Het tooltje heeft de welluidende naam The Fuck en is zo slim dat het met een suggestie komt als je een typo in commando maakt: 

 

the-fuck.png

 

All you need is a terminal...