Cloud with rain
.:G
G:.
0 and 1 serie, black on white
pulled card
myjsp.feelinglinux.com
ver. 1.1.9-4
Hallo, welcome to my world.
Here you can find some stuff about computer science.
<<< Enjoy your visit! >>>
0 and 1 serie, white on black

Un'operazione comune, editare i file con "vim"

          Scritto: Giansante Gabriele, 2001      Aggiornato: 06/10/2016     

Programmare e configurare applicazioni: il tutto comporta la scrittura di testo, linee di codice, opzioni di configurazione. Riuscire ad editare e' fondamentale.

Esiste un editor molto popolare e fornito con tutte le distribuzioni Linux, cioe' vim (VIM - Vi IMproved, Manpage di VIM (1) ). Fornito con Linux RedHat, Linux Mandrake ed altre, rappresenta l'editor ancora oggi piu' usato sotto Linux, specialmente per lavorare in remoto, grazie alla potenza ed alle scarse risorse occupate. In realta', "vim" e' un'interfaccia all'editor di linea "ed"

Pubblicita'
Si tratta di un editor un po' complicato da usare, soprattutto perche' non molto intuitivo da comprendere. Una volta abituati, pero', non se ne puo' quasi fare a meno.

"vi" ha due modalita' principali di funzionamento: la modalita' di inserimento dei comandi (quella di default) e la modalita' di scrittura o modifica del contenuto. Ne esiste anche una terza, la modalita' visuale, ma verra' esaminata brevemente piu' avanti.
La prima serve ad inserire dei comandi particolari quali il salvataggio di un file, l'annullamento (undo) delle modifiche fatte, la ricerca del testo, il posizionamento ad una linea ben precisa, il matching delle parentesi, ecc.
La modalita' di scrittura o modifica, invece, serve a creare o alterare il contenuto del file scrivendolo direttamente.
In pratica, tutto cio' che viene scritto nella modalita' di comando, viene interpretato come un comando per "vi", mentre quello che viene scritto nell'altra modalita', viene considerato testo.

Supponiamo di aprire il file "qualcosa.conf" con vim: "vim qualcosa.conf".
Appena entrati in vim, ci si trova in modalita' di inserimento dei comandi, con il file visualizzato a partire dalla prima riga.

Cambiamento modalita' di funzionamento

A seconda della modalita' in cui ci si trova e' possibile compiere le azioni descritte nella seguente tabella

Tasto Nuova modalita' Effetto
Modalita' inserimento comandi
i scrittura/inserimento Apparira' la scritta "INSERT" e sara' possibile inserire il proprio testo alla posizione indicata dal cursore, senza sovrascrivere quello eventualmente gia' presente
INS scrittura/inserimento Analogo ad "i"
INS INS
oppure
i INS
scrittura/sostituzione Apparira' la scritta "REPLACE" e sara' possibile inserire il proprio testo alla posizione indicata dal cursore, sovrascrivendo, pero', quello eventualmente gia' presente
o
(lettera)
scrittura/inserimento Verra' aggiunta una linea vuota sotto quella dove e' posizionato il cursore e si entrera' nella modalita' di scrittura/inserimento (vedi tasto "i")
O
(lettera)
scrittura/inserimento Come "o" ma verra' inserita la linea sopra a quella dove e' posizionato il cursore
a scrittura/sostituzione Entra nella modalita' di scrittura/inserimento e si iniziera ad inserire il proprio testo dopo il carattere sul quale e' posizionato il cursore
A scrittura/inserimento Entra nella modalita' di scrittura/inserimento e si iniziera' a scrivere alla fine della riga su cui e' posizionato il cursore
s scrittura/inserimento Entra nella modalita' di scrittura/inserimento e si sostituira' il carattere presente alla posizione del cursore con il testo che verra' digitato
S scrittura/inserimento Entra nella modalita' di scrittura/inserimento e verra' sostituita la riga sulla quale e' posizionato il cursore con il nuovo testo che si sta per digitare
C scrittura/inserimento Entra nella modalita' di scrittura/inserimento e verra' cancellato il testo a partire dalla posizione del cursore fino alla fine della riga
v visuale Apparira' la scritta "VISUALE" e sara' possibile effettuare operazioni come selezione del testo, copia, incolla, eliminazione. Alcuni comandi relativi a questa modalita' verranno descritti piu' avanti
Modalita' di scrittura
ESC comandi Passare alla modalita' di inserimento dei comandi. Non sara' piu' possibile inserire testo digitandolo con la tastiera, fino al successivo ritorno alla modalita' di scrittura


Movimento all'interno del testo

Per spostarsi all'interno del testo, dalla modalita' comandi, premere i tasti (o scrivere letteralmente per i comandi) secondo il seguente schema:

Tasto Comando Effetto
Modalita' inserimento comandi
FRECCIA ALTO
oppure
k
Muove il cursore verso l'alto
FRECCIA BASSO
oppure
j
Muove il cursore verso il basso
FRECCIA DESTRA
oppure
l
Muove il cursore verso destra
FRECCIA SINISTRA
oppure
h
Muove il cursore verso sinistra
INIZIO
oppure
^
Sposta il cursore all'inizio della riga
FINE
oppure
$
Sposta il cursore alla fine della riga
PAG ALTO Sposta il cursore velocemente verso l'alto (una "pagina" alla volta)
PAG BASSO Sposta il cursore velocemente verso il basso (una "pagina" alla volta)
w Sposta il cursore all'inizio della parola successiva
b Sposta il cursore all'inizio della parola precedente
e Sposta il cursore alla fine della parola su cui e' posizionato il cursore
( Sposta il cursore all'inizio della frase precedente. Attenzione, una frase finisce con un punto seguito da uno spazio
) Sposta il cursore alla fine della frase successiva. Attenzione, una frase finisce con un punto seguito da uno spazio
G Sposta il cursore alla fine del documento
:<num> Posiziona il cursore sulle riga numero "<num>" (numero intero). Premere "INVIO" dopo aver scritto il comando
<num>G Come ":<num>"
Modalita' scrittura
FRECCIA ALTO Muove il cursore verso l'alto
FRECCIA BASSO Muove il cursore verso il basso
FRECCIA DESTRA Muove il cursore verso destra
FRECCIA SINISTRA Muove il cursore verso sinistra
INIZIO Sposta il cursore all'inizio della riga
FINE Sposta il cursore alla fine della riga
PAG ALTO Sposta il cursore velocemente verso l'alto (una "pagina" alla volta)
PAG BASSO Sposta il cursore velocemente verso il basso (una "pagina" alla volta)


Funzioni di editing

Cancellare testo, copiarlo, incollarlo, ecc., rappresentano le classiche funzioni di editing.
Dalla modalita' comandi, premere i tasti (o scrivere letteralmente per i comandi) secondo il seguente schema:

Tasto Comando Effetto
Modalita' inserimento comandi
d<num>d Cancella "<num>" (numero intero) righe a partire dalla posizione del cursore
dd Cancella la riga su cui e' posizionato il cursore
CANC
oppure
x
Cancella il carattere alla posizione del cursore
BACKSPACE Sposta il cursore a sinistra di un carattere e cancella il nuovo carattere su cui e' posizionato il cursore stesso ("BACKSPACE" e' il tasto per cancellare, usualmente posto sopra "INVIO")
u Annulla le modifiche in ordine cronologico inverso, cioe' a partire dall'ultima effettuata
CTRL+r Riscrive quanto annullato. Utile, ad esempio, se ci si e' sbagliati ad annullare una modifica con "u"
v Entra nella modalita' visuale. Sara' possibile selezionare del testo, a partire dalla posizione del cursore, muovendosi con i tasti di movimento (frecce, tasti "Pag", ecc.)
Modalita' visuale
ESC
oppure
v
Interrompe la selezione nella modalita' visuale ed esce da tale modalita'
y Copia in un buffer il testo evidenziato
x Taglia il testo evidenziato e lo copia in un buffer
p Incolla alla posizione del cursore il testo tagliato con "x" o copiato con "y"
> Indenta il testo selezionato una volta a destra
< Indenta il testo selezionato una volta a sinistra
<num>> Indenta il testo selezionato "<num>" (numero intero) volte a destra (es. "3>" indenta tre volte)
<num>< Indenta il testo selezionato "<num>" (numero intero) volte a sinistra (es. "3<" indenta tre volte)
Modalita' scrittura
CANC Cancellare il carattere alla posizione del cursore
BACKSPACE Sposta il cursore a sinistra di un carattere e cancella il nuovo carattere su cui e' posizionato il cursore stesso ("BACKSPACE" e' il tasto per cancellare, usualmente posto sopra "INVIO")


Comandi relativi al filesystem

Fanno parte di questi comandi quelli relativi al salvataggio, al caricamento, all'inserimento da un file esterno, ecc.
Per la gestione di piu' file, si usa una buffer list, con un sistema di navigazione da un file all'altro.
Dalla Modalita' di inserimento comandi, scrivere una delle seguenti sequenze di caratteri e premere "INVIO" per ottenere l'effetto indicato:

Comando Effetto
:w Salva il file. Attenzione, che "w" scrive il file anche se non ci sono state modifiche
:w! Come "w", ma forza il salvataggio (o almeno ci prova) anche quando non e' consentito (es. file di sola lettura)
:w <nomeFile> Salva il file con il nome nuovo "<nomeFile>"
:r <nomeFile> Inserisce alla posizione del cursore il contenuto del file "<nomeFile>"
:r !<comando> Inserisce l'output del comando di sistema "<comando>" all'interno del testo, alla posizione del cursore. Esempio: ":r !ps -aux"
:badd <nomeFile> Aggiunge il file "<nomeFile>" alla buffer list
:bnext Passa al file successivo nella buffer list
:bprevious Passa al file precedente nella buffer list
:files Mostra quali file sono presenti nella buffer list, associandoli ad un numero
:b<num> Passa direttamente ad un file particolare fra quelli presenti nella buffer list. L'associazione numero-file puo' essere trovata con ":files". <num> e' il numero del file
:bdelete <num> Elimina il file numero <num> dalla buffer list. L'associazione numero-file puo' essere trovata con ":files"
:x Salva il file ed esce dall'editor
:q Esce dall'editor
:q! Forza l'uscita dall'editor. Attenzione, eventuali modifiche non salvate potrebbero essere perse. A differenza di "q", non viene chiesto di salvare eventuali modifiche non salvate in precedenza


Altre funzioni o comandi

Dalla modalita' comandi, premere i tasti secondo il seguente schema:

Tasto Effetto
CTRL+g Mostra statistiche sulla posizione del cursore (numero di linea, numero di colonna, percentuale del testo a cui si trova, nome del file, altro)
/
oppure
?
Seguito da un'espressione regolare, effettua la ricerca della prima occorrenza di testo che soddisfa l'espressione inserita. Esempio: "/192\.168\.0\.1" effettua la ricerca della prima occorrenza di "192.168.0.1". Non e' scopo di questo articolo mostrare come scrivere espressioni regolari
n Cercare l'occorrenza successiva a quella gia' trovata con "/"
N Cercare l'occorrenza precedente a quella gia' trovata con "/"
£
oppure
*
Cerca l'occorrenza successiva della parola su cui e' posizionato il cursore
# Cerca l'occorrenza precedente della parola su cui e' posizionato il cursore
%
(per cento)
Effettua il matching delle parentesi, ovvero trova dov'e' l'apertura (o la chiusura) della parentesi sulla quale e' posizionato il cursore. Funziona con parentesi tonde, quadre e graffe


Filtrare testo attraverso comandi esterni

Un'ultima potenzialita' che mi piacerebbe esporre, riguarda la possibilita' di filtrare parte del testo attraverso dei comandi esterni.
Dopo aver mostrato la regola generale, seguira' un esempio particolare e molto utile.
  1. Selezionare con "v" il testo da filtrare (vedi "Funzioni di editing")
  2. Appena selezionato il testo, premere "!"
  3. Scrivere il comando a cui inviare il testo selezionato
Il testo selezionato con "v" sara' sostituito con il risultato dell'elaborazione del comando indicato.

Ad esempio, supponiamo di avere un elenco disordinato di nomi,
    Giovanni
    Aldo
    Mario
    Elena
    Valeria
    Alessandra
e di volerlo ordinare alfabeticamente. Tutto cio' puo' essere fatto con l'ausilio del comando esterno "sort".
Seguendo la procedura indicata, scrivendo "!sort" dopo aver selezionato l'elenco (cioe' dalla modalita' visuale), si otterra' il seguente risultato
    Aldo
    Alessandra
    Elena
    Giovanni
    Mario
    Valeria


Conclusione

I comandi messi a disposizione da "vim" sono tantissimi e non si esauriscono con quei pochi mostrati. Ho cercato di illustrare i comandi principali, ovvero quelli che consentono di lavorare da subito in modo decente.
Per ottenere un aiuto completo, digitare ":help" dalla modalita' di inserimento comandi e premere [INVIO]. Si aprira' una finestra con le istruzioni per chiuderla e per visualizzare i vari argomenti.

Notare, che non tutti i comandi potrebbero essere attivi o supportati in tutte le versioni di vim (o del piu' semplice "vi").


Hai trovato utile questo articolo?
Aiutami a condividerlo o metti un "mi piace".
Grazie mille!


Gli strumenti di condivisione (Google+, Facebook) sono visibili in alto a destra solo dopo aver accettato la policy di utilizzo dei cookie per questo sito.
FAQ - Come faccio a cambiare la mia scelta?

 

Strumenti (myjsp.feelinglinux.com)
Gioco: allenamento con la tastiera Strumenti di codifica/decodifica URI (%-encoding) e Base64 Strumenti di calcolo online per IP e Reti
QUIZ GAME
Quiz game

Cerca @myjsp.feelinglinux.com

Pubblicita'