:vim — corso in 10 lezioni
Lezione 02 di 10

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.

Teoria

Dal carattere al file, per gradi

NORMAL tutto quello che segue si preme qui 1,1  All

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

TastoMovimento
h   lun carattere a sinistra, a destra
j   kuna riga giù, una riga su
0inizio 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

TastoMovimento
w   binizio parola successiva / precedente
e   gefine parola successiva / precedente
W B Ecome 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

TastoMovimento
fxsalta sopra la prossima x nella riga (find)
txsalta fino a un passo prima della prossima x (till)
Fx   Txle stesse due, all'indietro
;   ,ripete l'ultimo f/t in avanti / all'indietro
%salta alla parentesi, graffa o quadra corrispondente

File e schermo

TastoMovimento
gg   Gprima riga / ultima riga del file
42G oppure :42vai alla riga 42
{   }paragrafo precedente / successivo (blocchi separati da righe vuote)
Ctrl-d   Ctrl-umezza schermata giù / su
Ctrl-f   Ctrl-bschermata intera avanti / indietro
H   M   Lriga in alto / al centro / in basso dello schermo
zz   zt   zbscorre la vista per mettere il cursore al centro / in alto / in basso
Il conteggio si mette davanti. Ogni movimento accetta un numero: 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.
Pratica

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.

bersaglio
server { listen 443; root /var/www/sito; index index.php; }

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.

Trucco

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:

nel .vimrc, o al volo con :
:set number relativenumber
com'è che appare
  3 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.

Variante consigliata. Molti tengono i numeri relativi solo mentre lavorano in NORMAL e quelli assoluti quando scrivono. Nel .vimrc: au InsertEnter * set norelativenumber e au InsertLeave * set relativenumber. Sulla configurazione torniamo per bene nella lezione 9.