De UserGettingBored autocmd van Vim

Kort gezegd: Vim heeft een grap van een autocmd genaamd UserGettingBored die niets doet.

Wat is een autocmd?

De functie voor automatische commando's van Vim, meestal afgekort tot "autocmd", stelt je in staat om code uit te voeren wanneer verschillende gebeurtenissen plaatsvinden. Je zou bijvoorbeeld een auto-save-functie kunnen implementeren door de TextChanged-event te koppelen aan het :w-commando.

Vim heeft meer dan 100 gebeurtenissen, variërend van "buffer is aangemaakt" tot "bestand is opgeslagen". Maar één daarvan viel me op: UserGettingBored. Dit is de documentatie:

UserGettingBored: Wanneer de gebruiker 42 keer dezelfde toets indrukt. Grapje! :-)

De realiteit achter de grap

Toen ik dit zag, was ik bezig met iets anders en leidde het me volledig af. "Ik moet hier meer over weten," dacht ik. Dit is wat ik heb gevonden:

Helaas doet het niets. Het bestaat alleen in de documentatie (en in sommige tests). Als je probeert het te gebruiken met iets als autocmd UserGettingBored ..., krijg je een "no such group or event"-foutmelding.

De event is aanwezig in Vim, Neovim en Vim Classic.

De geschiedenis van UserGettingBored

De event werd voor het eerst toegevoegd door Bram Moolenaar in juli 2000, ruim een jaar voordat Vim 6.0 werd uitgebracht. De oorspronkelijke beschrijving was: "Wanneer de gebruiker CTRL-C indrukt. Grapje!". Omdat het toen ook al niets deed, denk ik niet dat het ooit echt heeft gefunctioneerd.

In augustus 2001 voegde hij de smiley toe aan de documentatie. De tekst luidde toen: "Wanneer de gebruiker CTRL-C indrukt. Grapje! :-)".

Twaalf jaar later, in 2013, veranderde de beschrijving naar de huidige versie: "Wanneer de gebruiker 42 keer dezelfde toets indrukt. Grapje! :-)".

Van grap naar functionaliteit

In 2022 creëerde ontwikkelaar Mike Smith een officieuze plugin die geïnspireerd was door deze grap. Als je in de Insert-modus 42 keer dezelfde toets indrukt, verschijnt er een afbeelding van Samuel L. Jackson. 22 jaar later is het eindelijk werkelijkheid geworden.