Scrivere atti digitali telematici off-line su iPad con a-Shell: personalizzare l’esperienza in Vim (parte seconda)
Nel precedente articolo vi ho parlato di come funziona a-Shell nel dettaglio, in particolare di come è possibile accedere alle cartelle di iOS / iPadOS, avere un‘anteprima dei file in a-Shell e come modificare un file in markdown o LaTeX.
Le impostazioni di base in Vim tuttavia non sono user friendly, ora guardiamo come mi sono personalizzato l‘esperienza in Vim per poter lavorare meglio ed in comodità.
Personalizzare l’esperienza di Vim
Il mio .vimrc personalizzato per a-Shell
Mi sono accorto di non aver mai scritto in dettaglio del .vimrc il file di configurazione di Vim. Oggi non mi propongo di entrare nel dettaglio ma voglio comunque condividere con voi le base perché, credo, senza queste l’utilizzo di Vim in a-Shell o sul vostro computer ne sarebbe veramente danneggiato.
Per ragioni storiche e scelta del suo sviluppatore Vim quando viene installato non ha con se un file di configurazione e funziona nella sua modalità base compatibile con _Vi_ (l’editor di testo da cui origina Vim).
Personalmente usare Vim senza una adeguata configurazione lo rende un programma poco utile. Ciò detto, imparare a configurare Vim per le proprie esigenze è un’esperienza formativa utilissima e quindi seppur condivido con voi il mio .vimrc vi sprono a sperimentare ed approfondire perché le mie impostazioni potrebbero non essere quelle che fanno per voi. La bellezza di Vim risiede proprio nella personalizzazione e nella considerazione che ognuno è diverso ed ha necessità diverse. Proprio per questo motivo lo sviluppatore di Vim non fornisce un .vimrc “standard”: per evitare che le idee e necessità dello sviluppatore si sovrappongano a quelle dell’utilizzatore.
Qui trovate i miei dot files per Mac ed invece qui il mio .vimrc per a-Shell. Il .vimrc è qualcosa di vivo e quindi nel tempo ed in base alle mie specifiche esigenze potrebbe cambiare, la bellezza di avere il tutto in un sistema di controllo delle versioni è che possono vedersi gli sviluppi.
Da maniaco compulsivo il mio .vimrc è commentato quindi se lo aprite e leggete il suo contenuto dovreste capire tutto, ciò detto ritengo sia utile darvi qualche indicazione di base per poter lavorare in tempo zero con il mio file di configurazione.
Uscire dalla modalità inserisci dopo 4 secondi di inattività
Un trucchetto che ho scoperto casualmente in un video su YouTube.
La modalità c.d. Normale in Vim è quella appunto base e dalla quale è possibile eseguire tutti i comandi di Vim. Grazie al codice che segue, una volta che si è nella modalità Inserisci (Insert) questa viene disattivata dopo 4 secondi che non si digita testo. Sembra contro-intuitivo ma funziona perfettamente. Se state scrivendo non ci sono problemi e potete continuare a scrivere senza preoccupazioni, ma se vi fermate perché casomai state rileggendo un passaggio o state pensando a qualcosa, Vim sarà in modalità normale e, la maggior parte delle volte, è quello che volete.
au CursorHoldI * stopinsert
Ho voluto spiegare subito questa particolarità del mio .vimrc perché il comportamento altrimenti potrebbe sembrarvi particolarmente anormale.
Spazio è la mia leader key
Siccome in Vim i tasti in modalità normale servono per lanciare i comandi di base di Vim ci si trova presto a corto di scorciatoie a tastiera per i comandi personalizzati. Grazie alla c.d. leader key (traducibile forse come “il tasto che comanda”) è possibile avere un secondo livello di scorciatoie a tastiera.
Nel mio .vimrc la leader key è il tasto SPAZIO. Ma potete modificarla a piacimento, unica premura che dovete avere è di evitare di sovrapporre la vostra leader key con i comandi di basee di Vim.
Oltre vi indicherò a quale tasto ho associato un particolare comando scrivendo:
<leader
data-preserve-html-node="true" ed il tasto.
Abilitare il mouse in Vim
Per i puristi è un abominio, sì, lo so! Ma è tanto comodo!
Inoltre in a-Shell permette di toccare lo schermo e muovere il cursore. Particolarmente utile quando ci si vuole muovere velocemente, ad esempio, tra uno split e l’altro (maggiori info sugli split oltre).
Salvare i file
<leader> w
Salvare in Vim è semplice basta digitare :w
la _W_ sta per “write” ovvero scrivi.
Ma i due punti e la W sono agli antipodi della tastiera e la barra spaziatrice è molto più accessibile.
Aprire e modificare velocemente il .vimrc
<leader> v
Sopratutto all’inizio dell vostra esperienza in Vim vi troverete a modificare il vostro .vimrc.
Aprire velocemente il file di configurazione di Vim quindi è essenziale e molto comodo. Con questa scorciatoia vi troverete il vostro .vimrc aperto nel vertical split, ovvero nella suddivisione verticale, a destra del documento che state editando.
Ricaricare il .vimrc dopo una modifica
<leader> s
Se modificate il vostro .vimrc, perché le modifiche abbiano effetto dovete ricaricarlo (source in inglese). Questa scorciatoia a tastiera fa proprio questo.
Muoversi negli split e regolarli
Personalmente non consiglio di andare oltre uno split dello schermo di Vim su un iPad e, questa funzione, è più utile se si utilizza un Mac con un monitor generoso.
Se è utile poter suddividere la finestra di terminale di Vim questo pone un problema fondamentale (se non avete abilitato il mouse): come si naviga da uno split all’altro?
Il canone è usare il comando CTRL+W e poi h,j,k,l (i movimenti del cursore in Vim) per spostarsi da uno split all’altro.
Di fatto questa è una acrobazia da tastiera! Per cui prendendo spunto da Luke Smith ho modificato i movimenti. Basta tenere premuto CTRL e h,j,k e l per spostarsi da uno split all’altro.
Altro tipico (quantomeno per me) problema degli split è regolare la dimensione di uno split rispetto all’altro.
Non vi sto nemmeno a spiegare il comando perché e “folle”. Personalmente io ho impostato uno spostamento a destra e a sinistra della divisoria dello split verticale di ± 5 caratteri alla volta usando 1 per spostare a sinistra e 2 per spostare a destra. Totalmente arbitraria come scelta ma erano tasti liberi.
L’esplora risorse di Vim
<leader> e
Meriterebbe forse un articolo a parte, ma Vim tra le altre cose è dotato di un sistema per navigare tra le cartelle ed aprire specifici file: Netrw.
La mnemonica è “e” per explorer. Grazie alla scorciatoia a tastiera viene aperto il sistema di navigazione sulla sinistra in uno split verticale e così facendo potete aprire facilmente qualsiasi documento in Vim presente nelle vostre cartelle di lavoro.
Se volete chiudere questo split basta digitare “ZZ” (due volte zeta maiuscolo) per chiuderlo.
Compilare un file in LaTeX
<leader> c
Ho preso questa scorciatoia da quella che già avevo su Mac per compilare un documento da Markdown in PDF con Pandoc. Ho semplicemente modificato lo script (veramente basico) per salvare e passare il file aperto a LuaLaTeX e compilarlo come PDF nella cartella di lavoro. È tutto fuorché qualcosa di complesso ma fa il suo lavoro. Unica avvertenza, se avete l’indice o altre funzioni che richiedono una doppia compilazione per il vostro documento LaTeX, abbiate l’accortezza di lanciare la compilazione 2 volte una in seguito all’altra.
Il comando che viene lanciato è il seguente:
:w! \| !lualatex "%"
La prima parte forza il salvataggio del file, a cui viene concatenato (grazie al pipe | che è preceduto dalla barra rovesciata per l’escape ed il punto esclamativo dice a Vim di lanciare il comando che segue a terminale. Il comando è ovviamente quello per compilare in LuaLaTeX il file aperto che viene rappresentato in Vim dal simbolo “%”.
Aprire il PDF creato dopo la compilazione
<leader> p
La mnemonica è P per print ovvero stampa, permette di aprire il PDF compilato con il comando precedente in a-Shell. Si aprirà la sharesheet e usando la funzione Markup potrete visualizzare il PDF nell’anteprima di iOS / iPadOS.
Controllo ortografico
<leader> o
La mnemonica di questa scorciatoia è O per Ortografia e, come fa supporre, attiva e disattiva il controllo ortografico in Vim. Per mia comodità ho impostato non solo la lingua italiana (la prima volta che verrà lanciato il comando, dovrà essere scaricato il file del correttore ortografico di Vim in italiano), ma anche quello inglese.
Visualizzare i caratteri nascosti
<leader>
Siccome sono un fissato della tipografia e voglio controllare che tutto sia impaginato correttamente sopratutto gli spazi unione ho inserito anche questa scorciatoia a tastiera.
La mnemonica del comando è L per List, ovvero il comando di Vim per mostrare i caratteri nascosti e gli spazi. Nel mio .vimrc ho personalizzato la visualizzazione dei caratteri nascosti.
Come copiare dagli appunti di iPadOS a Vim e viceversa
Da ultimo una cosa che ho imparato tardivamente ma che è molto utile soprattutto su iOS / iPadOS, ovvero come copiare dagli appunti dell’iPad a Vim e viceversa.
Il comando in modalità normale per copiare in Vim è Y che sta per yonk ovvero copia, quello per incollare è P che sta per paste ovvero incolla. Il problema è che questi comandi funzionano solo all’interno di Vim.
Entrano in gioco i registri di Vim in particolare il registro che gestisce gli appunti. I registri possono essere invocati digitando " ed il particolare registro. Nel nostro caso il registro collegato agli appunti di iOS / iPad è quello dell’asterisco ___. Per cui per copiare del testo da Vim agli appunti dell’iPad basterà digitare _"_y_ ed invece per copiare dagli appunti dell’iPad a Vim "*p.
Per incollare all’interno di Vim del testo si può anche entrare in modalità inserisci e digitare il solito CMD+V ma è meno preciso ed efficace. Fidatevi di me, una volta imparato è un sistema veramente valido di copia / incollare da e per Vim.
Ripiegare (fold) i capitoli in markdown
<leader> f
(se non venisse riconosciuto in automatico per il formato .md come dovrebbe)
Esula in parte ma già che ci sono lo segnalo. All’interno del mio .vimrc c’è anche uno script per ripiegare i capitoli delimitati dagli hashtag ovvero # in markdown.
È uno script che ho personalizzato e che permette oltre alla ripiegatura del testo all’interno di un capitolo anche di vedere da quante parole è composto e la percentuale del documento che occupa un singolo capitolo, utile per avere un’idea approssimativa delle dimensioni reciproche dei capitoli e per potersi concentrare una parte specifica del documento alla volta.
Varie ed eventuali
Chiudo segnando alcune cose potenzialmente utili. Ho copiato da Luke Smith alcuni comandi / configurazioni del .vimrc. In particolare, se avete una tastiera americana come il sottoscritto, digitando in modalità inserisci (insert) “` ed una vocale” verrà creata la vocale accentata, mentre digitando “' e la lettera E” la lettera “é”.
Ho anche preso delle espansioni di testo per inserire, mentre si digita in modalità inserisci, della formattazione in LaTeX, così come in Markdown.
Per muoversi velocemente dall’interno all’esterno dei costrutti ho aggiunto la scorciatoia \<++>
cancellandolo e mettendovi in modalità inserici.
Sono piccoli trucchi ma velocizzano molto la scrittura, occorre memorizzare solo le scorciatoie / espansioni del testo e poi diventano una seconda natura.
In conclusione
Questo è il primo articolo di una serie dove spero di documentare il nuovo flusso di lavoro che sto sperimentando. Per quanto riguarda Vim devo implementare i plugin (anche se non sono poi più così sicuro della loro necessità) o quantomeno configurare una status bar sufficientemente ben fatta. Sui computer utilizzo il plugin Airline, forse un po' eccessivo ma graficamente molto accattivante.
Per LaTeX invece ho implementato le funzioni di base (e qualcuna in più) del mio modello in Markdown ho ancora delle cose che non mi soddisfano (sopratutto come implementare i link ai documenti allegati e a Normattiva) ma per il resto tutto funziona egregiamente.
Nelle prossime settimane conto di pubblicare nuove parti. Alla prossima!