Cosa si intende per "riga" in Vim? Come si configura una doppia modalità alternativa di movimento tra le righe?

Indice dei Contenuti

Perché la definizione di riga Vim è “speciale”?

In Vim una “riga” è un insieme di caratteri che termina con un ritorno capo.

Tutto qui?

Sembra ovvio, ma cosa cambia rispetto alla definizione di “riga” di altri sistemi di scrittura?

Semplice: in altri ambienti solitamente le “righe” si interrompono al margine destro del monitor. In Vim no.

Nulla cambia per le righe brevi, ovvero che non eccedano il margine destro.

Cambia, invece, nel caso di righe lunghe che eccedano tale bordo.

Per Vim, quindi, l’oggetto riga può essere, a monitor, visualizzato su più righe visuali.

Movimento tra le righe in Vim?

Nella configurazione di default di Vim, gli spostamenti verticali avvengono utilizzando i tasti corrispondenti alle lettere j e k oppure con i tasti freccia ed hanno effetto su righe intere, secondo la definizione sopra riportata.

Per gli spostamenti verticali tra righe eccedenti il bordo del monitor occorre, invece, la lettera g prima operatori di movimento j e k: quindi gj o gk.

La regola si applica anche alle operazioni sugli oggetti di testo.

Quindi per eliminare un frammento di riga dal punto del cursore fino al bordo destro del monitor (come avviene, tanto per intenderci, avviene con il comando C-k di Emacs), si utilizza il comando dg$, per l’operazione inversa (dal punto del cursore sino al bordo sinistro) si digita dg0.

Rimappare o no? Questo è il problema

È molto semplice rimappare i tasti di movimento. Una riconfigurazione di base, da riportare nel file .vimrc, potrebbe essere la seguente:

map j gj
map k gk

Questa soluzione, tuttavia, non mi piace perchè compromette la velocità di movimento complessivo di Vim.

Una soluzione alternativa è quella di rimappare soltanto i tasti freccia.

Ottenere questa configurazione è molto semplice ed è l’oggetto del successivo paragrafo.

Come rimappare i tasti freccia

Per ottenere tale configuazione basta inserire il seguente codice nel file configurazione .vimrc:

nnoremap <Down> gj
nnoremap <Up> gk
vnoremap <Down> gj
vnoremap <Up> gk
inoremap <Down> <C-o>gj
inoremap <Up> <C-o>gk

Il codice è impostato per funzionare in tripla modalità: normale, visuale ed inserimento.

Dopo il riavvio di Vim saranno disponibili i tasti freccia verticali per i movimenti infra-righe nonché i tipici tasti jk per i movimenti di default di Vim.

Grazie per l’attenzione.

Avvocato

Loquimur