Muoversi senza frecce
I movimenti sono la parte di Vim che si impara per prima e si usa per sempre. Non servono solo a spostare il cursore: nella lezione 3 diventeranno gli argomenti dei comandi di modifica. Impararli bene ora conviene due volte.
Dal carattere al file, per gradi
I tasti di movimento sono organizzati per scala: c'è un livello per il carattere, uno per la parola, uno per la riga, uno per il paragrafo, uno per il file. Sceglierne il giusto è la differenza tra tre tasti e trenta.
Carattere e riga
| Tasto | Movimento |
|---|---|
| h l | un carattere a sinistra, a destra |
| j k | una riga giù, una riga su |
| 0 | inizio riga, colonna 1 in senso stretto |
| ^ | primo carattere non bianco della riga — quasi sempre è questo che vuoi |
| $ | fine riga |
| g_ | ultimo carattere non bianco |
Parole
| Tasto | Movimento |
|---|---|
| w b | inizio parola successiva / precedente |
| e ge | fine parola successiva / precedente |
| W B E | come sopra, ma la «parola» è tutto ciò che non è spazio |
La differenza tra minuscolo e maiuscolo conta: su utente@dominio.it
il tasto w si ferma sette volte, W lo salta tutto in una.
Dentro la riga, con precisione
| Tasto | Movimento |
|---|---|
| fx | salta sopra la prossima x nella riga (find) |
| tx | salta fino a un passo prima della prossima x (till) |
| Fx Tx | le stesse due, all'indietro |
| ; , | ripete l'ultimo f/t in avanti / all'indietro |
| % | salta alla parentesi, graffa o quadra corrispondente |
File e schermo
| Tasto | Movimento |
|---|---|
| gg G | prima riga / ultima riga del file |
| 42G oppure :42 | vai alla riga 42 |
| { } | paragrafo precedente / successivo (blocchi separati da righe vuote) |
| Ctrl-d Ctrl-u | mezza schermata giù / su |
| Ctrl-f Ctrl-b | schermata intera avanti / indietro |
| H M L | riga in alto / al centro / in basso dello schermo |
| zz zt zb | scorre la vista per mettere il cursore al centro / in alto / in basso |
5j scende di cinque righe, 3w avanza di tre parole,
2f, salta alla seconda virgola. È il primo pezzo di grammatica che
incontri, e vale per quasi tutto.
Un esercizio su una riga di configurazione
Copia questa riga in un file di prova e prova a raggiungere i punti indicati senza mai premere una freccia.
server { listen 443; root /var/www/sito; index index.php; }- Sulla parola
443: f4 — un tasto in più e ci sei. - Sulla graffa di chiusura: metti il cursore sulla prima
{e premi %. - Su
index.php: $ poi bb, oppure 3fi — misura quale è più corto. - Torna all'inizio: ^.
L'obiettivo non è imparare la sequenza «giusta», è prendere l'abitudine di guardare dove vuoi arrivare e cercare il carattere che ci sta sopra. Con f quasi ogni punto della riga è a due o tre tasti di distanza.
Tornare indietro
Ogni salto «lungo» (con G, {, una ricerca) viene registrato
nella jumplist. Ctrl-o torna al punto precedente,
Ctrl-i riavanza. E `` (due apici inversi) rimbalza tra
l'ultima posizione e quella attuale: comodissimo per confrontare due punti
lontani dello stesso file.
Numeri relativi: il conteggio te lo dice lo schermo
Il conteggio davanti al movimento è potente ma richiede di sapere quante righe saltare, e nessuno le conta a occhio. Vim può scrivertelo a margine:
:set number relativenumber3 function calcolaTotale(carrello) { 2 let somma = 0; 1 for (const riga of carrello) { 14 somma += riga.prezzo * riga.qta; 1 } 2 return somma; 3 }
La riga del cursore mostra il suo numero assoluto (utile per parlarne con
qualcuno o per i messaggi di errore), tutte le altre mostrano la distanza.
Vuoi cancellare fino alla graffa di chiusura tre righe sotto? Leggi 3
a sinistra e batti d3j. Il conteggio smette di essere una stima.
.vimrc:
au InsertEnter * set norelativenumber e
au InsertLeave * set relativenumber. Sulla configurazione torniamo
per bene nella lezione 9.