Esiste un paradosso nella cultura informatica che ha generato migliaia di meme e battute: chi entra in Vim poi non sa come uscirne. Il comando :q, abbreviazione di “quit”, è diventato l’insider joke più longevo tra gli sviluppatori, al punto che la ricerca “how to exit Vim” figura stabilmente tra le query più cercate su Stack Overflow. Eppure dietro questa apparente ostilità si nasconde una filosofia di editing testuale per la riga di comando (il terminale, ma esistono anche porting per l’interfaccia grafica) che ha plasmato mezzo secolo di informatica.
Per capire Vim bisogna tornare indietro fino al 1976, quando un giovane dottorando della University of California, Berkeley, di nome Bill Joy cominciò a sviluppare un’interfaccia visuale per l’editor di linea ed. Joy non era uno studente qualsiasi: sarebbe diventato cofondatore di Sun Microsystems e autore principale di Berkeley Unix (BSD), il sistema operativo open source che ha posto le fondamenta di Internet. L’editor che creò, chiamato vi, introduceva un concetto rivoluzionario: la modalità, ossia la separazione tra la fase di scrittura e quella di navigazione del testo.
Vi nacque in un’epoca in cui le risorse dei computer erano estremamente limitate e i terminali non disponevano nemmeno di tasti freccia standardizzati. Per questo Joy scelse i tasti h, j, k, l della home row come comandi di movimento, una soluzione ergonomica che permetteva di non staccare mai le mani dalla posizione di digitazione. La leggenda vuole che Joy abbia scritto vi in un fine settimana, ma la realtà è più complessa e affonda le radici in mesi di sviluppo collaborativo nei laboratori di Berkeley.
La nascita di Vim in Olanda
Tempo qualche decennio e il testimone passò nelle mani di un informatico olandese nato a Lisse nel 1961: Bram Moolenaar. Nel 1988 Moolenaar acquistò un computer Amiga e, abituato a lavorare con vi sui sistemi Unix, cercò un clone adeguato per la nuova piattaforma. Trovò solo Stevie, una versione parziale e piena di bug originariamente sviluppata per Atari ST, e decise di riscriverla da zero chiamandola Vi IMitation. In breve: Vim.
La prima versione pubblica, la 1.14, venne distribuita il 2 novembre 1991 attraverso i Fred Fish Disk, una serie di dischetti freeware molto popolari nella comunità Amiga. Nel 1993 il nome cambiò in Vi IMproved (mantenendo lo stesso acronimo) quando le funzionalità superarono quelle dell’originale, introducendo caratteristiche come l’undo multilivello che vi non possedeva. La portabilità su Unix e MS-DOS arrivò già nel 1992, trasformando Vim in uno strumento veramente universale.
Moolenaar non era soltanto un programmatore eccellente ma anche un uomo dalla profonda sensibilità sociale. Nel 1993 partì come volontario per l’Uganda, dove lavorò per un anno in un progetto di sostegno ai bambini orfani a causa dell’AIDS. Al ritorno fondò la ICCF Holland, trasformando Vim in charityware: chi apprezzava il software era invitato a donare per il Kibaale Community Centre nel sud dell’Uganda. In trent’anni questa iniziativa ha raccolto oltre mezzo milione di euro.
Alcuni editor da riga di comando
| Editor | Modale o altro | Principali pregi | Principali difetti |
|---|---|---|---|
| vi / Vim | Modale | Estremamente veloce, potente, ampiamente usato, personalizzabile | Curva di apprendimento ripida |
| Emacs | Non modale | Estremamente estensibile, ambiente di sviluppo completo | Complesso e pesante, richiede tempo per configurazione |
| Nano | Non modale | Semplice, facile da usare, preinstallato su molte distro Linux | Funzionalità limitate rispetto a Vim o Emacs |
| Micro | Non modale | Facile da usare, moderno, buona alternativa per novizi | Meno funzionalità avanzate rispetto a Vim o Emacs |
| Neovim | Modale | Modernizzazione di Vim, migliore gestione dei plugin, estendibile con Lua | Richiede configurazione, curva di apprendimento |
| Helix | Modale | Moderno, linguaggio Rust, supporto LSP integrato, out-of-the-box | Nuovo, meno diffuso, minore ecosistema plugin |
La guerra degli editor
Parallelamente a vi, nel 1976 Richard Stallman sviluppava Emacs, un editor basato su una filosofia radicalmente diversa: estensibilità attraverso combinazioni di tasti anziché modalità. La rivalità tra i due approcci è diventata leggendaria nel mondo Unix, con schiere di sostenitori pronti a difendere il proprio strumento preferito. Vim puntava sulla leggerezza e sulla velocità, Emacs sulla potenza e sulla personalizzazione estrema.
La vera forza di Vim, però, risiede nel suo paradigma compositivo, che combina verbi e movimenti in un linguaggio naturale per manipolare il testo. Il comando d significa “cancella”, w significa “parola”: nella modalità navigazione digitando dw si cancella dalla posizione corrente alla parola successiva. Ripetere invece due volte cancella (dd), taglia la riga corrente.
Questa sintassi permette di esprimere azioni complesse con poche sequenze di tasti, trasformando l’editing in una sorta di calligrafia digitale. La curva di apprendimento è ripida, ma (sostengono gli appassionati) le soddisfazioni sono enormi. Unita al fatto che con Unix/Linux/macOS il file system viene visto dalla shell come un file di testo, è possibile anche modificare i nomi di migliaia o decine di migliaia di file contenuti in un colpo solo come se si stesse editando in maniera automatica un lungo file di testo.
Purtroppo il 3 agosto 2023 Bram Moolenaar è morto a Santa Cruz de Tenerife, lasciando un’eredità che continua attraverso i suoi eredi spirituali. Neovim, nato nel 2015, ha rifattorizzato il codice introducendo il supporto nativo per Lua e i Language Server Protocol. Helix, apparso nel 2021 e scritto in Rust, offre un’esperienza moderna con funzionalità IDE integrate senza bisogno di plugin.
Principali comandi di Vim e loro funzione
| Comando | Modalità | Funzione | Note / Uso in altri programmi |
|---|---|---|---|
i | Normal -> Insert | Entra in modalità inserimento | Analoghi in quasi tutti editor modali |
Esc | Insert/Visual -> Normal | Torna alla modalità normale | Usato in molti editor modali e app (es. Gmail) |
:w | Normal | Salva il file | Comando di salvataggio simile in vari editor |
:q | Normal | Esce dall’editor | Concetto di “quit” |
:q! | Normal | Esce senza salvare | Specifico di Vim e simili |
dd | Normal | Taglia la riga corrente | Presente in vari editor con modalità Vim |
yy | Normal | Copia la riga corrente | Molto usato nei programmi ispirati a Vim |
p | Normal | Incolla dopo il cursore | Usato anche in altre applicazioni Vim-like |
v | Normal -> Visual | Entra in modalità selezione visiva | Usato in molti editor modali |
/ | Normal | Ricerca testo | Funzione di ricerca ispirata a Vim |
:%s/old/new/g | Normal | Sostituzione globale di testo | Sintassi di sostituzione ispirata a Vim |

L’eredità nei software moderni
Oggi i keybinding di Vim sono ovunque, ben oltre il terminale. Visual Studio Code offre un’estensione che replica fedelmente l’editing modale, Gmail nasconde scorciatoie da tastiera ispirate a vi, persino i browser moderni supportano plugin che trasformano la navigazione web in un’esperienza vim-like. Questa diffusione capillare testimonia l’efficacia di un paradigma nato cinquant’anni fa su terminali senza mouse.
Vim funziona oggi su praticamente qualsiasi sistema operativo, da macOS a Windows, da Linux alle più esotiche varianti Unix. La sua leggerezza gli permette di aprire file enormi istantaneamente, mentre gli editor moderni faticano con documenti di poche migliaia di righe. Per chi lavora su server remoti attraverso connessioni SSH, resta spesso l’unico strumento disponibile e affidabile. Ma anche per chi utilizza vecchi computer ormai obsoleti con processori affaticati dai carichi di lavoro moderni, Vim e i suoi eredi sono una mano santa.
Tra parentesi, ci sono anche altri editor di testo più orientati alla prosa anziché al codice, per chi comunque voglia scrivere dalla riga di comando: micro, nano e ne, per esempio. I link sono nelle fonti di questo articolo, alla fine della pagina.
La curva di apprendimento, come dicevamo, può apparire ripida, ma l’investimento viene ripagato in termini di efficienza e controllo. Una volta interiorizzata la grammatica di verbi e movimenti, tornare agli editor tradizionali risulta frustrante come scrivere a mano dopo aver imparato la tastiera. Il segreto di :q non è come uscire da Vim, ma perché alla fine nessuno vuole più farlo.

