Cinquant'anni in una pagina
Vim è pieno di scelte che sembrano arbitrarie: perché ci si muove con h j k l, perché Esc, perché i comandi sono di una lettera sola. Nessuna di queste è casuale: sono tutte tracce fossili di come si scriveva codice negli anni Settanta.
Prima c'era la carta
Il primo editor Unix, ed, nasce nel 1969 con il sistema stesso.
Non era un editor a schermo per un motivo semplice: lo schermo non c'era.
Si lavorava su una telescrivente, che stampava su un rullo di carta. Non potendo
cancellare l'inchiostro, l'unico modo di modificare un testo era descrivere le
modifiche a parole: «nelle righe dalla 10 alla 20, sostituisci questo con quello».
$ ed lettera.txt 1180 1,20s/Egregio/Gentile/g w 1174 q
Quella sintassi non ti sembra nuova? È esattamente il comando della lezione 6.
Ogni volta che scrivi :%s/vecchio/nuovo/g stai usando, senza una
virgola di differenza, il linguaggio inventato per una macchina che stampava
su carta. È la parte più antica di Vim ancora in servizio — e non è
sopravvissuta per nostalgia, ma perché descrivere una modifica resta il modo più
rapido di applicarla a mille righe insieme.
La tastiera che ha deciso tutto
Nel 1976 Bill Joy, studente a Berkeley, prende ed, lo estende in
ex (extended ed) e poi gli aggiunge una novità: un modo
visuale, in cui il terminale mostra continuamente una finestra sul file.
Il comando per attivarlo era vi. Il nome è rimasto quello.
Joy lavorava a un terminale Lear Siegler ADM-3A, e quella tastiera spiega metà di ciò che troverai in questo corso:
ESC 1 2 3 4 5 6 7 8 9 0 : - = ↑ dov'è oggi il Tab ↑ il tasto dei comandi, senza Shift CTRL A S D F G H J K L ; ' ← ↓ ↑ → le frecce erano disegnate su questi quattro tasti: erano le uniche che esistessero.
- h j k l — l'ADM-3A non aveva tasti freccia separati. Le direzioni erano serigrafate su quelle quattro lettere, che sono anche esattamente dove riposano le dita della mano destra.
- Esc — si trovava dove oggi c'è il Tab, a un centimetro dal mignolo. Uscire dal modo inserimento non era la scomodità che è diventata dopo.
- I comandi di una lettera — Joy lavorava da casa su un modem a 300 baud, cioè circa trenta caratteri al secondo. Ogni byte trasmesso costava tempo reale, e ridisegnare lo schermo era un lusso. Da qui la sintassi compattissima e l'ossessione per il numero minimo di tasti premuti: erano vincoli di banda, diventati per caso una forma di ergonomia.
vi.
Da vi a Vim: un olandese e un Amiga
Il codice di vi apparteneva ad AT&T, e questo per anni ne impedì la libera distribuzione. Nacquero così i cloni: Stevie, Elvis, nvi, vile. Da uno di questi comincia la storia vera.
Nel 1988 Bram Moolenaar, ingegnere olandese, compra un Amiga e scopre che non esiste un vi decente. Parte dal codice di Stevie e lo sistema per sé. Nel 1991 pubblica la sua versione: si chiama Vim, e all'inizio la sigla sta per Vi IMitation. Due anni dopo, quando le funzioni superate sono ormai troppe per chiamarla imitazione, il nome diventa Vi IMproved.
ed
Ken Thompson scrive l'editor di riga di Unix. Gli intervalli e :s nascono qui.
vi
Bill Joy aggiunge a ex il modo visuale. Con BSD arriva su ogni macchina Unix del pianeta.
Stevie
ST Editor for VI Enthusiasts, un clone per Atari ST. Sarà il punto di partenza di Vim.
Vim 1.14
Bram Moolenaar pubblica la prima versione, per Amiga. Undo multiplo e . sono già più di quanto facesse vi.
Vim 5
Colori della sintassi. È la versione che convince molti a lasciare vi.
Vim 6 e 7
Ripiegature, plugin e supporto per i linguaggi; poi correttore ortografico, completamento intelligente, schede.
Neovim
Un gruppo di sviluppatori riscrive parti del codice in un fork: interfaccia disaccoppiata, terminale integrato, script in Lua. La concorrenza fa bene a entrambi.
Vim 8 e 9
Processi asincroni, pacchetti nativi, terminale interno; poi Vim9script, un linguaggio di configurazione compilato e molto più veloce.
La morte di Bram
Bram Moolenaar muore il 3 agosto, a 62 anni, dopo aver mantenuto il progetto per trentadue. Lo sviluppo prosegue con un gruppo di manutentori.
Vim 9.2
Uscita a febbraio: supporto sperimentale a Wayland, adeguamento allo standard XDG per i file di configurazione, modalità diff migliorata. Cinquant'anni dopo l'ADM-3A, si continua.
Charityware
Vim è software libero, ma con una richiesta particolare attaccata: se ti è utile, Moolenaar chiedeva una donazione per i bambini dell'Uganda. Aveva lavorato come volontario a Kibaale, un villaggio del sud del paese, e aveva legato il suo editor a quel progetto attraverso la fondazione ICCF Holland. La cosa non è scritta in un file dimenticato: è dentro il programma, e ci arrivi con un comando.
:help ugandaDa lì viene anche il messaggio che Vim mostra all'avvio, sotto il logo: quella riga che tutti hanno visto centinaia di volte senza leggerla mai.
Perché ha senso impararlo oggi
- C'è già, ovunque. Su qualsiasi server, container, macchina virtuale o Mac appena acceso, senza installare niente e senza interfaccia grafica. Quando devi correggere una riga di configurazione su una macchina remota alle undici di sera, non c'è alternativa.
-
Le scorciatoie sono uscite dall'editor.
less,man,git log,tmux, la shell conset -o vi, i client di posta testuali: usano tutti i tasti di vi. Impararli una volta serve in venti programmi diversi. - Vive dentro gli editor moderni. VS Code, i JetBrains, Sublime, Zed, Obsidian e perfino qualche interfaccia web hanno una modalità Vim. La grammatica della lezione 3 si porta dietro anche quando cambi strumento.
- Non cambia. Quello che impari adesso funzionerà identico tra dieci anni. È un investimento con un tasso di obsolescenza vicino allo zero, e nel software non capita spesso.