Vai al contenuto

Editor di testo VI

In questo capitolo imparerai come lavorare con il VIsual editor.


Obiettivi : In questo capitolo, i futuri amministratori Linux impareranno come:

✔ Utilizzare i comandi principali dell'editor VI;
✔ Modificare un testo con l'editor VI.

🏁 comandi utente, linux

Conoscenze: ⭐
Complessità: ⭐ ⭐

Tempo di lettura: 20 minuti


Visual (VI) è un editor di testo popolare in Linux, nonostante la sua limitata ergonomia. È infatti un editor interamente in modalità testo: ogni azione viene eseguita con una chiave sulla tastiera o sui comandi dedicati.

Molto potente, è soprattutto molto pratico poiché è nel complesso minimo per le applicazioni di base. È quindi accessibile in caso di guasto del sistema. La sua universalità (è presente su tutte le distribuzioni Linux e sotto UNIX) lo rende uno strumento fondamentale per l'amministratore.

Le sue funzionalità sono:

  • Inserire, cancellare e modificare il testo;
  • Copiare parole, righe o blocchi di testo;
  • Cercare e sostituire i caratteri.

comando vi

Il comando vi Apre l'editor di testo VI.

vi [-c command] [file]

Esempio:

vi /home/rockstar/file
Opzione Informazione
-c command Esegue VI specificando un comando all'apertura

Se il file esiste nella posizione indicata dal percorso, VI lo legge e lo mette in modalità comandi.

Se il file non esiste, VI apre un file vuoto, visualizzando una pagina vuota sullo schermo. Quando il file viene salvato, prenderà il nome specificato con il comando.

Se il comando vi viene eseguito senza specificare un nome di file, VI apre un file vuoto e visualizza una pagina vuota sullo schermo. Quando il file viene salvato, VI chiederà un nome di file.

L'editor vim prende l'interfaccia e le funzioni di VI con molti miglioramenti.

vim [-c command] [file]

Tra questi miglioramenti, l'utente ha a disposizione l'evidenziazione della sintassi, utile per modificare gli script di shell o i file di configurazione.

Durante una sessione, VI utilizza un file buffer per registrare tutte le modifiche apportate dall'utente.

Nota

Il file originale non viene modificato finché l'utente non salva il suo lavoro.

All'avvio, VI è in modalità comando.

Suggerimento

Una riga di testo viene terminata premendo Enter, ma se lo schermo non è sufficientemente ampio, VI effettua interruzioni di riga automatiche, con la configurazione predefinita wrap. Queste interruzioni di riga possono non essere gradite, questa è la configurazione nowrap.

Per uscire dalla modalità Comandi, premere :, quindi digitare:

  • q per uscire senza salvare (quit);
  • w per salvare il tuo lavoro (write);
  • wq (write quit) o x (eXit) per salvare e uscire.

In modalità comandi, fare doppio clic sul tasto Z maiuscolo per salvare e uscire.

È necessario aggiungere ! ai comandi precedenti per forzare l'uscita senza conferma.

Attenzione

Non c'è alcun backup periodico, quindi è necessario ricordarsi di salvare il lavoro regolarmente.

Modalità operativa

In VI, ci sono 3 modalità di lavoro:

  • La modalità comando;
  • La modalità inserimento;
  • La modalità ex.

La filosofia di VI è quella di alternare tra la modalità comando e la modalità inserimento.

La terza modalità, ex, è una modalità di comando del piè di pagina modello vecchio editor di testo.

La modalità comando

Questa è la modalità predefinita quando si avvia VI. Per accedervi da una qualsiasi delle altre modalità, basta premere il tasto Esc.

In questo momento, tutta la digitazione della tastiera viene interpretata come comandi e le azioni corrispondenti vengono eseguite. Questi sono essenzialmente comandi per la modifica del testo (copia, incolla, annulla, ...).

I comandi non vengono visualizzati sullo schermo.

La modalità inserimento

Questa è la modalità di modifica del testo. Per accedervi dalla modalità comando, devi premere tasti speciali che eseguiranno un'azione oltre a modificare la modalità.

Il testo non viene inserito direttamente nel file ma in una zona buffer nella memoria. Le modifiche sono efficaci solo quando il file viene salvato.

La modalità Ex

Questa è la modalità di modifica del file. Per accedervi, è necessario prima passare alla modalità comando, quindi inserire il comando ex frequentemente preceduto dal carattere :.

Il comando è convalidato premendo il tasto Enter.

Muovere il cursore

In modalità comando, ci sono diversi modi per spostare il cursore.

Il mouse non è attivo in un ambiente di testo ma lo è in un ambiente grafico, è possibile spostarlo carattere per carattere, ma i collegamenti esistono per andare più veloci.

VI rimane in modalità comando dopo aver spostato il cursore.

Il cursore è posizionato sotto il carattere desiderato.

Da un carattere

  • Sposta uno o n caratteri a sinistra:

Left, N Left, H o N H

  • Sposta uno o n caratteri a destra:

Right, N Right, L o N L

  • Sposta uno o n caratteri su:

Up, N Up, K o N K

  • Sposta uno o n caratteri giù:

Down, N Down, J o N J

  • Passare alla fine della linea:

$ o End

  • Passare all'inizio della linea:

0 o POS1

Dal primo carattere di una parola

Le parole sono costituite da lettere o numeri. Caratteri di punteggiatura e apostrofi separarano le parole.

Se il cursore si trova a metà di una parola, W si sposta alla parola successiva, mentre B si sposta all'inizio della parola.

Se la linea è finita, VI va automaticamente alla riga successiva.

  • Muoversi di una o n parole a destra:

W o N W

  • Muoversi di una o n parole a sinistra:

B o N B

Da qualsiasi posizione su una linea

  • Passa all'ultima riga di testo:

G

  • Passa alla linea n:

N G

  • Passa alla prima riga dello schermo:

H

  • Passa alla linea centrale dello schermo:

M

  • Passa all'ultima riga dello schermo:

L

Inserimento del testo

Esistono diversi modi per inserire il testo in modalità comando.

VI passa alla modalità inserimento dopo aver inserito uno di questi tasti.

Nota

VI passa alla modalità inserzione. Quindi si dovrà premere il tasto Esc per tornare alla modalità comando.

In relazione a un carattere

  • Inserimento del testo prima di un carattere:

i (insert)

  • Inserimento del testo dopo di un carattere:

a (append)

In relazione a una linea

  • Inserimento del testo all'inizio di una linea:

I

  • Inserimento del testo alla fine di una linea:

A

In relazione al testo

  • Inserimento del testo prima di una linea:

O

  • Inserimento del testo dopo una linea:

o

Caratteri, parole e linee

VI permette di modificare il testo gestendo:

  • caratteri,
  • parole,
  • linee.

In ogni caso è possibile :

  • eliminare,
  • sostituire,
  • copiare,
  • tagliare,
  • incollare.

Queste operazioni vengono eseguite in modalità comando.

Caratteri

  • Elimina uno o n caratteri:

x o n x

  • Sostituisce un carattere con un altro:

r+character

  • Sostituisce più di un carattere con altri:

R+characters+Esc

Nota

Il comando R passa alla modalità sostituzione, che è una sorta di modalità inserimento.

Parole

  • Cancella (taglia) una o n parole:

d+w o n+d+w

  • Copia una o n parole:

y+w o n+y+w

  • Incolla una parola una volta o n volte dopo il cursore:

P o n+p

  • Incolla una parola una volta o n volte prima del cursore:

P o n+P

  • Sostituisci una parola:

C+W+word+Esc

Suggerimento

È necessario posizionare il cursore sotto il primo carattere della parola da tagliare (o copiare) altrimenti VI taglierà (o copiare) solo la parte della parola tra il cursore e la fine. Per eliminare una parola è sufficiente tagliarla. Se non è incollata dopo, il buffer viene svuotato e la parola è cancellata.

Linee

  • Elimina (taglia) una o n linee:

d+d o n+d+d

  • Copia una o n linee:

y+y o n+y+y

  • Incolla ciò che è stato copiato o cancellato una volta o n volte dopo la linea corrente:

p o n+p

  • Incolla ciò che è stato copiato o cancellato una volta o n volte prima della linea corrente:

P o n+P

  • Elimina (taglia) dall'inizio della linea alla posizione del cursore:

d+0

  • Elimina (taglia) dalla posizione del cursore alla fine della linea:

d+$

  • Copia dall'inizio della linea alla posizione del cursore:

y+0

  • Copia dalla posizione del cursore alla fine della linea:

y+$

  • Elimina (taglia) il testo dalla linea corrente:

d+L o d+G

  • Copia il testo dalla linea corrente:

y+L o y+G

Annullare un'azione

  • Annulla l'ultima azione:

u

  • Annulla le azioni sulla linea corrente:

U

Annulla la cancellazione

  • Annulla una cancellazione

Ctrl+R

comando EX

La modalità Ex consente di agire sul file (salvataggio, layout, opzioni, ...). È inoltre in modalità Ex, in cui vengono inseriti i comandi di ricerca e sostituzione. I comandi vengono visualizzati in fondo alla pagina e devono essere convalidati con il tasto Enter.

Per passare alla modalità Ex, dalla modalità comando, digitate :.

Numeri di riga del file

  • Mostra/nascondi numerazione:

:set nu o il più lungo :set number

:set nonu o il più lungo :set nonumber

Cerca una stringa

  • Cerca una stringa dalla posizione del cursore:

/string

  • Cerca una stringa prima della posizione del cursore:

?string

  • Vai alla prossima occorrenza trovata:

n

  • Vai alla precedente occorrenza trovata:

N

Esistono dei caratteri jolly per facilitare la ricerca in VI.

  • [] : Cerca una gamma di caratteri o un singolo carattere i cui valori possibili sono specificati.

Esempio:

/[Ww]ord : search word o Word

/[1-9]word : search 1word, 2wordxword dove x è un numero

  • ^ : Cerca una stringa dall'inizio della linea.

Esempio:

/^Word

  • $ : Cerca una stringa fino al termine della linea.

Esempio:

/Word$

  • . : Cerca una parola con una lettera sconosciuta.

Esempio:

/W.rd : search Word, Ward

  • * : Cerca uno o più caratteri, qualunque cosa siano.

Esempio:

/W*d

Nota: Se si desidera ignorare le maiuscole e le minuscole (temporaneamente) durante la corrispondenza delle stringhe, digitare l'opzione :set ic.

Sostituisci una stringa

Dalla prima all'ultima riga del testo, sostituisce la stringa cercata con la stringa specificata:

:1,$ s/search/replace

Nota: Si può anche usare :0,$s/search/replace per specificare l'inizio assoluto del file.

Dalla riga n alla riga m, sostituisce la stringa cercata con la stringa specificata:

:n,m s/search/replace

Per impostazione predefinita, viene sostituita solo la prima occorrenza trovata di ogni riga. Per forzare la sostituzione di ogni occorrenza, è necessario aggiungere /g alla fine del comando:

:n,m s/search/replace/g

Sfoglia un intero file per sostituire la stringa cercata con quella specificata:

:% s/search/replace

Operazioni sui file

  • Cancellare una riga vuota

:g/^$/d

  • Elimina le righe con numeri di riga da n a m

:n,md

  • Elimina la riga in cui si trova la stringa

:g/string/d

  • Elimina una riga che non contiene una stringa

:g!/string/d

  • Cancella tutte le righe che iniziano con #

:g/^#/d

Il carattere g sta per globale.

Operazioni sui file

  • Chiudi l'elaborazione di un file senza salvare:

:w

  • Esci dalla modifica di un file che è stato modificato durante la sessione ma non salvato:

:w file

  • Esci dal file e salva:

:n,m w file

  • Ricarica l'ultima registrazione del file:

e!

  • Incolla il contenuto in un altro file dopo la posizione del cursore:

:r file

  • Chiudi l'elaborazione di un file senza salvare:

:q

  • Esci dalla modifica di un file che è stato modificato durante la sessione ma non salvato:

:q!

  • Esci dal file e salva:

:wq o :x

Altre funzioni

È possibile eseguire VI specificando le opzioni da caricare per la sessione. Per farlo, è necessario utilizzare l'opzione -c:

vi -c "set nu" /home/rockstar/file

È anche possibile inserire i comandi Ex in un file chiamato .exrc nella directory di login dell'utente. I comandi verranno letti e applicati a ogni avvio di VI o VIM.

comando vimtutor

C'è un tutorial per imparare come usare VI. Ed è accessibile con il comando vimtutor.

vimtutor