## #BeOpen

Respect your Freedom

cd ~ Manifesto Articoli

# #Breve guida a VIM

dado 13-05-2022

Non importa se sei un amministratore di sistema o uno sviluppatore di software, se usi il terminale in una distribuzione GNU/Linux, potrà capitare che dovrai utilizzare un editor da riga di comando.

Sono disponibili diversi editor di testo da riga di comando e sei libero di usarne uno qualsiasi. Vim è uno degli editor più potenti popolari, installato su qualsiasi distribuzione GNU/Linux. Questo è il motivo per cui imparare le basi di Vim ti aiuterà molto.

Ora, questa non è una guida completa per renderti un esperto di Vim. È una guida destinata a fornirti gli strumenti minimi necessari per sopravvivere in Vim.

Se non fosse pre-installato nella propria distribuzione GNU/Linux, basta aprire un terminale e, a seconda, digitare il comando specifico per la distro o derivata:

Fedora | Debian | Arch
--- | --- | ---
sudo dnf -y install vim | sudo apt -y install vim | sudo pacman -S vim

Vim, o Vi IMproved, è un editor di testo libero e multipiattaforma, nato per fornire una versione migliorata di Vi.

La sua prima versione è stata scritta nel 1991 da Bram Moolenaar. Attualmente è molto diffuso tra programmatori ed utenti di sistemi operativi unix-like.

Da Vi mantiene la caratteristica di essere modale, ovvero di avere modalità diverse nelle quali i normali caratteri della tastiera hanno significato di inserimento testo o di comandi. In questo modo, è possibile usarlo senza far uso del mouse, permettendo una velocità maggiore di scrittura, a prezzo di maggiore difficoltà di apprendimento da parte di nuovi utenti. La tastiera non è così solo uno strumento per digitare testo, ma anche uno strumento per impartire comandi.

Vim ha quindi tre modalità:

- Command mode: quando si avvia Vim, ci si trova in ​​modalità di comando. In questa modalità è possibile spostarsi sullo schermo, eliminare e copiare del testo, ma non possibile scrivere testo;

- Insert mode: per inserire del testo in un file, esiste una modalità di inserimento dedicata, chiamata appunto insert mode;

- Visual mode: permette di utilizzare i tasti freccia per selezionare il testo su più righe (invece di lavorare direttamente su parole e righe in base alla posizione del cursore, come nella insert mode).

Uno dei vantaggi di avere una modalità comando distinta dall'inserimento del testo vero e proprio risiede nel fatto che più operazioni di modifica possono essere fatte mediante una sola riga della tastiera senza dover premere contemporaneamente i tasti Alt, Ctrl o altri modificatori, cosa che riduce il numero di tasti da premere.

## Avviare Vim da terminale

Aprire un terminale e digitare il seguente comando:

vim

Per visualizzare tutti i file presenti in una cartella, digitare:

vim .

È possibile aprire direttamente un file tramite Vim:

vim {file}

## Manuale di Vim

Vim è un editor ricco di funzionalità, quindi ricordarle tutte è molto difficile, almeno inizialmente. Ma non c'è motivo di preoccuparsi: si può sempre chiedere aiuto. Fortunatamente questo aiuto è fornito da Vim stesso.

Il manuale di aiuto viene fornito con l'editor stesso ed è davvero completo. Per accedere alla guida, eseguire il comando seguente:

:help

## Comandi base

Vediamo ora alcuni comandi di base per spostarsi tra le varie modalità dell'editor.

I | Entrare nella Insert mode
ESC | Uscire da qualsiasi modalità
v | Entrare nella Visual mode
: | Entrare nella Command mode

## Entrare nella modalità inserimento

Ci sono diversi modi per entrare in modalità inserimento. Elenchiamo quelli principali.

I | Modalità inserimento, porta il cursore ad inizio riga
a | Modalità inserimento dopo l'ultima lettera, pronto per scrivere
A | Modalità inserimento, porta il cursore alla fine della riga
o | Modalità inserimento, crea una nuova riga dopo la riga corrente
O | Modalità inserimento, crea una nuova riga prima della riga corrente

## Muoversi nella normal mode

h | Spostare il cursore verso sinistra
j | Spostare il cursore verso il basso
k | Spostare il cursore verso l'alto
l | Spostare il cursore verso destra
SHIFT+G | Sposta il cursore alla fine del file
]] | Sposta il cursore alla fine del file
gg | Sposta il cursore all'inizio del file
[[ | Sposta il cursore all'inizio del file
w | Sposta il cursore alla parola successiva
b | (before) Sposta il cursore alla parola precedente
e | (end) Sposta il cursore al termine della parola successiva
$ | Sposta il cursore a fine riga
0 | Sposta il cursore a inizio riga
^ | Sposta il cursore a inizio riga, senza contare eventuali spazi
( | Sposta il cursore all'inizio della frase
) | Sposta il cursore alla fine della frase
{ | Sposta il cursore all'inizio del paragrafo
} | Sposta il cursore alla fine del paragrafo
H | Sposta il cursore alla prima riga del viewport
M | Sposta il cursore alla metà del viewport
L | Sposta il cursore alla fine del viewport
nG | Sposta il cursore alla n-esima riga
nw | Sposta il cursore alla n-esima parola successiva
e | Sposta il cursore al termine di una parola
b | Sposta il cursore all’inizio della parola
:nriga | Sposta il cursore alla riga indicata
^o | Sposta il cursore alla posizione precedente
^i | Sposta il cursore alla posizione successiva (rispetto alla precedente)

## Salvataggio e uscita

Ecco la lista dei comandi base per salvare il documento ed uscire da Vim.

:w | Salva il file
:q! | Esce da Vim, ma senza salvare il file
:wq | Salva il file ed esce da Vim

## Ricerca di testo

Durante la scrittura, ricercare del testo è fondamentale. In Vim può essere fatto molto semplicemente.

/{parola} | Spostare il cursore alla prima occorrenza della parola
?{parola} | Spostare il cursore all'ultima occorrenza della parola
f{lettera} | Spostare il cursore sulla lettera ricercata nella riga
t{lettera} | Spostare il cursore prima della lettera ricercata

Se fosse presente più di una corrispondenza, è possibile passare alla parola successiva premendo il tasto n oppure alla precedente premendo il tasto N.

Suggerimento: l'opzione \c esegue una ricerca senza distinzione tra maiuscole e minuscole.

Esempio: /\cLa_mia_ricerca

## Cerca e sostituisci

Molte volte, dopo aver ricercato del testo, è utile sostituire le occorrenze corrispondenti.

:%s/foo/bar/g | Sostituisce tutte le ricorrenze di 'foo' con 'bar'. L'opzione 'g' alla fine è responsabile della sostituzione di tutte le corrispondenze trovate. In caso contrario, verrebbe sostituita solo la prima corrispondenza
:s/foo/bar/g | Eseguirà esattamente la stessa funzione di cui sopra, ma solo nella riga corrente anziché nell'intero file
:%s/foo/bar/gci | Per impostazione predefinita, la ricerca fa distinzione tra maiuscole e minuscole. Per non fare distinzione, si può usare il flag 'i' insieme a 'g'. Con l'opzione 'c' viene richiesta la conferma, al fine di evitare sostituzioni indesiderate
:7,$s/foo/bar/g | Sostituisce tutte le ricorrenze di ’foo’ con ’bar’, dalla settima riga alla fine del file
:7,30s/foo/bar/g | Sostituisce tutte le ricorrenze di ’foo’ con ’bar’, dalla settima riga alla trentesima

Con l'opzione conferma, verranno presentate la seguenti opzioni:

- y: SÌ, sostituisci questa corrispondenza;

- n: NO, non sostituire questa corrispondenza e passa a quella successiva;

- a: Sostituisci TUTTE le corrispondenze;

- q: ESCI senza sostituire alcuna corrispondenza;

- l: Sostituisci questa corrispondenza ed esci, come se fosse l'ULTIMA corrispondenza;

- ^E: Scorri lo schermo verso l'alto;

- ^Y: Scorri lo schermo verso il basso;

## Cancellazione

In Vim, buona pratica è non cancellare il testo in modalità inserimento, come si farebbe con qualsiasi editor, ma operare in Normal mode, sempre per aumentare la velocità di esecuzione.

u | Annulla la modifica
^r | Ripristino della modifica
x | Cancella il carattere singolo su cui si trova il cursore
X | Elimina il carattere prima della posizione corrente del cursore, come il tasto backspace
d | Cancella la parte di testo evidenziata
dw | Delete word, dalla posizione del cursore
daw | Delete a word. Cancella un'intera parola, indipendentemente dalla posizione del cursore
diw | Delete inner word. Cancella un'intera parola
cw | Change word (in automatico, cancella la parola ed entra in Insert mode)
di" | Delete inner (dentro) "" o qualsiasi delimitatore venga specificato
ci" | Change inner "". Elimina il contenuto ed entra in Insert mode
dd | Cancella un'intera riga
D | Cancella un'intera riga dalla posizione del cursore
dit | Delete inner tag (come i tag html)
cit | Change inner tag (ed entra in Insert Mode)
das | Delete a sentence (cancella una frase intera)
dap | Cancella un paragrafo intero
d0 | Cancella dalla posizione corrente del cursore a inizio riga
d$ | Cancella dalla posizione corrente del cursore a fine riga
dG | Cancella dalla posizione corrente del cursore fino alla fine del file
d/parola | Cancella dalla posizione del cursore alla parola

## Copia/incolla

yy | Copia un'intera riga
yw | Copia una parola
y$ | Copia dalla posizione corrente del cursore fino alla fine della riga
yG | Copia dalla posizione corrente del cursore fino alla fine del file
p | Paste. Incolla il contenuto del buffer dopo la posizione del cursore (il contenuto cancellato resta in memoria e può essere incollato)
P | Incolla il contenuto del buffer dopo la posizione del cursore
r | Replace. Sostituisce una singola lettera, tornando immediatamente in Normal mode

## Trasformazione in maiuscolo (o minuscolo)

Semplice e immediato è trasformare il testo in maiuscolo o minuscolo.

guw | Parola in minuscolo
gUw | Parola in maiuscolo
gUU | Tutta la riga in maiuscolo
guu | Tutta la riga in minuscolo

## Selezionare il testo in Visual mode

v | Seleziona carattere per carattere
V | Seleziona un'intera riga
SHIFT+J | Unisce più righe selezionate

## Creazione di macro

In Vim è possibile registrare una sequenza di comandi e poi eseguirli in automatico!

q{lettera} | Ha inizio la registrazione della macro. Es.: qa - tutti i comandi digitati successivamente saranno registrati. Nell'esempio seguente, "a" è il nome della macro. In questo passaggio è possibile eseguire qualsiasi azione di Vim. Si possono vedere queste azioni eseguendo il comando: :registers
q | Termine della macro
@{lettera} | Viene eseguita la macro

## Criptare file txt

Non è solo possibile salvare un file, bensì pure criptarlo, per una maggior sicurezza.

vim -x file.txt | Da terminale, crea un file, specificando una password di cifratura
:X | Cambiare la password. Se il campo viene lasciato vuoto, anche nella conferma, la password viene cancellata e il file non è più cifrato
:set cm=blowfish2 | Livello di cifratura massima disponibile
set cm=blowfish2 | Per rendere il massimo livello di cifratura come parametro di default, creare o modificare il file.vimrc, all'interno della home directory, con la precedente istruzione

## Altri comandi utili

no | Crea n righe contemporaneamente
CTRL+a | Aumenta di un'unità il primo numero di una riga
. | Ripete l'ultima azione eseguita (o comando)
:set number | Indicazione numero riga
:set nonumber | Numero riga non visibile
n+comando | Il comando viene ripetuto n volte
>> | Tabulazione a destra
<< | Tabulazione a sinistra

## Eseguire comandi shell da Vim

:!command | Esegue un singolo comando. Ad esempio: :!pwd
:shell | Il comando darà accesso al terminale, dove si potranno eseguire più comandi. Digitare il comando exit per tornare alla sessione di Vim

Il comando sopra ti darà accesso al terminale, dove puoi eseguire più comandi. Una volta che hai finito, digita il comando exit che tornerà alla sessione di Vim.

## Controllo ortografico in Vim

La prima cosa da sapere è come attivare il controllo ortografico o spellcheck.

In command line, digitare:

:set spell spelllang=it

È possibile attivare più lingue contemporaneamente:

:set spell spelllang=it,en_US

In tal modo il sistema di correzione rileverà gli errori nella lingua italiana ed anche in quella inglese (americana), non evidenziando come errate le parole in inglese.

### Attivare e disattivare il controllo ortografico

Il controllo ortografico è comodo, ma a volte è piacevole poterlo disattivare ed attivare velocemente.

:set spell

per attivare il controllo ortografico

:set no spell

per disattivalo.

Nota a margine: in molti casi il modo per attivare o disattivare un comando in Vim è quello di anteporre al comando stesso il termine chiave no.

### Correggere il testo in Normal Mode

[s | Sposta il cursore alla prima parola errata a sinistra
s] | Sposta il cursore alla prima parola errata a destra

Per parola errata Vim considera sia gli errori di scrittura (una parola che non viene trovata nel vocabolario italiano di Vim) sia errori sintattici (che Vim visualizza in blu), come ad esempio una parola che, all’inizio di un nuovo periodo, non inizia con la maiuscola.

La variante di questo comando più specifica, permette di passare solo tra le parole sbagliate (quelle che non vengono trovate nel vocabolario di Vim) è [S e ]S.

Per correggere la parola errata basta digitare:

z=

Comparirà ora una schermata con le possibili parole corrette; a tali parole sarà anteposto un numero. Sarà quindi sufficiente digitare il numero della parola corretta, premere invio e Vim procederà a sostituirla.

### Aggiungere parole al vocabolario di Vim

Può capitare, e spesso capita, che una determinata parola, casomai specialistica della nostra materia, venga visualizzata da Vim come errore perché non presente nel vocabolario.

Nessun problema, possiamo inserire una parola nel nostro vocabolario, posizionandoci su di essa e digitando zg

Se volete inserire velocemente una parola nel vocabolario:

:spe {parola da aggiungere}

Se volete che una parola risulti come non corretta basterà digitare: zw (w sta per wrong, sbagliato).

Se volete inserire velocemente una parola come errata:

:spellw {parola da aggiungere}

### Correggere il testo in Insert mode

Sulla parola errata digitare:

^X quindi s

Si aprirà un menù a finestra con le possibili parole corrette. Per scegliere dal menù a tendina usate la combinazione di tasti CTRL+N (next) oppure CTRL+P (previous).

### Auto-completamento

Digitando CTRL+X, in insert mode, si accede a molto di più del sistema di correzione degli errori. È possibile procedere all'auto-completamento delle parole che si stanno digitando.

Dopo aver digitato CTRL+X, invece di s è possibile digitare:

- CTRL+L, per il completamento dell’intera linea (completa con frasi simili a quelle scritte precedentemente; utile se si è un programmatore);

- CTRL+N, per il completamento con parole del documento (utile soprattutto per nomi o parole complesse che si usano abbondantemente nel file);

- CTRL+K, per il completamento con parole del dizionario.

## Lavorare con più cose contemporaneamente

Vim è un editor molto potente. Supporta molte funzionalità avanzate per lavorare con più file, buffer e finestre. In questa sezione, discuteremo i seguenti elementi:

- più file;

- buffer multipli;

- schede multiple;

- finestre multiple

### Lavorare su più file

:e | Carica un nuovo file nel buffer per la modifica
:e tab | Elenca i file per la modifica dalla directory corrente

### Buffer multipli

Il buffer è la memoria temporanea usata da Vim per contenere il testo letto da un file. Una volta terminata la modifica e salvato il file, allora il contenuto del buffer viene trasferito nel file appropriato.

È possibile utilizzare i buffer per lavorare con più file.

:badd {file} | Aggiunge il file in un nuovo buffer
:bN | Passa all'ennesimo buffer. Ad esempio, per passare al terzo buffer: b3
:bnext | Passa al buffer successivo
:bprevious | Passa al buffer precedente
:buffers | Elenca tutti i buffer
:blast | Passa all'ultimo buffer

### Schede multiple

:tabnew | Apre una nuova scheda
:tabnew {file} | Apre un file in una nuova scheda
:tabclose | Chiudi la scheda attuale
:tabnext | Passa alla scheda successiva
:tabprevious | Passa alla scheda precedente
:tabfirst | Passa alla prima scheda
:tablast | Passa all'ultima scheda

### Finestre multiple

:new | Apre una nuova finestra
:new {file} | Apre un file in una nuova finestra
:vnew | Apre una nuova finestra verticalmente

### Modifica delle dimensioni di una finestra

A volte può tornar utile cambiare la dimensione di una finestra.

:resize {new size} | Modifica le dimensioni della finestra attualmente attiva. Ad esempio: :resize 30
:vertical resize {new size} | Modifica le dimensioni della finestra verticale
Ctrl+w poi + | Aumenta le dimensioni della finestra
Ctrl+w poi - | Diminuisce la dimensione della finestra
Ctrl+w poi = | Imposta una dimensione uguale a tutte le finestre
Ctrl+w poi o | Chiude tutte le finestre, eccetto quella attiva

### Muoversi tra le finestre attive

Ctrl+w poi h | Sposta il focus sulla finestra a sinistra
Ctrl+w poi l | Sposta il focus sulla finestra a destra
Ctrl+w poi k | Sposta il focus sulla finestra in alto
Ctrl+w poi j | Sposta il focus sulla finestra in basso

## Identazione automatica

Un altra caratteristica di Vim, che molto aiuta nella scrittura del codice, è l'autoidentazione di un intero file. È possibile abilitare l'identazione automatica con il comando:

:set autoindent

Oppure scrivere tutto il codice per poi identarlo tutto in una volta con il comando:

gg=G

Un modo ulteriore per identare un testo in visual mode è il comando:

=

Il comando:

gq si occupa di identare automaticamente i commenti.

Un articolo a parte sarà dedicato ai plugin e alla loro installazione, alla personalizzazione di Vim, sia tramite temi che modificando il file .vimrc.

##Questo sito non fa uso di cookie e non registra dati personali degli utenti.

Tutti gli articoli sono senza affiliazioni e senza pubblicità.

##Contatti

Telegram
Mail
Mastodon
Gitea
PeerTube
Questo sito utilizza solo strumenti FLOSS
2022 - Quest'opera è distribuita con Licenza CC BY-SA 4.0

Realizzato con

da dado