Comandi di visaulizzazione ed edit file ( VI )

vi [file] Apre il file con vi
vi [+n][file] Apre il file con vi alla riga corrispondente al numero
Se non si specifica il nome del file vi apre una sessione nuova.

  • Navigazione
G                    si posizione sull'ultima riga del file
:1 oppure gg   si posizione all'inizio del file
Ctrl+D Il cursore si sposta di 12 linee in basso
Ctrl+U Il cursore si sposta di 12 linee in alto
j Scende di una riga sulla stessa colonna
k Sale di una riga sulla stessa colonna
l Cursore a destra
h Cursore a sinistra
Ctrl+F Cursore una pagina avanti
Ctrl+B Cursore una pagina indietro
^                     si posizione all'inizio della riga
$                     si posizione alla fine della riga
Shift + v         selezionare una intera riga
 
  • Inserimento dati
i Inserisce testo prima del cursore
a Aggiunge testo dopo il cursore
A Aggiunge testo alla fine della riga
I Aggiunge testo all'inizio della riga
o Aggiunge una riga prima del cursore
O Aggiunge una riga dopo il cursore
ESC Esce dalla modalità di inserimento
BACKSPACE Si sposta indietro di un carattere

  • Salvataggio dei dati
zz Esce da VI scrivendo solo se sono state apportate modifiche al file
:x Come zz
:wq Salva ed esce
:w Salva
:w file Salva una copia nel file file
:q Esce
:q! Forza l'uscita anche se non sono state salvate le modifiche fatte (che vengono perse)


  • Modifica del testo di un file
cw Cancella la parola sotto il cursore ed entra in modalità inserimento.
dw Cancella una parola sotto il cursore.
cc Cancella l'intera riga sotto il cursore ed entra in modalità inserimento.
dd o :d Cancella la riga corrente (sotto il cursore).
:dn Cancella n righe, a partire da quella corrente.
n cc Cancella n righe e si mette in modalità inserimento.

  • Ricerca
/ stringa Ricerca la stringa stringa in avanti
? stringa Ricerca la stringa stringa all'indietro
/ Ripete l'ultima ricerca in avanti
? Ripete l'ultima ricerca all'indietro
n Ripete l'ultima ricerca
t x Si sposta avanti fino al carattere x sulla riga corrente
/ stringa /+n Si sposta all'nesima riga dopo la stringa stringa
Es.:
se volessimo cercare la parola POST all'interno del seguente testo di un file

La rete è infida, un POST che latita in TIMEOUT
e il testo prezioso che hai scritto si può perdere fra REFRESH o BACK incompleti.
Prima di premere sotto, fatti una copia di sicurezza del testo inserito.

dovremmo innanzitutto assicurarci di avere il cursore posizionato all'inizio della prima riga. Digiteremo poi /POST premendo il tasto INVIO.
Il cursore si posizionerà così subito prima della parola POST.
Se volessimo - sempre all'interno dello stesso testo - trovare semplicemente il carattere h della seconda riga, digiteremo t h dopo aver posizionato il cursore all'inizio della seconda riga. Il cursore si sposterà così subito prima del carattere h della parola hai.
N.B. Nel caso del comando t, non verrà visualizzato nulla a fondo pagina come succede invece per la ricerca con /.

  • Ricerca e e sostituzione di tutte le occorrenze di un testo con uno nuovo testo
: % s / <vecchio testo> / <nuovo testo> /g

g è per cambiare tutti i testi trovati  e non solo il primo.
Digitare il tasto"Invio".

  • Copiare e incolla una riga
yy copia la riga corrente
p   incolla il testo nella posizione in cui si trova il cursore


  • Visualizzare le righe di un file
:set number


In vi è possibile editare più file contemporaneamente ed utilizzare i comandi ex per spostarsi da un testo all'altro.
Il comando: vi [file1] [file2] aprirà inizialmente il file1, tramite il comando :n passiamo a editare il file2; se sono state apportate delle modifiche al file che stiamo editando che non sono state salvate, vi non permetterà di passare da un file ad un'altro, a meno di non forzare il comando aggiungendo alla fine un punto esclamativo :n!; ovviamente in questo caso andranno perdute tutte le modifiche effettuate.
E' possibile anche utilizzare il comando  vi * per editare tutti i file di una directory; in questo caso è molto utile i l comando :f che restituisce il nome del file che stiamo editando, oppure il comando :args che restituisce la lista completa dei file aperti mettendo delle parentesi quadre attorno al file [corrente]
E' possibile inoltre passare ad un file che non è stato specificato nella riga di comando tramite la direttiva: :e [nomefile].
"vi associa il carattere # al file precedentemente editato, e il carattere % al file editato correntemente; quindi per tornare all'ultimo file editato è possibile utilizzare il comando: :e#
Qualora si voglia ad esempio salvare il file corrente con lo stesso nome ma con un'estensione .new, si utilizzerà il comando: :w %.new:. Per tornare al primo file editato  si utilizza il comando: :rew .
A volte puo essere utile salvare solo una parte del file che stiamo editando.
:10,20w [nuovoFile] salva il testo compreso tra la riga 10 e la riga 20 su un nuovo file
:.,10w [nuovoFile]  salva il testo compreso tra la prima riga e la riga 10 su un nuovo file
:10,$w [nuovoFile]  salva il testo compreso tra la riga 10 e la file del testo su un nuovo file.
Volendo salvare una parte del file che stiamo editando sul file stesso è possibile utilizzare il comando:
:10,20w! salva il testo compreso tra la riga 10 e la riga 20 sullo stesso file
Da notare che quest'ultimo comando è fuorviante in quanto non viene aggiornato il testo che stiamo editando, anche se a tutti gli effetti è stato cambiato. Per visualizzare la versione attualmente salvata dobbiamo usare il comando :e!.


More: visualizza i file specificati una pagina alla volta.E' comune in tutti gli Unix, ma in molti OS basati su utility GNU viene spesso sostituito o affiancato dall'analogo e più flessibile "less". Con "SPAZIO" si scrolla l'output di una pagina, con "q" si torna alla shell
more [opzioni] [file]
-r Visualizza caratteri speciali e di controllo
+ #numero Inizia a visualizzare dalla riga numero specificato
-num #numero Imposta le dimensioni dello schermo a #numero righe
-p Ripulisce ogni volta le pagine e non le scrolla. E' utile, con terminali che presentano problemi di visualizzazione, per rendere più leggibile l'output.
Una volta eseguito more si entra in modalità visualizzazione, in cui è possibile dare diversi comandi:
SPAZIO Visualizza la schermata di testo successiva
INVIO Visualizza la riga di testo successiva
q Esce da more e torna alla shell
/pattern Cerca il pattern indicato all'interno del testo
n Cerca l'occorrenza successiva dell'ultimo pattern cercato
!comando invoca la shell ed esegue il comando scritto
:n Salta al file successivo (quando si visualizzano più file
:p Salta al file precedente

Tail: visualizza le ultime righe (di default 10) di un file. E' un comando Unix comune. Con l'opzione -f visualizza il file continuamente, senza tornare alla shell: opzione molto utile per tenere sotto controllo dei log.
tail [opzioni] [file]
-f Non esce alla fine del file ma continua a visualizzarlo mentre cresce. Premere CTRL+C per tornare alla shell
- #numero Visualizza le ultime #numero righe del file specificato

Esempi
tail -f /var/log/maillog Visualizza l'ultima parte del file /var/log/maillog, continuando a scorrere il testo mano a mano che nuove righe si aggiungono al log. Questa funzionalità è molto comoda per diagnosticare problemi vari visualizzando in tempo reale file di log o debug.
tail -10 codice.txt Visualizza le ultime 10 righe del file codice.txt presente nella directory corrente.

Post popolari in questo blog

ORA-12154: TNS: il listener non è attualmente a conoscenza del servizio richiesto nel descrittore di connessione

Create e Drop Pluggable Database