Comandi di vi

Allo scopo di imparare i comandi 'vi', occorre provarli.

Si consiglia di produrre un file su cui esercitarsi, p.es. come segue:

man bash > bash1.txt
vi bash1.txt

Comandi di inserimento

  • a - dopo il carattere corrente
  • i - prima del carattere corrente
  • A - a fine linea
  • I - a inizio linea, prima del primo carattere significativo
  • o - in una nuova linea sotto
  • O - in una nuova linea sopra

Comandi di movimento semplice

I comandi di movimento sono molto importanti.

Vi Mov

Tramite i comandi di movimento si compiono le operazioni di cut, copy e paste.

Comandi di movimento avanzato

Non sono indispensabili di primo acchito ma:

  • risparmiano il numero di tasti digitati
  • sono ideali per l'inserimento in macro

Vi MovAv

Comandi di salvataggio

Vi salv

I comandi di salvataggio sono per la maggior parte dei comandi ex. Quando si digitano i due punti come comando, sientra in modalità ex:

  • l'ultima linea del video contiene il comando
  • sono possibili comandi anche lunghi terminati da Invio
  • per eventualmente interrompere il comando, battere Esc

Comandi di salvataggio avanzato

Sono derivati dall'editor ex. Quando si preme : in modalità comando, si apre l'ultima linea dello schermo ed è possibile editare un comando esteso.

  • :w file - salva tutto il file corrente con altro nome
  • :1,5w file - salva da riga 1 a 5
  • :1,.w file - salva da riga 1 a riga corrente
  • :.,+5w file - salva da riga corrente fino a 5 righe dopo
  • :.,’aw file - salva da riga corrente a riga marcata con a
  • :r file - inserisci file esterno dopo riga corrente

Operazioni sui file

Vi Ops

Vi non sta editando il file vero, ma una sua copia. In caso di crash di sistema, al boot successivo è di solito possibile recuperare la precedente sessione di editazione del file temporaneo, con vi -r file. I crash in RHEL non avvengono mai, ma è possibile che l'amministratore abbia compiuto uno shutdown veloce.

Il 'save' è in realtà un commit. tutti i cambiamenti effettuati vengono finalizzati nel file vero. Tutti i buffer di undo vengono azzerati.

Il salvare con altro nome è un'operazione diversa da altri editor: dopo tale operazione non abbiamo cambiato il nome del file corrente, ma prodotto uno snapshot sul file indicato. Stiamo ancora lavorando sul file originale.

Grande Warning

Uno dei comandi di salvataggio è ZZ. Si chiama salvataggio condizionale: salva ed esce se il file è cambiato (aggiornando la data di modifica), esce solo se il file non è cambiayo (senza aggiornare la data di modifica).

Attenzione che se viene invece premuto Ctrl-Z, e sono tasti vicini, il programma viene sospeso non terminato.

Esempio, sono stati dati i comandi:

vi zz
Ctrl-Z
vi zz

Compare un grosso messaggio di avvertimento, per esempio:

E325: ATTENTION
Found a swap file by the name ".zz.swp"
          owned by: root   dated: Tue Oct 15 12:07:41 2019
         file name: /tmp/zz
          modified: YES
         user name: root   host name: localhost.localdomain
        process ID: 12217 (still running)
While opening file "zz"

(1) Another program may be editing the same file.  If this is the case,
    be careful not to end up with two different instances of the same
    file when making changes.  Quit, or continue with caution.
(2) An edit session for this file crashed.
    If this is the case, use ":recover" or "vim -r zz"
    to recover the changes (see ":help recovery").
    If you did this already, delete the swap file ".zz.swp"
    to avoid this message.
"zz" [New File]
Press ENTER or type command to continue

Il responso corretto, praticamente sempre, è:

  • premere Ctrl-C per togliere il messaggio
  • digitare :q! per uscire dal vi senza salvare
  • usare il comando jobs per verificare la precedebte sessione sospesa
  • ripristinare in foreground la precedente sessione (cf. ultra, Controllo dei Job)

Solo in caso di shutdown o di crash, dare il comando vi -r nomefile.

results matching ""

    No results matching ""