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 molto popolare sotto 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, eliminare, modificare il testo;
  • Copiare parole, linee 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 menzionata dal percorso, viene letta da VI che viene aperto in modalita comandi.

Se il file non esiste, VI apre un file vuoto e una pagina vuota viene visualizzata 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 una pagina vuota viene visualizzata 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 l'evidenziazione della sintassi, che è molto utile per la modifica di script di shell o file di configurazione.

Durante una sessione, VI utilizza un file buffer in cui registra tutte le modifiche apportate dall'utente.

Nota

Finché l'utente non ha salvato il suo lavoro, il file originale non viene modificato.

All'avvio, VI è in modalità comando.

Suggerimento

Una riga di testo è terminata premendo INVIO ma se lo schermo non è abbastanza largo, VI rende le interruzioni di linea automatiche, configurazione wrap per impostazione predefinita. Queste interruzioni di linea potrebbero non essere desiderate, questa è la configurazione nowrap.

Per uscire da VI, dalla modalità Comando, premi : quindi digita:

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

Per forzare l'uscita senza conferma, devi aggiungere ! ai precedenti comandi.

Per forzare l'uscita senza conferma, devi aggiungere ! ai precedenti comandi.

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:

, n, h o nh

  • Sposta uno o n caratteri a destra:

, n, l o nl

  • Sposta uno o n caratteri su:

, n, k o nk

  • Sposta uno o n caratteri giù:

, n, j o nj

  • 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 è nel mezzo di una parola w muove alla parola successiva, b si posiziona all'inizio della parola.

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

  • Muoversi di una o n parole a destra:

w o nw

  • Muoversi di una o n parole a sinistra:

b o nb

Da qualsiasi posizione su una linea

  • Passa all'ultima riga di testo:

G

  • Passa alla linea n:

nG

  • Passa alla prima riga dello schermo:

H

  • Passa alla linea centrale dello schermo:

M

  • Passa all'ultima riga dello schermo:

L

Inserimento del testo

In modalità comando, ci sono diversi modi per inserire il testo.

VI passa alla modalità inserimento dopo l'inserimento di una di queste chiavi.

Nota

VI passa alla modalità inserzione. Quindi dovrai 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 consente la modifica del testo mediante la gestione di:

  • caratteri,
  • parole,
  • linee.

In ogni caso è possibile :

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

Queste operazioni sono fatte in modalità comando.

Caratteri

  • Elimina uno o n caratteri:

x o nx

  • Sostituisce un carattere con un altro:

rcharacter

  • Sostituisce più di un carattere con altri:

RcharactersESC

Nota

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

Parole

  • Cancella (taglia) una o n parole:

dw o ndw

  • Copia una o n parole:

yw o nyw

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

p o np

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

P o nP

  • Sostituisci una parola:

cwwordESC

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:

dd o ndd

  • Copia una o n linee:

p o np

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

P o nP

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

P o nP

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

d0

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

d$

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

y0

  • Copia dalla posizione del cursore alla fine della linea:

y$

  • Elimina (taglia) il testo dalla linea corrente:

dL o dG

  • Copia il testo dalla linea corrente:

yL o yG

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 ti consente di agire sul file (salvataggio, disposizione, opzioni, ...). È dentro la modalità Ex che vengono inseriti i comandi di ricerca e sostituzione. I comandi vengono visualizzati nella parte inferiore della pagina e devono essere convalidati con il tasto ENTER.

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

Numeri di riga del file

  • Mostra/nascondi numerazione:

:set nu e il più lungo :set number

:set nonu e 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

Ci sono 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 : ricerca word o Word

/[1-9]word : ricerca 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 : ricerca Word, Ward

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

Esempio:

/W*d

Nota: se si desidera ignorare le maiuscole e le minuscole (temporanee) durante la corrispondenza delle stringhe, digitare :set ic.

Sostituisci una stringa

Dalla prima all'ultima riga del testo, sostituisci 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 linea n alla linea m, sostituisci la stringa cercata con la stringa specificata:

:n,m s/search/replace

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

:n,m s/search/replace/g

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

:w

Operazioni sui file

  • Cancellare una riga vuota

:w file

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

:n,m w file

  • Elimina la riga in cui si trova la stringa

:g/string/d

  • Elimina una riga che non contiene una stringa

:r file

  • Cancella tutte le righe che iniziano con #

:q

Il g qui 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 fare questo, devi usare l'opzione -c:

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

È anche possibile inserire il comando Ex in un file chiamato .exrc inserito nella directory di accesso dell'utente. Ad ogni avvio di VI o VIM, i comandi saranno letti e applicati.

comando vimtutor

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

vimtutor