+

La storia di Vim


Cos'è e come funziona l'editor di testo più famoso e più difficile del pianeta


Vim su Amiga
Vim su Amiga

Che cos'è Vim?

In breve, se negli ultimi trent'anni avete vissuto con un Nokia 3310 e non sapete cosa sia, Vim (opens new window) si presenta così:

Vim è un editor di testo altamente configurabile costruito per rendere possibile un editing del testo più efficiente. È una versione migliorata dell'editor vi distribuito con la maggior parte dei sistemi Unix. Vim viene distribuito gratuitamente come charityware (da www.vim.org (opens new window))

Vim è la contrazione di Vi IMproved. È un editor di test che è stato scritto da uno sviluppatore olandese di nome Bram Moolenaar (opens new window). Anzi, per essere più precisi Moolenaar è l'autore originale, il manutentore, il responsabile dei rilasci e il benevolo dittatore a vita di Vim. Attenzione, questi termini non sono delle ironiche iperboli, bensì rispondono a una precisa concezione pragmatica ed ideale del modo con il quale organizzare lo sviluppo e la distribuzione del software open source, come scriveva anni fa (opens new window) il mio amico Mattia.

Vim è scritto da Moolenaar e rilasciato per la prima volta nel 1991. È basato sull'editor "ed" utilizzato dai sistemi Unix, ed stato progettato per essere usato sia dalla riga di comando che come applicativo standalone all'interno di una interfaccia grafica (opens new window).

La fama di Vim è quella di essere un editor di testo molto potente pensato per programmatori, power user e guru della riga di comando. Insomma, ha una sua fama e addirittura una mitologia che oltretutto è arricchita da una "guerra (opens new window)" che va avanti da decenni (dal 1985 (opens new window)) con l'altro grande editor del mondo Unix, cioè Emacs, creato da Richard Stallman.

La storia di Vim

Cominciamo dal principio: Bram Moolenaar aveva comprato un Amiga, il computer "potente" realizzato negli anni Ottanta-Novanta dalla Commodore. La cosa che desiderava era utilizzare l'editor di testo che aveva imparato a usare su Unix all'università, cioè vi. E poiché non c'era né vi né una alternativa decente su Amiga, decise di prendere la migliore alternativa disponibile, cioè l'editor "Stevie", e migliorarlo. Niente di più semplice.

Il lavoro di miglioramento però produsse rapidamente una evoluzione inaspettata: se l'obiettivo al principio era imitare vi, rapidamente le funzioni cominciarono a essere più numerose e, dalla versione 1.22 di Vim fu chiaro che vi era stato superato. Moolenaar decise di rifondare l'acronimo dietro al suo Vim: da Vi IMitation a Vi IMproved. Le funzionalità, l'architettura, il concetto stesso di editor di testo sono evolute e cresciute molto al punto che adesso vi ha un piccolissimo sottoinsieme di funzioni rispetto a Vim ed è molto improbabile voler utilizzare vi se non come soluzione di emergenza quando ci si collega a una macchina Unix-like non personalizzata. Se posso dare un consiglio (ma non è un consiglio originale) meglio creare un alias e usare solo Vim.

La portabilità di Vim

Nel corso degli anni il progetto open source di Vim è stato convertito da persone diverse e portato su una serie molto ampia di piattaforme. Sicuramente la più importante anche da un punto di vista simbolico è stata Unix (e il motivo per cui l'editor di Moolenaar è entrato in "competizione" con vi) ma ce ne sono molte altre incluse macOS (facile, è Unix) e Windows.

Come ha detto (opens new window) lo stesso Bram Moolenaar,

Vim è stato creato per poter funzionare su molti sistemi operativi diversi. Non è stato facile. Anche solo riuscire a supportare le differenti versioni più popolari di Unix è un compito molto impegnativo. Aggiungere anche il supporto per Ms-Dos e Ms-Windows crea una serie di problemi in più come ad esempio quello di poter usare nomi di documenti che contengono un backslash. Computer come Amiga e Macintosh hanno tipi di sistemi operativi molto diversi e richiedono specifiche soluzioni.

La prima versione pubblica di Vim, la 1.14 è stata rilasciata il 2 novembre 1991. Nel tempo Vim ha continuato costantemente a crescere diventando un programma sempre più complesso e oggi mantenerlo e aggiungere nuove funzionalità è sempre più difficile.

Le versioni di Vim

Ecco la timeline dello sviluppo di Vim. Sono solo alcune, e va notato anche che i tempi di sviluppo delle nuove versioni maggiori si sono allungate tanto che, dalla 7 alla 8 passano dieci anni, cinque dalla 6 alla 7 e

  • 1988 Vim 1.0 Vi IMitation per Amiga
  • 1991 Vim 1.14 è la prima versione pubblica (esce su Fred Fish disk #591)
  • 1992 Vim 1.22 Il porting su Unix, e viene ribattezzato Vi IMproved
  • 1993 Vim 2.0 undo/redo multilivello, copia-incolla in colonna, compilazione da Vim
  • 1994 Vim 3.0 Finestre multiple
  • 1996 Vim 4.0 GUI
  • 1998 Vim 5.0 Evidenziazione della sintassi
  • 2001 Vim 6.0 Folding, gestione di più linguaggi
  • 2006 Vim 7.0 Spell checker in tempo reale, supporto per le tab
  • 2016 Vim 8.0 Supporto I/O asincrono, jobs e gestore interno plugin

Vim è cresciuto tantissimo per essere un progetto solo open source. Ma va sottolineato che Moolenaar fin dall'inizio ha voluto che fosse un charityware, cioè un software che può essere usato da chiunque e che, chi voglia ripagare lo sforzo dei programmatori, lo possa fare con una donazione. La charity a cui donare è l'altro grande progetto di Moolenaar, cioè la fondazione ICCF Holland (opens new window) che supporta un centro per l'infanzia in Uganda, paese visitato da Moolenaar più volte e per il quale si è impegnato moltissimo.

Cos'è Vim oggi

A differenza di moltissimi altri editor di testo, la maggior parte dei quali sono cloni di vi o versioni alternative di altri progetti, Vim è sviluppato dalla più ampia base di programmatori impegnati in processi open source di questo tipo. Ogni anno vengono create varie funzionalità che si aggiungono all'interno di un percorso di sviluppo molto più stabile e coerente della maggior parte degli altri progetti.

Vim è un editor che può essere configurato per scrivere direttamente codice ma anche prosa. È formalmente l'antitesi di un ambiente di sviluppo integrato, una IDE (Integrated Development Environment), ma utilizzando plugin e l'ambiente Unix con tutte le sue integrazioni e la sua filosofia di fondo, può diventarlo. Per IDE intendo un ambiente progettato per massimizzare la produttività del programmatore fornendo componenti legati tra loro con interfacce utente simili. Una IDE presenta un unico programma principale in cui viene eseguito tutto lo sviluppo. Questo programma in genere fornisce molte funzionalità per la creazione, la modifica, la compilazione, la distribuzione e il debug del software. Ciò contrasta con lo sviluppo di software che utilizza strumenti non correlati come vi, Gdb, Gcc o make.

Vim riesce a stare in equilibrio e la sua leggerezza unita alla velocità e flessibilità ha ispirato la realizzazione di una nuova generazione di ibridi editor/IDE come Atom e VS Code.

L'elefante al centro della stanza

Perché tutto il pianeta non usa Vim? La risposta è semplice e ha due livelli: primo perché è difficile da imparare a usare e secondo perché è fortemente orientato all'editing di codice.

Questo secondo punto è evidente a chiunque debba lavorare su qualcosa che non sia semplicemente del codice sorgente. Certo, c'è una galassia di possibili usi di Vim per altro, ma solitamente se uno vuole scrivere un romanzo (opens new window) usando la riga di comando è più probabile che utilizzi Emacs (opens new window) o altre soluzioni (opens new window).

Vim è difficile, è flessibile ma non nasce per chi deve scrivere molto quanto per chi deve fare molto editing. Gli oggetti naturali di Vim sono le lettere, le parole e le righe, non i paragrafi (e questo genera un enorme problema operativo per qualunque scrittore e anche per molti poeti). Insomma, Vim è oppositivo per chi voglia un editor leggero. Tanto che il consiglio per i novellini della riga di comando, dove essere in grado di editare dei pezzetti di testo per la configurazione di questo o quel servizio, è di ricorrere a nano (opens new window) oppure (suggerisco io) a micro (opens new window).

Però c'è un momento in cui utilizzare Vim diventa una specie di superpotere. Come saper suonare un esotico strumento a tastiera che richiede applicazione, intelligenza e molta memoria muscolare. Uno strumento che si disimpara molto rapidamente ma che, quando ben curato, dà delle grandi soddisfazioni.

Il modo per imparare Vim? Non è Stack Exchange o Reddit (o YouTube). Invece, basta andare in ordine con Vim Tutor (opens new window) che permette di fare con semplicità tutto quel che serve (opens new window). Perché le cose si imparano in modo semplice, andando in ordine.