Ik heb een bekentenis: ik heb jaren besteed aan het perfectioneren van mijn dotfiles. Custom vim mappings, tmux prefix veranderd naar Ctrl+a, fancy shell prompts, aliassen voor alles. Mijn setup was perfect. En toen SSH’de ik naar een productieserver om een probleem te debuggen, en ik was nutteloos.

Geen custom mappings. Geen plugins. Geen aliassen. Gewoon vanilla vim met z’n standaard keybindings die ik compleet vergeten was. Ik struikelde rond, kon me niet herinneren hoe ik basis navigatie moest doen, en voelde me als een complete beginner.

Dat was het moment dat ik realiseerde: ik had voor het verkeerde geoptimaliseerd.

De Customization Valkuil

Het is makkelijk om in het customization konijnenhol te vallen. Je leest over iemands geweldige vim config op Reddit. Je ziet een dotfiles repo met 3000 sterren op GitHub. Je denkt: “Als ik alleen deze plugin toevoeg, word ik zoveel productiever.”

En dat word je ook. Op jouw machine. Met jouw config.

Maar hier is het ding: je hebt niet altijd toegang tot je config.

  • Je SSH’t naar een server die alleen vanilla vim heeft
  • Je pair programmed op de machine van een collega
  • Je werkt op een afgesloten laptop van een klant
  • Je zit in een Docker container met minimale tooling
  • Je zit op een verse VM en moet NU iets debuggen

In deze momenten zijn al je zorgvuldig samengestelde customizations waardeloos. Wat telt is of je kunt werken met wat er is.

Het Argument voor Defaults

Ik zeg niet dat je je tools niet moet customizen. Ik zeg: leer eerst de defaults, customizen komt daarna.

Er is een cruciaal verschil tussen:

  1. De defaults kennen en kiezen om ze te overschrijven
  2. De defaults nooit leren en alleen je custom setup kennen

De eerste persoon kan overal werken. De tweede is hulpeloos zonder hun dotfiles.

Vim: Leer Voordat Je Remapt

Vim’s standaard keybindings zijn… raar. Geen vraag. Maar ze zijn ook ongelooflijk goed doordacht en consistent op elke vim installatie op elk Unix systeem sinds de jaren ‘70.

Voordat je jk remapt naar escape, leer om Ctrl+[ te gebruiken. Het werkt overal — vim, bash, elke readline-gebaseerde tool. Voordat je een fuzzy finder plugin installeert, leer :find en :edit **/*. Voordat je custom text objects toevoegt, beheers de ingebouwde.

Defaults die het waard zijn om te kennen:

DefaultWat het doetWaarom het uitmaakt
Ctrl+[EscapeWerkt in elke terminal, niet alleen vim
Ctrl+o / Ctrl+iJump list navigatieGeen plugin nodig
:!commandShell commando uitvoerenBeschikbaar op elke vim
* / #Zoek woord onder cursorDirect, geen config
%Spring naar matchende bracketIngebouwd sinds altijd
gfGa naar bestand onder cursorWerkt out of the box
Ctrl+a / Ctrl+xVerhoog/verlaag nummersOnderschatte default

Ik gebruik nog steeds plugins. Ik heb nog steeds custom mappings. Maar ik kan achter elke machine met vim gaan zitten en direct productief zijn, omdat ik weet wat vim me gratis geeft.

Tmux: Prefix Maakt Minder Uit Dan Je Denkt

Ieders eerste tmux customization: verander de prefix van Ctrl+b naar Ctrl+a. Ik deed het ook. “Ctrl+b is onhandig,” zeggen we. “Screen gebruikte Ctrl+a,” rechtvaardigen we.

Maar hier is de realiteit: de prefix wordt één keer ingedrukt, dan druk je een andere toets. De “onhandigheid” van Ctrl+b is één toetsaanslag die je duizenden keren doet en waar je spiergeheugen voor opbouwt. Ondertussen conflicteert Ctrl+a met “ga naar begin van regel” in bash — een keybinding die ik constant gebruik.

Belangrijker nog: wanneer je SSH’t naar een server met tmux geïnstalleerd, gebruikt het Ctrl+b. Als je jezelf getraind hebt op Ctrl+a, druk je constant de verkeerde prefix.

Defaults die het waard zijn om te kennen:

DefaultWat het doet
Ctrl+b %Verticale split
Ctrl+b "Horizontale split
Ctrl+b oCycle door panes
Ctrl+b zZoom pane
Ctrl+b [Copy mode
Ctrl+b dDetach
Ctrl+b ?Toon alle keybindings

Die laatste — Ctrl+b ? — is je reddingslijn op elke tmux installatie. Je hoeft niet alles te onthouden als je het snel kunt opzoeken.

Shell Tools: Portable Kennis

Hetzelfde principe geldt voor grep, awk, sed, find, en de rest van de Unix toolkit.

Ik zie mensen ripgrep installeren en vergeten dat grep bestaat. Ze gebruiken fd en kunnen zich de find syntax niet herinneren. Ze aliassen alles naar de moderne alternatieven.

Deze moderne tools zijn geweldig. Ik gebruik ze dagelijks. Maar grep staat op elk Unix systeem. Find is overal. Awk en sed zijn voorgeïnstalleerd op elke server waar je ooit naartoe SSH’t.

Wanneer je om 3 uur ’s nachts een productieprobleem debugt, heb je geen tijd om ripgrep te installeren. Je moet werken met wat er is.

Leer deze, gebruik dan alternatieven:

# grep basics die overal werken
grep -r "pattern" .           # recursief zoeken
grep -l "pattern" *.log       # bestanden met pattern
grep -v "exclude"             # inverse match
grep -E "regex|pattern"       # extended regex

# find basics
find . -name "*.py"           # vind op naam
find . -mtime -1              # gewijzigd in laatste dag
find . -type f -exec cmd {} \; # voer uit op resultaten

# awk one-liners
awk '{print $2}' file         # print tweede kolom
awk -F: '{print $1}' /etc/passwd  # custom delimiter
awk 'NR==5' file              # print regel 5

Ja, ripgrep is sneller. Ja, fd heeft mooiere syntax. Maar grep en find zijn er altijd.

De 80/20 van Defaults

Dit is mijn praktische aanpak: leer 80% van de defaults, customizen 20%.

De defaults die ik altijd ken:

  • Core navigatie (hjkl in vim, Ctrl+b in tmux, Ctrl+a/e in bash)
  • Zoek en vervang basics
  • Bestandsoperaties
  • Help systemen (:help, man, --help)

De dingen die ik customize:

  • Kleurenschema’s (want het leven is te kort voor lelijke terminals)
  • Een paar kritieke mappings die defaults niet overschrijven
  • Shell prompt (maar ik kan zonder werken)
  • Tool-specifieke instellingen die fundamenteel gedrag niet veranderen

De sleutel is: mijn customizations zijn toevoegingen, geen vervangingen. Ik remap Ctrl+b niet naar iets anders — ik voeg misschien nieuwe bindings toe, maar de defaults werken nog steeds.

Portable Spiergeheugen Opbouwen

Er is een mentale verschuiving nodig. In plaats van te denken “hoe laat ik deze tool werken zoals ik wil,” denk “hoe werkt deze tool, en kan ik ermee leven?”

Vaak is het antwoord ja. Vim’s defaults zijn raar maar leerbaar. Tmux’s prefix is prima zodra je stopt met ertegen vechten. Grep’s syntax is verbose maar memorabel.

En wanneer je wel customized, vraag jezelf af: “Maakt dit me hulpeloos op een vanilla systeem?”

Als het antwoord ja is, denk twee keer na.

Wanneer Customization Zinvol Is

Ik pleit niet voor puur minimalisme. Customization heeft z’n plek:

  1. Toegankelijkheid: Als je RSI of fysieke beperkingen hebt, remap gerust. Je gezondheid is belangrijker dan portabiliteit.

  2. Team standaarden: Als je hele team dezelfde config gebruikt, wordt dat praktisch gezien je “default”.

  3. Niet-conflicterende toevoegingen: Nieuwe functionaliteit toevoegen die bestaand gedrag niet overschrijft is meestal veilig.

  4. Alleen-lokale workflows: Als je nooit SSH’t naar servers, nooit pair programmed, en altijd je dotfiles hebt — customize vrij. (Maar de meesten van ons hebben die luxe niet.)

Praktische Oefeningen

Wil je je defaults kennis testen? Probeer deze:

  1. SSH naar een server en edit een config bestand met vim. Geen plugins, geen vimrc. Kun je navigeren, zoeken, vervangen en opslaan?

  2. Start een vanilla tmux sessie. Maak splits, navigeer ertussen, maak nieuwe windows. Allemaal met standaard bindings.

  3. Debug iets met alleen grep en find. Geen ripgrep, geen fd, geen aliassen. Kun je vinden wat je zoekt?

  4. Schrijf een snelle awk one-liner. Extract een kolom uit een logbestand. Niet googlen.

Als je met een van deze worstelt, dat is je signaal. Dat zijn de defaults die het waard zijn om te leren.

Conclusie

Je dotfiles zijn een persoonlijke expressie van hoe je graag werkt. Daar is niks mis mee. Maar onder alle customization zou je een solide fundament van default kennis moeten hebben.

Want op een dag zit je ge-SSH’d in een minimale container, een productieprobleem aan het debuggen, met niks anders dan vanilla vim en een deadline. En op dat moment zal het kennen van de defaults je redden.

Leer de defaults. Customize daarna. Niet andersom.


Gerelateerd: Ik schreef over mijn dotfile management setup met chezmoi en mise — maar merk op dat zelfs daar mijn customizations minimaal zijn en het standaard gedrag niet kapot maken.