Log in
Seblog.nl

Seblog.nl

Ik zie veel zoveel-jaar-geledens vandaag, dus ik dacht ik doe ook mee: vandaag is het 16 jaar geleden dat ik een weblog lanceerde op Seblog.nl en aangezien ik toen 16 was ben heb ik vanaf vandaag langer wel een weblog dan niet.

De maan schijnt recht mijn kamer in, ik heb hem nog nooit zo vol gezien, zo veel licht. Ergens bang om nu een wolf te worden maar vooralsnog voel ik me prima.

Faster copy to clipboard in Vim

tl;dr: I just mapped Y to "+y and I am very pleased with it.

A coworker saw me copying some text out of Vim and humored me: everything seemed to happen like magic in my editor, but for a simple thing as copy and paste I needed a lot of keys.

It is true: in order to copy text within Vim, you can use the y command, combined with the motion of what you want to yank. So: yiw will yank inside a word, ggyG will go to the top of the file and then yank until the bottom (so, the whole file), yy will yank a full line. But these yanks are only pastable (with p) within Vim itself.

In order to get text out of Vim, you need to use a special register. Registers are a sort of named boxes, letters a to z, in which you can put snippets of text. To use it, you prefix your yank (or delete) with a quote: "ayi( will select register a and then yank the text within parentheses. To get to your system clipboard (the one all other programs use), you select the special register with "+.

Thus: my coworker saw me hunting for the "+y combination, probably. I almost always look at my keyboard when I do that, so awkward is the combination. But I just found a solution: Y.

nmap Y "+y
vmap Y "+y

By default, Y does a yy, which I never use, because it's inconsistent with other commands. D, for example is equivalent to d$, delete until the end of the line, same for C as c$. I guess it makes Y play along with V (line-wise visual select) and S (subsitute full line), but I always use yy anyway, so Y is free to use. When I now want to yank to my system clipboard, I just use Y instead of y and that's it.

You can also consider adding this as gy, which does not have a meaning, but g combines with various commands to activate variation of their meaning, so it's not a bad choice either. I mapped it to both and will see which one sticks.

Adding a prefix to TailwindCSS classes with VIM

Today we needed to add a TailwindCSS prefix to a small project we are building, to prevent clashes with other TailwindCSS classes on the same page. The setting in the tailwind.config.js was straightforward, we added this:

module.exports = {
  prefix: 'sf-',

... and now TailwindCSS will generate classes like .font-bold and .border-none as .sf-font-bold and .sf-border-none. Next up, we needed to replace all the classes in the project with their prefixed counterpart.

There were some plugins available to do this automagically in Webpack, but we decided we wanted to add them manually. A few of the classnames are dynamically set, and we doubted the plugins would find all those cases. Also: the plugins seemed to be old.

My co-worker started writing a regex for a search-and-replace, but soon stranded. You need to find the proper locations, and then within those locations, add the prefix. The prefix, however, is sometimes more of an infix, since there are other prefixes that are added before the prefix itself. See the class with md: for example:

<div className="bg-gray-100 px-4 md:px-0">
// Becomes:
<div className="sf-bg-gray-100 sf-px-4 md:sf-px-0">

While he worked on the regex and subsequently went to get coffee, I thought: I should be able to solve this in VIM in some way. I know I can make a visual selection and then type :! to get the selection as input into some shell command. If I pipe the lines to some script, I can then just split strings all I want.

One problem I ran into was that, if I make a visual selection within quotes (vi") and I then use the colon-exclamation to pipe it to some script (:'<,'>! php transform.php), I will receive the full line, as if I was using the line-wise V selection.

While searching the internet I thought: can I use a register here? And the internet had a solution for that. I ended up running the following command:

:vmap m "ay:call setreg('a', system('php transform.php', getreg('a')))<cr>gv"ap

This sets up a mapping for visual mode, and binds the m to do a series of things. It first selects the 'a' register and yanks ("ay). Since we are already in visual mode here, y is a direct yank of that selection. We are now in normal mode, so we continue to type out a command that calls a function to set register 'a' again with the output of a system call to php transform, taking in the current contents of register 'a'. We execute this command by pressing enter (<cr>). Register 'a' now contains the scripts output. We then re-select the last visual selection (gv in normal mode) and then paste from register 'a' ("ap). This effectively runs the script over the visually selected area.

I then just opened the alphabetically first file of the project and manually made visual selections that selected all the classnames. For this, I also temporary mapped m to vi", so I could just do mm once my cursor was in a className="..." (for which mouse mode is nice too: click + mm, very fast). Then, to get to each next file, just press ]f.

The project was small enough to do this last part so manually, but this at least saved me a lot of stops in between all the classnames, and also saved me the headache to scan for md: prefixes and pick the right spot. Even when the classnames were actually in a backtick-string it was no problem: as long as I defined a correct visual selection, m would replace things.

For completeness, here is transform.php:

<?php

$input = file_get_contents('php://stdin');

$classes = array_filter(explode(' ', $input));

$classes = array_map(function ($class) {
    $parts = explode(':', $class);
    $parts[count($parts)-1] = 'sf-'.$parts[count($parts)-1];
    return implode(':', $parts);
}, $classes);

echo implode(' ', $classes);

Ik blijf hiervan schrikken... Een raar rommelend geluid, eigenlijk best wel dichtbij, ergens op je bureau zelfs. Zijn het je boxjes? Die staan uit. Komt het uit je monitor? Onwaarschijnlijk. Regent het ergens naar binnen? Geen raam hier. Zit er soms een beest binnen?

Nee, het is je externe harde schijf, zoals elke keer als je een backup maakt.

Zojuist ging opeens het licht uit. Dus ik denk: huis, wat is dit? Het ging namelijk met een kleine fade-out, niet direct, dus ik wist dat het niet aan de elektriciteit lag.

Toen bedacht ik me: ik had net even verbindingsproblemen op mijn iPhone, dus ik had wifi even uitgezet om te zorgen dat hij via 4G verbonden was.

En inderdaad, ik zet op mijn iPhone de wifi weer aan en direct gaat het licht aan. Welkom in 2022.

Toetsenborden: 34 toetsen, hoe dan?

Dit is onderdeel van een serie over toetsenborden, zie het eerste deel voor een overzicht.

Ik wilde ze serie afsluiten met een stuk over hoe ik de 34 toetsen van mijn nieuwe toetsenbord heb ingedeeld. Want inderdaad, dat is best wel weinig. De Apple Magic Keyboard heeft er 79, de Moonlander heeft er 72, de eerder gelinkte video eindigt met een minimalistisch toetsenbord met maar 36 toetsen en dan nóg heeft de Ferris twee toetsen minder.

Zoals de video uitlegt: één van de strategieën om hiermee om te gaan, is het concept van layers. Zodra je de Shift-knop indrukt wordt de betekenis van vrijwel alle toetsen anders: alle letters veranderen in hoofdletters, maar cijfers en tekens veranderen in andere tekens. Door naast Shift een aparte ‘Symbol’-knop toe te voegen kan je in een kleiner aantal toetsen nog steeds heel veel tekens kwijt.

q w e r t   y u i o p
a s d f g   h j k l ;
z x c v b   n m , . /

1 2 3 4 5   6 7 8 9 0
! @ # $ %   ^ & * ( )
[ ] ` ~ '   " _ = + -

Toch kreeg ik het niet helemaal passend. In het bovenstaand voorbeeld mis ik toetsen voor {, }, \ en |, en eventueel § en ± – al gebruik ik die niet zo vaak. Een oplossing was om ook een ‘Num’-layer toe te voegen, maar die kreeg ik dan vervolgens niet helemaal vol. Daarnaast wilde ik een navigatie-layer, met pijltjes en volume, en voor je het weet heb je met Shift, Symb, Num en Nav al vier toetsen bezet, terwijl er dus maar vier zijn voor de duimen en ik één daarvan spatie wil houden en nog iets met Cmd en Ctrl wil.

Ik heb het nog even gezocht in het prachtige concept van de tri-layer. Hierbij heb je dus een knop voor Lower en een knop voor Raise, die dus elk een eigen layer activeren, maar dus ook tegelijk kunnen worden gebruikt voor weer een hele nieuwe layer. Helaas had ik dan nog steeds één layer teveel en vooral duimknoppen te weinig. (Andere helaas is dat je dit niet kan instellen met de Configurator en echt de code in moet duiken, maar daar voel ik me gelukkig best thuis.)

Je zou ook kunnen werken met een meer bladerend principe, waarbij je van Layer 1 naar Layer 2 komt door éénmaal op een knop te drukken en dan los te laten. Van Layer 2 kan je dan naar Layer 3 komen via een andere knop, en als je zorgt dat je vanaf elke andere layer steeds weer naar Layer 1 kan via dezelfde knop ben je in principe nooit de weg kwijt, zegt deze video, maar ik durfde het toch niet helemaal aan.

De standaardconfiguratie van de Ferris lost het probleem op door ‘Mod-Taps’ te gebruiken. Het idee hierbij is dat je een toets iets anders kan laten doen voor het indrukken en loslaten dan voor het indrukken en vasthouden. Wie de linkerknop met het bultje indrukt en loslaat krijgt een F, maar wie diezelfde knop vasthoudt komt in een Symbol-layer terecht, waardoor andere knoppen daarna symbolen geven. Het is vrij ingenieus en behoorlijk efficiënt, maar ik vind het persoonlijk erg irritant dat bepaalde letters niet direct op mijn scherm verschijnen.

Momenteel gebruik ik Combo’s om al mijn toetsen kwijt te kunnen. Ik sluit niet uit dat het nog eens gaat wijzigen in de toekomst, maar momenteel ben ik er tevreden mee. Het idee is als volgt: wie op de Q drukt krijgt een Q en wie op de A drukt krijgt een A, maar QA samen ingedrukt geeft een 1 (de toetsen sluiten op elkaar aan, dus heel lastig is het niet). Op die manier is de hele bovenste + middelste rij vol met getallen, en de middelste + onderste rij bevatten alle tekens, plus de Tab (T). Op de standaardlayer heb ik een Backspace (B) en Enter (E).

q w e r t   y u i o p
a s d f g   h j k l B
z x c v b   n m , . E

1 2 3 4 5   6 7 8 9 0
` - = T \   / ' ; [ ]

Merk op dat ik eigenlijk een andere layout gebruik dan Qwerty, maar ik wil deze post niet nog obscuurder maken dan het al is. Merk ook op dat er helemaal geen letters op mijn keycaps staan, dus daar hoef ik me niet door te laten afleiden. En merk op dat ik hier alleen vertikale combinaties gebruik: als ik netjes elke vinger voor de juiste kolom gebruik kan ik nooit per ongeluk een cijfer typen omdat ik de toetsen te snel achter elkaar indruk. (En mijn andere layout zorgt ervoor dat dergelijke combinaties op dezelfde vinger ook vrijwel nooit voorkomen.)

Wat ik hier ook fijn aan vind is dat ik hiermee geen enkele duimknop hoef op te geven voor layer-navigatie. Alle knoppen zijn gewoon vlak onder mijn vingers en los van de combinatie zelf heb ik er dus geen extra knop voor nodig: het aantal gelijktijdig ingedrukte knoppen blijft twee, maar slechts op één vinger. Voor sommige wordt dit drie: de twee knoppen voor 1 plus Shift erbij geeft een uitroepteken. Nog steeds erg overzichtelijk.

Dan voor de duimen op links zitten Shift en Command (Cmd) en op rechts zitten Ctrl/Escape en Spatie. Omdat ik veel programmeer in Vim heb ik Escape vaak nodig, maar hij combineert nooit echt met Ctrl, en hier is de vertraging net iets minder hinderlijk, dus hier heb ik de Mod-Tap techniek wel toegepast. Nergens op de duimen dus momenteel een Layer-switch.

Maar de pijltjestoetsen dan? Daarvoor heb ik op beide handen toch nog een layer weten te verstoppen: als je, als combo, je hele hand op de rechterzijde neerlegt, worden de middelste toetsen op de linkerhand een set aan pijltjestoetsen in WASD-style. Hetzelfde werkt ook andersom, maar dan besturen ze de muis-cursor, in HJKL-style. In beide layers zitten ook media-controls voor volume en play/pause.

- - ^ - -   - a l t !
- < v > -   - X X X X
- - - - -   - h y p r

a l t ! -   - - - - -
X X X X -   - < v ^ >
h y p r -   - - - - -

Als je dezelfde vier vingers één rij naar boven doet krijg je een Alt-toets. Dit werkt op beide zijden, zodat je het met je andere hand kan doen als je hem wil combineren met één van de toetsen in die rij. In de onderste rij is dit de Hyper-knop, wat weer een wereld op zich is. In kort: Hyper is Shift+Ctrl+Alt+Cmd, wat een idiote combinatie is die niemand kan indrukken en daarom altijd nog vrij is, ideaal voor je eigen globale shortcuts. Ik kan Hyper combineren met cijfers om snel naar bepaalde programma’s te springen dankzij Hammerspoon, en nog wat meer dingen.

En dat was het. Ik ben er vrij zeker van dat er nog bepaalde zaken gaan veranderen in mijn configuratie, maar vooralsnog ben ik hiermee tevreden. Het was nogal een konijnenhol, hopelijk heb ik jullie niet al te ver meegetrokken. Dan ga ik nu weer even verder oefenen op Monkeytype. Doei.

Toetsenborden: mijn persoonlijke Andeweg layout

Dit is onderdeel van een serie over toetsenborden, zie het eerste deel voor een overzicht.

Laat ik beginnen met een disclaimer: ik ben nog heel erg bezig met het leren van deze layout, en erg hard gaat dat niet omdat alle toetsen op een andere plek zitten (behalve één, bij toeval). Toch denk ik dat ik er geen grote wijzigingen meer in aan wil brengen, dus hier is hij:

z l u w v   f p o d ,
h r e s g   b n a t i
k j / m x   q c ; y .

Veel plezier ermee, dank voor het lezen.

Nee, ik zal iets meer uitleg geven bij deze ogenschijnlijk willekeurige rangschikking van letters. Het is gebaseerd op de ISRT-layout, maar dan dus totaal anders, met ook een paar andere design-overwegingen.

Laat ik beginnen bij waar we waren gebleven: Colemak voor het Nederlands. Colemak is beter dan Qwerty in veel opzichten, maar heeft daarbij wel wat keuzes gemaakt die beter uitpakken voor Engels dan voor Nederlands. Door de nieuwe locatie van de J, K en L werd bijvoorbeeld het achtervoegsel -lijk heel erg lastig te typen, terwijl het op Qwerty best lekker gaat. Hoe dieper je optimaliseert voor een bepaalde taal, hoe minder lekker andere talen passen. Wat dat betreft is Dvorak een mooi compromis dat voor veel verschillende talen werkt.

Echter: de tijden zijn ook een beetje veranderd. Om een typemachine te maken heb je een productielijn nodig; daar is behoefte aan een layout die universeel is. Dankzij het wonder van software is het wijzigen van een layout tegenwoordig veel en veel simpeler. We kunnen het ons veroorloven om te optimaliseren voor kleinere eenheden, zoals het relatief kleinere taalgebied van Nederlands. Maar waarom daar stoppen? Het zijn mijn handen, ik kan een persoonlijke layout creëren die geoptimaliseerd is voor het schrijven van Nederlands én Engels, precies in de mix zoals ik het gebruik.

Dit is waar ik op het idee kwam om de teksten op dit weblog te gebruiken. Ik heb nogal wat tekst geschreven en gepubliceerd hier, in zowel Nederlands als Engels. Het corpus dat ik daaruit samenstelde bevat 248.220 woorden in 1.560.699 tekens (inclusief spaties, etc). Vervolgens heb ik scripts geschreven om daar frequenties van letters, lettercombinaties en woorden uit te kunnen halen, om zo een beter toetsenbord samen te stellen.

Gewapend met die data nog een andere overweging. Ik merk aan mijn handen dat in de overgang van Qwerty naar Colemak, mijn rechterhand veel meer is gaan doen dan mijn linkerhand, relatief gezien. Dit blijkt te kloppen: op basis van mijn weblog-teksten heeft Qwerty een handverdeling van 60%/40% en Colemak een verdeling van 39%/61%. Vooral het verplaatsen van de E is een grote: 16.2% van alle letters is een E.

Zoals ik net al zei is mijn layout gebaseerd op de ISRT-layout. Deze layout probeert ‘same finger bigrams’ te voorkomen: veelvoorkomende lettercombinaties die je met dezelfde vinger zou moeten typen. Die zijn kostbaar, omdat je niet alvast je andere vinger kan klaarzetten terwijl je een toets indrukt. Een layout die de E, T, N, A, I en O aan één wijsvinger toewijst is erg inefficiënt in dit opzicht.

Het nadeel van ISRT is dat het zwaar geoptimaliseerd is voor Engels. In het Nederlands zijn de frequenties van lettercombinaties gewoon niet hetzelfde. Maar gelukkig heeft de maker zijn scripts online gezet, en heb ik dus een bak tekst die ik het kan voeren. Omdat er een element van randomness in zit krijg je telkens nét andere layouts, maar hier is wat er uit kwam rollen nadat ik de iteraties lekker hoog had gezet:

0    1    2    3    4    5    6    7    8    9
u    d    l    f    b    g    k    w    .    o     27.4
e    t    r    n    p    m    h    s    i    a     63.7
'    y    j    q    c    v    z    x    ,    ;     08.9
18.0 13.2 10.6 09.0 04.9 06.9 06.5 07.0 09.6 14.4

Merk op dat deze layout verschrikkelijk is: het gooit 18% van alle aanslagen op de linkerpink. Maar het is een mooi overzicht met scores, dus dit heb ik in Number (Excel) gegooid, zodat ik makkelijker met kolommen kon schuiven en totalen berekenen.

Na wat schuiven kwam ik tot deze layout:

zluwvcfod,
hresmpnati
kj/xgbq;y.
6,510,61876,94,9914,413,29,6

Deze layout heeft een handverdeling van 49%/51%, wat ik erg acceptabel vind. Het lijkt alsof de wijsvingers weinig te doen hebben, maar bedenk dat ze verantwoordelijk zijn voor twee kolommen. Als je die bij elkaar op telt kom je voor beiden op 13,9% uit, wat juist een hele mooie verdeling geeft ten opzichte van de andere vingers.

Tot slot heb ik de letters op elke wijsvinger nog wat beter neergezet op basis van frequenties. De plaatsing is hier ontzettend beïnvloed door de layout van de Ferris Sweep waar ik dit nu op gebruik. Als je ‘m op een traditioneel toetsenbord wil gebruiken zou ik de indeling voor de wijsvingers anders hebben gedaan (de plek van de Qwerty Y is erg lastig – zet daar de Q neer – terwijl de Qwerty N juist erg simpel is – zet daar de F).

Dit alles brengt ons dus tot deze layouts:

z l u w v   f p o d ,
h r e s g   b n a t i
k j / m x   q c ; y .
z l u w v q p o d ,
 h r e s g b n a t i
  k j / m x f c ; y .

Ik ben er nog niet heel bedreven in, maar ik ben vrij zeker dat ik op het moment van schrijven de snelste persoon ter wereld ben op deze layout. Het is een goede gewoonte om een toetsenbord-layout naar de achternaam van de maker te noemen (Dvorak, Colemak, Norman), dus noem deze dan de Andeweg, maar Zluw kan natuurlijk ook.

Een laatste variatie nog. De Ferris Sweep heeft heel weinig toetsen en in de laatste aflevering van deze serie wil ik het nog hebben over hoe ik dat oplos. Twee hele toetsen voor / en ; is echter een beetje zonde, dus ik heb besloten dat / wordt vervangen door Enter en ; door Backspace. Die heb ik momenteel op de aangegeven plekken zitten, maar ik overweeg om die gekke middenplekken aan , en . te geven, zodat ik Backspace en Enter op de rechterpink heb. Dit verandert wel de bigram-scores, dus ik ben er nog niet helemaal uit, maar dit kan.

Morgen de laatste aflevering van deze serie, hopelijk, over de 34 toetsen van de Ferris.

Toetsenborden: hoe leer je een andere layout?

Dit is onderdeel van een serie over toetsenborden, zie het eerste deel voor een overzicht.

Zoals ik deze week al liet doorschemeren ben ik bezig mezelf een nieuwe layout aan te leren op mijn nieuwe toetsenbord. De meeste mensen gebruiken Qwerty, eerder deze week introduceerde ik een versie van Colemak voor Nederlands en morgen omschrijf ik mijn nieuwe layout.

Voor mijn ‘Colemak Mod-NL’ heb ik ongeveer 60 woorden per minuut gehaald, dus wilde ik een blogpost schrijven over hoe je dat moet doen. Mijn nieuwe layout verplaatst echter alle toetsen, en daarvoor is nog weer iets meer moeite nodig. In deze post dus ook de geüpdatete strategie.

Maar voor ik wat tools deel: dit kost tijd en moeite. Veel tijd en moeite. Is het het waard, als je al 70+ woorden per minuut op Qwerty kan? Waarschijnlijk niet. Maar ik vind deze alternatieve layouts wel dusdanig ‘lekker’ aanvoelen dat ik wel gewoon doorga met – jawel – uren investeren.

Als je gewoon eens wat wil proberen raad ik aan om eens te kijken naar DitchQwerty.com. Het geeft je een hele lijst aan Qwerty-alternatieven, opgedeeld in levels die steeds een hand vol nieuwe toetsen introduceren. Ook kan je hem gewoon gebruiken met je standaard Qwerty-toetsenbord: de site vertaalt de toetsen naar de nieuwe layout. Als je zelf al een Qwerty-alternatief hebt ingesteld kan je deze vertaling uitzetten door in de instellingen (rechter bovenhoek) het vinkje ‘Key Mapping’ uit te zetten.

Mijn favoriete tool voor het leren van een nieuwe layout, of gewoon sneller Qwerty, is Keybr.com. Deze geeft je onzin-woorden gebaseerd op echte patronen (helaas wel Engels), voor de letters E, N, I, T, R en L. Zodra je een snelheid van 35 woorden per minuut hebt opgebouwd krijg je daar een letter bij.

Keybr kan net als DitchQwerty toetsenborden voor je vertalen, maar aangezien ik de keymapping tegenwoordig in mijn toetsenbord zelf programmeer laat ik hem meestal op Qwerty staan. Merk ook op dat de volgorde van de letters gebaseerd is op de frequentie van die letter in het Engels, waardoor je pas heel laat de J krijgt, terwijl die in het Nederlands veel belangrijker is.

Als je echt helemaal from scratch een nieuwe layout gaat leren, kom je bij Keybr op een bepaald punt wel in de knoop. In de beginfase verspringt de ‘focusletter’ steeds naar de letter waar je het slechtst in bent, maar zodra je de S erbij krijgt, blijft S de focusletter, tot je de A krijgt, die dan de focusletter is, etc.

Voor het herleren van Qwerty werkt dit prima, maar bij het overschrijven van Qwerty werkt het minder goed. Ik merk dat mijn vinger nog best vaak naar de oude locatie van een letter wil gaan. Helemaal als ik een nieuwe letter krijg die nu op die locatie staat, kan een letter die ik eerder al op 35wpm heb gekregen, opeens helemaal terugzakken. Maar omdat Keybr alleen de nieuwe letter blijft boosten, kom ik daar slecht op terug.

Mijn oplossing hiervoor is een tijdje geweest om steeds opnieuw te beginnen in een incognito-venster, en dat werkt heel goed, maar het nadeel daarvan is dat je dan heel goed wordt in het schrijven van woorden met de beginset (ill, elen, eline), maar in latere combinaties je als nog in de knoop komt met – in dit voorbeeld – de L.

De échte oplossing hiervoor is om op de ‘settings’ knop te klikken en het schuifje ‘Add letters to words’ omhoog te schuiven. Op die manier krijg je alvast toegang tot meer letters, maar blijf je in de initiële modus van de verspringende focusletter. Telkens als ik een nieuwe letter vrijspeel ga ik even naar settings, plus ik die letter erbij, en reset ik, zodat ik met de verspringende focus kan blijven oefenen. (Dit scheelt me veel uren in het programmeren van mijn eigen tool.)

Een andere usual suspect is Monkeytype. Hier kan je bestaande woorden schrijven (ook Nederlands beschikbaar) in diverse modussen. Achteraf krijg je een leuk grafiekje van hoe snel je was. Ook interessant is deze ngram tool, waarmee je tweeletter- en drielettercombinaties kan oefenen, de bouwblokken van woorden als het gaat om typen. Ook deze zijn weer op het Engels gebaseerd, maar desalniettemin fijn. Alleen al voor afwisseling met Keybr zijn het fijne tools.

Wie gewoon sneller wil typen moet vooral ook meer gebruik maken van Option + Backspace, om een woord in één keer te verwijderen, en überhaupt Option + pijltjes om sneller door je tekst heen te springen. (Option is Alt, maar verder weet ik niet precies hoe goed dit zich vertaalt naar Windows en Linux. Op Mac werkt dit fantastisch. Verder zou je natuurlijk eigenlijk overal Vim-bindings moeten hebben maar dat is een ander onderwerp.)

Morgen dus meer over mijn nieuwe layout!

Meer laden