Antefatto
L’anno scorso ero a cena con alcuni colleghi e il docente che ci aveva appena tenuto un corso sulle metodologie Agile.
Ci trovavamo a Brescia, in una piccola trattoria vicino a Piazza della Loggia, a chiacchierare di argomenti nerd. A un certo punto è saltato fuori il discorso dell’IDE che uso.
Ema: “Emilio usa Vim“.
Emilio: “In realtà uso Neovim“.
Docente: “Non capisco perché non usi un IDE moderno. Ormai avete certi aerei che si pilotano da soli!”.
Capisco lo scetticismo.
Vim (o Neovim) sono strumenti che, a prima vista, possono sembrare datati, soprattutto considerando la velocità con cui evolve il mondo tecnologico. I loro keybindings sono difficili da imparare: usare j, k, l, h per muoversi richiede una certa elasticità mentale (e fisica). La separazione tra insert mode ed editing mode è fonte, notoriamente, di grattacapi.
Nei due angoli del ring
Dall’altra parte, c’è Rider. Un IDE moderno, configurato di default, con un ricco ecosistema di plugin. Pensato specificamente per i linguaggi e i framework che supporta. “Si pilota da solo”, come diceva il docente. E adesso è anche gratuito.
Il concetto fondamentale di Vim, però, è un altro: la libertà di utilizzo.
L’interfaccia, i keybindings, i Language Server Protocol (LSP), persino il debugger, sono configurati esattamente come li voglio io. In linea con il modo in cui funziona il mio cervello. L’intero editor non dipende dalle decisioni prese da qualcun altro o dalla visione di uno sviluppatore: è plasmato da me, per me.
In più ogni parte è consistente. Per esempio: le finestre del debugger sono buffer testuali come gli altri. Si possono usare gli stessi keybindings e gli stessi movimenti. Spesso, negli “IDE moderni” le finestre secondarie di debug non permettono l’uso degli shortcuts.
Sì, sto guardando te, Visual Studio. Inutile nascondersi.
Ammetto che configurare Neovim è stato un viaggio lungo e complicato. Ho passato due mesi tra tutorial su YouTube e copia-incolla di configurazioni di persone più competenti di me. Riuscire a debuggare un progetto .NET non è stato semplice, e ancora oggi devo specificare manualmente il percorso del file .dll
che voglio usare (se qualcuno sa come sistemarlo, si faccia avanti!).
Ora però mi basta un comando sul terminale, vim .
, e tutto funziona esattamente come desidero. Ci sono giorni in cui non tocco nemmeno il mouse.
La sensazione? È quella di aver imparato una nuova mossa di arti marziali o un nuovo strumento musicale. Diventa memoria muscolare.
Vantaggi&Consigli
Tutto bellissimo, Emilio, ma qual è il vantaggio concreto?
Nel mio caso, evitare l’infiammazione alle mani che mi perseguita ogni volta che uso un mouse. Ma anche se siete più fortunati di me, ci sono altre ragioni per considerare Vim:
- Vim si trova ovunque. Se accedete a un server per una modifica al volo, è molto probabile trovarlo già installato.
- Configurazioni versionabili. Le impostazioni di Vim (o Neovim) possono essere salvate in un repository Git. Il vostro intero editor può essere versionato.
- Velocità. Con la giusta configurazione (e l’aiuto di Lazy.nvim), carica i componenti just in time. Aprire file di migliaia di righe non è mai un problema.
- Divertimento. Imparare i keybindings e ottimizzare i movimenti diventa un gioco. È sempre soddisfacente scoprire una nuova “combo”.
Se non avete due mesi da investire, ecco come potete iniziare con Vim senza troppi sforzi:
- Attivate i keybindings di Vim nel vostro editor preferito. Familiarizzatevi con i comandi base.
- Scaricate Neovim e utilizzate una distribuzione pronta all’uso. Consiglio Kickstart.nvim o LazyVim.
Se avete più tempo libero potete:
- Partite subito con Neovim: leggete vim-fundamentals e provate il gioco vim-be-good.
- Configurate tutto da zero. Se volete un esempio, vi lascio una copia della mia repo attuale. Non è tutta farina del mio sacco e alcune cose ancora non le capisco nemmeno io. Ma funzionano, quindi…
È vero, gli IDE moderni sono come aerei con il pilota automatico. Ma a volte è ancora divertente imparare a pilotare un Cessna.