I Use NeoVim btw (E dovresti anche tu)
Sommario
Introduzione
NeoVim mi ha sempre affascinato sin da quando l’ho visto utilizzare per la
prima volta da ThePrimeagen. L’efficienza dell’editing del testo, il minimalismo dell’interfaccia, la vicinanza dell’editor al terminale sono state solo parte di quello che mi ha affascinato sin da subito. Dentro di me cresceva sempre di più il desiderio di provarlo, di renderlo mio.
Ma partiamo dalla storia, spesso ci soffermiamo solo sul prodotto finale, ma per uno sviluppatore penso sia interessante sapere cosa c’è stato dietro.
Storia di Vi, Vim e NeoVim
Vi (1976-1980s)
Contesto storico
Negli anni ‘70, l’interazione con i computer avveniva tramite terminali
teletype
(senza schermo) o visual display molto primitivi. Gli editor testuali
erano estremamente basilari. Il più usato era ed
, un editor riga-per-riga.
Creazione di ex e Vi
- 1976: Bill Joy, studente a Berkley, sviluppa
ex
come un miglioramento died
. Vi
(da “Visual”) nacque come modalità visuale diex
.Vi
venne incluso nel sistema BSD Unix. Era modale: una modalità per inserire testo e una per dare comandi.
Caratteristiche chiave:
- Completamente tastiera-driven.
- Ottimizzato per lente linee seriali (bassa latenza).
- Praticamente senza dipendenze.
- Diffusione garantita da Unix:
Vi
diventò lo standard.
Curiosità: per decenni Vi fu l’unico editor garantito disponibile su ogni sistema Unix, diventando sinonimo di “editor di sistema”.
Vim - L’evoluzione migliorata (1991-2010s)
Le Origini su Amiga
- 1991: Bram Moolenaar scrive
Vim
su Amiga come clone libero diVi
. - Significato: Vi IMproved.
- Viene reso disponibile su UNIX, Windows, DOS.
Perché “improved”?
Vim
preseVi
e lo rese programmabile, estendibile, configurabile.- Introduce:
- File di configurazione
.vimrc
- Macro, mapping, abbreviazioni
- Undo multipli
- Sintassi evidenziata
- Script Vimscript per automatizzare comportamenti
- File di configurazione
Versioni importanti:
- Vim 5 (1998): Introduce plugin caricabili.
- Vim 6(2001): Supporto split window, tab, buffer.
- Vim 7 (2006): Aggiunta autocomplete, spell check, undo tree.
- Vim 8 (2016): Finalmente arriva il supporto asincrono, anche se limitato.
Problema principale: Lo sviluppo era centralizzato attorno a Bram. Era molto conservatore, il che rallentava l’adozione di feature moderne.
NeoVim - Il fork rivoluzionario (2014-oggi)
Origini del progetto
- 2014: Annuncio di
NeoVim
come fork di Vim 7.4. - Creato da una community stanca dei limiti architetturali e burocratici di
Vim
- Obiettivi principali:
- Pulizia del codice base.
- API esterne per estendere
NeoVim
da altri linguaggi (Lua
,Python
…). - Esecuzione asincrona per plugin moderni.
Caratteristiche distintive
- Lua come linguaggio di configurazione (molto più veloce di Vimscript).
- LSP nativo: supporto linguistico in stile
VSCode
, out of the box. - Tree-sitter nativo per parsing avanzato del codice.
- Interfacce moderne: editor GUI esterni (es. Neovide, Goneovim).
- Plugin manager moderni (es. Lazy.nvim, Packer.nvim, ecc).
Evoluzione
- Crescita esplosiva della community.
- Ecosistemi completi basati su
NeoVim
:- AstroNvim, LunarVim, NvChad
- Progresso **costante e trasparente su GitHub.
Oggi NeoVim è considerato l’editor terminale più avanzato al mondo, con supporto moderno, integrazione con strumenti professionali, e prestazioni eccellenti.
La mia esperienza
Inizio
Quando ho cominciato, non sono riuscito ad adottare NeoVim
come editor da
subito, mi mancavano conoscenza e abilità. Quindi ho spesso rinunciato, però
il desiderio di farlo funzionare continuava a riaffiorare, di capirlo e di
configurarlo a dovere per renderlo utilizzabile come IDE. Ai tempi frequentavo
un bootcamp e utilizzavo VSCode per tutto e IntelliJ per Java e volevo riuscire almeno a renderlo utilizzabile per poter fare un primo switch.
La scoperta di Kickstart.nvim
Tutto è cambiato quando ho fatto la scoperta di Kickstart.nvim. Kickstart.nvim è una configurazione base che rende NeoVim utilizzabile come IDE fin da subito. La configurazione è tutta in un solo file con tanti commenti che spiegano cosa sta succedendo e perché, ma soprattutto come cambiare ed implementare le proprie configurazioni. Da lì è stato tutto in discesa, ho iniziato a sperimentare con configurazioni mie, ogni volta che programmando mi veniva in mente qualcosa da cambiare per rendere l’esperienza più piacevole, trovavo un nuovo plugin o cambiavo semplicemente delle configurazioni base di NeoVim.
Ora utilizzo NeoVim per qualsiasi cosa e se incontro una nuova tecnologia per la
quale non è ancora configurato, so che posso configurarlo, so che un modo si
trova sempre. Riesco persino a programmare e runnare Java ora.
La chiave ad un certo punto è stata organizzare bene il codice del grosso file
lua di Kickstart splittandolo in più file separati, creando una struttura di
file ordinata. In questo modo se devo aggiungere un nuovo plugin, aggiungo un
nuovo file in un punto specifico, se devo aggiungere o modificare degli shortcut
so che devo andare nel file remaps.lua
e così via.
Consiglio vivamente di fare la propria esperienza con NeoVim
perché sono sicuro
che non ve ne pentirete :)
Questa è la mia configurazione attuale, la tengo in una repository GitHub perché
in questo modo se faccio delle modifiche, poi posso pullarle da altre macchine
su cui utilizzo NeoVim
ed è anche più semplice installare NeoVim
su macchine
nuove tenendo la mia configurazione personale.
I vantaggi di NeoVim
Per me i vantaggi di NeoVim sono molteplici:
- Completamente Open Source.
- Vim motions
- Il segreto per essere così efficiente,
Vim
ha creato queste Vim Motions che permettono di muoversi nel testo ed editarlo velocemente senza toccare il mouse. - Ecco una serie di video creati da ThePrimeagen che le spiegano approfonditamente: Vim As Your Editor
- Il segreto per essere così efficiente,
- Completamente configurabile
- Qualsiasi cosa è personalizzabile (shortcuts, comportamenti, comandi automatici)
- Ogni volta che voglio modificare qualcosa, so dove mettere le mani perché ho studiato la configurazione iniziale e ho costruito su di essa.
- Il minimalismo dell’interfaccia, priva di bloat.
- Integrato il più possibile all’interno del terminale.
- Questo mi permette anche di utilizzarlo attraverso ssh su altre macchine, penso sia un vantaggio non da poco.
- La sua leggerezza e velocità di esecuzione.
- Infiniti plugin creati dalla community per adattare NeoVim per qualsiasi
situazione
- Essendo questi plugin open source, è possibile anche personalizzarli eseguendo dei fork e modificandone il codice sorgente a proprio piacimento per rendere il plugin e la configurazione, veramente plasmata su di te.
Prova tutte le opzioni
Penso che per essere sviluppatori migliori, dovremmo provare tutto, tutte le
tecnologie di cui tutti parlano, capire di cosa si sta parlando, sperimentare e
creare un nostro pensiero.
Sono fermamente convinto che le cose che ci fanno paura perché complicate o
faticose, siano esattamente quelle che dovremmo provare ed imparare. Questo
perché ci spaventano perché sono complicate, ma sappiamo che lo sforzo sarebbe
ricompensato.
Pensa a tutte quelle cose che prima di imparare credevi fossero molto difficili
o addirittura impossibili. Per me è guidare, all’inizio il solo pensiero di
dover guidare mi provocava ansia. Ora è una seconda natura e io credo che sia una sensazione bellissima di progressione e di crescita.
Conosci i tuoi strumenti
Che tu utilizzi VSCode o NeoVim o qualsiasi altro IDE, prenditi il tempo di
imparare esattamente tutto quello che può fare. Come sviluppatori software
spendiamo tante ore al giorno su questi strumenti, vale davvero la pena conoscerli a fondo al fine di essere sviluppatori migliori.
Penso che NeoVim ti forzi a fare esattamente questo, per renderlo utilizzabile,
devi capire come funziona e tutte le cose che può fare. Ti spinge a configurarlo
esattamente secondo le tue esigenze personali, trovare soluzioni di
configurazione su misura attraverso lo scripting lua.
Conclusione
In definitiva, NeoVim non è solo un editor di testo: è un’esperienza di
apprendimento continua, come penso debba essere la vita di uno sviluppatore. Non
è perfetto per tutti, e richiede un investimento iniziale di tempo ed energia,
ma la ricompensa è un ambiente di sviluppo che parla la tua lingua, adattato al
tuo modo di lavorare.
Non si parla solo di scrivere codice, ma di riscoprire il piacere di farlo con
consapevolezza, controllo e precisione.
In ogni caso, qualsiasi IDE tu scelga di utilizzare, ti consiglio vivamente di
conoscerlo in profondità e comprendere a pieno tutto quello che può fare.
Link utili
Vim As Your Editor
La mia configurazione NeoVim
VimHero per fare pratica
Kickstart.nvim