DEV Community

Cover image for Helix, un code editor da provare
Paolo Carraro
Paolo Carraro

Posted on

Helix, un code editor da provare

Tra i vari IDE usati finora VSCode è stato tra i miei preferiti. Vero che non avendo usato un qualsiasi IDE della JetBrain non posso essere obiettivo, ma vorrei portare un'altro tipo di esperienza: quella dell'uso di un editor modale.
Tra i più blasonati abbiamo Vim e più recentemente Neovim i quali, come succede a tutti la prima volta che si aprono, si rimane interdetti: non si capisce come scrivere e si tenta disperatamente di uscire; questo succede in quanto siamo nella modalità errata (da qui editor modale), ossia nella modalità normale e non di inserimento.

Primi fallimenti

Attratto dalla promessa, ascoltata spesso dal pulpito di Primeagen, di usare meno il mouse ed essere più veloce nella scrittura ho provato Neovim e a fatica mi sono entusiasmato; piuttosto mi sono sentito frustrato. La curva di apprendimento dopo anni di Ctrl + qualsiasi tasto non è facile.
Ho provato quindi la modalità mista che consisteva in una delle tante estensioni che permettono di usare le modalità tipiche di Vim (vim motions) in VSCode nel pannello di edit, ma anche così non è stata una gran esperienza.

Primo incontro con Helix

Continuando a curiosare ogni tanto tra le alternative a VSCode mi sono imbattuto in Helix e devo dire che l'iniziare ad usarlo con regolarità è stata molto veloce.
Certo serve un minimo di configurazione iniziale ma la documentazione è ben fatta e le risorse si possono trovare anche se ancora non abbondanti.

Helix è un progetto recente, iniziato nel 2021, ispriato da Vim e Kakoune, scritto in Rust e una delle scelte di design dell'applicazione è quella di integrare le funzionalità tipiche di un IDE piuttosto che adottarle tramite plugin. Questo mi ha reso da subito abbastanza produttivo in quanto non ho dovuto cercare il plugin migliore e come configurarlo.

Per quanto riguarda le modalità di utilizzo quelle sono tipiche degli editor modali:

  • modalità normale per muoversi all'interno del documento e lanciare comandi
  • modalità di inserimento per scrivere
  • modalità di selezione per applicare delle modifiche a più contenuti anche non contigui (multi selezione).

Oltre a queste modalità di base, Helix denomina una serie di modalità minori:

  • space mode: per i vari picker (file, errori, outline)
  • goto mode: per spostarsi velocemente e navigare nell'albero sintattico (tree sitter) e nel progetto, ecc...
  • match mode: per selezionare e applicare modifiche attorno ad una stringa

Altra cosa che aiuta nell'adozione dell'editor è che in modalità normale alla pressione di un tasto compare un popup guida di possibilità (comandi previsti, opzioni disponibili) che ti suggeriscono come procedere: utile per applicare ma anche apprendere comandi finora sconosciuti.

Image description

Inoltre Helix organizza i gruppi di comandi in modo piuttosto intuitivo: per esempio con la lettera m (match mode) troviamo la possibilità di selezionare, cancellare modificare parti di contenuto attorno al blocco in cui ci si trova: diventa molto semplice aggiungere, rimuovere, sostituire, per esempio, parentesi e virgolette.
Oppure con lo spazio (space mode) seguito da lettera possiamo cercare all'interno del progetto tramite ricerca fuzzy: file, problemi da risolvere, i file in lavorazione, gli ultimi punti del codice visitati, ecc...

Image description

Per finire utilizza il tasto shift unito ad una lettera per applicare il comando opposto a quello che corrisponde alla lettera stessa: per esempio se abbiamo u per undo, con U applichiamo il redo (occhio a quando avete il Caps Lock attivato).

Consiglio per introdursi allo strumento il comando :tutor che lancia un tutorial interno a Helix che attraverso dei veloci esercizi ti fa prendere confidenza con i vari comandi e modalità.

Cosa cambia nell'usare un editor modale

Dopo qualche tempo di utilizzo la cose che mi sono sorpreso a pensare sono:

  • non ho mai avuto bisogno del pannello di struttura cartelle file a lato (folder tree): la ricerca fuzzy (già usata molto in VSCode) è molto più veloce ed efficace.

Image description

  • qual'è il modo migliore per fare l'operazione che sto eseguendo?: spesso mi ritrovo a chiedermi come posso spostarmi più velocemente sul punto individuato o come posso selezionare il blocco di codice a partire dal punto in cui sono con il cursore. Un modo per trovare la risposta all'interno della applicazione è lo spazio + ? che ti permette di ricercare tra i vari comandi disponibili e visualizzare gli shortcut.

Questo per dire che un ide del genere ti abitua a non limitarti ai comandi base di editing di un testo come taglia copia incolla, cerca sostituisci, spostati con frecce e mouse.

Cosa mi manca

Attualmente le cose che non ho ancora risolto sono:

  • come gestire il debug: negli sviluppi attuali che sto affrontando il debug è demandato al browser però devo capire come applicare questa modalità che esiste ma non ho ancora esplorato.
  • come visualizzare i git blame: git a differenza di VSCode non è integrato e a volte è utile quando si lavora in team per capire chi ha scritto cosa in modo da valutare meglio le modifiche da fare.

Devo dire che ad ora non sento la mancanza degli ide usati precedentemente e anzi ho cercato client git che adottano modalità simili di gestire l'interazione con i comandi come lazygit.
Questo testo, che è tutt'altro dalla scrittura di codice, l'ho comunque preferito scrivere con Helix!

E per voi com'è l'esperienza con editor modali? Conoscevate già Helix?

Top comments (0)