back to top

Vi: editor da linea di comando per Linux

Vi è un editor di testo da linea di comando standard per sistemi Unix e Unixlike presente praticamente in tutte le distribuzioni di Linux e generalmente installato di default; sono disponibili numerosi cloni dai nomi più diversi come Vim, Vile, Elvis e altri, ma i comandi sono gli stessi per tutti, quindi una volta imparato a padroneggiarne una utilizzare le altre non sarà difficoltoso.

Nonostante non operi da interfaccia grafica, Vi mette a disposizione dell’utilizzatore numerose funzioni di formattazione, ricerca di testo, creazione di macro etc. Per questo è uno strumento molto amato da programmatori e webmasters.

Per avviare Vi è sufficiente utilizzare l’omonimo comando seguito dal nome di un file preesistente o da quello di un nuovo documento che si intende creare:

$ vi nome_file

A questo punto, sarà possibile uscire dalla schermata operativa di Vi attraverso la sequesnza di tasti [Esc]+[:]+[q], se non si sono apportate modifiche al documento aperto questo verrà chiuso, diversamente si riceverà una notifica di avvertimento che potrà essere ignorata o meno.

Vi non permette soltanto di aprire documenti qualsiasi sia la loro posizione all’interno del file system:

$ vi /var/www/html/file.txt

ma consente anche di operare direttamente in una riga del documento da manipolare semplicemente specificandone la posizione:

$ vi +12 /var/www/html/file.txt

Il comando indicato nell’ultimo esempio aprirà il file denominato ‘file.txt’ posizionando il cursore all’altezza della riga indicata nell’istruzione; se il valore numerico indicato dovesse essere superiore a quello presente nel file passato come parametro, allora il cursore si posizionerà sull’ultima riga.

Quante volte si riceve, per esempio da un file PHP, la notifica di un errore verificatosi alla riga numero…? Si pensi quindi quanto possa essere comodo uno strumento come Vi che permetterà di operare sul file direttamente dal server senza doverlo scaricare e poi ri-uploddare e senza utilizzare GUI che sarebbero impegnative in termini di risorse.

2. Modalità di comando ed inserimento in Vi

Vi è un programma che permette di operare in diverse modalità, le due più importanti sono però quella di comando e quella di inserimento.

Nel momento in cui viene lanciato l’editor, l’utilizzatore avrà immediatamente a disposizione la modalità di comando con la quale potrà scorrere i file, spostarsi da una pagina all’altra, salvare, uscire dal file corrente e portarsi su di un altro documento.

Per modificare un file, correggerlo o aggiungere delle nuove righe sarà invece necessario operare in modalità d’inserimento. Nel corso di questo capitolo vedremo come lavorare in entrambe le modalità.

La modalità d’inserimento viene avviata in genere premendo sul pulsante corrispondente alla lettera [i]; se il comando è stato accolto dovrebbe comparire in basso rispetto al documento da modificare la notifica:

--INSERT

Da questo momento in poi ogni digitazione verrà mostrata a video pronta per essere scritta nel documento corrente. Per poi tornare alla modalità di comando basterà premere il tasto [Esc].

Una delle funzioni per la quale viene più spesso utilizzata la modalità di comando è quella della navigazione all’interno di file. A questo scopo, in Vi e nella maggior parte dei suoi cloni è possibile utilizzare i tasti di direzione, ma in alcuni casi sono richiesti (o possono essere utilizzati in alternativa) altri tasti; in genere abbiamo:

  • [h] o [Left] per gli spostamenti a sinistra da un carettere.
  • [j] o [Down] per gli spostamenti in basso da un carettere.
  • [k] o [Up] per gli spostamenti in alto da un carettere.
  • [l] o [Right] per gli spostamenti a destra da un carettere.

Fondamentalemente esiste una distinzione trà i comandi per modalità di comando e quelli per l’inserimento: i primi infatti sono preceduti dai due punti (:) che servono per indicare al software che quello che si stà per digitare è un comando.

In entrambe le modalità sono possibili combinazioni di tasti in modo da poter eseguire più operazioni tramite un’unica istruzione; ad esempio, la combinazione [Esc]+[:]+[q]+[!] ordina a Vi di uscire (ESC) dalla modalità d’inserimento (: = comando) senza salvare le modifiche apportate al file su cui si stava lavorando fino a quel momento (q=quit + !=no).

3. Combinazioni di comandi e ricerche in Vi

Per quanto in genere si sia disabituati ad agire da linea di comando piuttosto che da interfaccia testuale, Vi sorprende l’utilizzatore per l’enorme quantità di operazioni che si possono svolgere semplicemente premendo un tasto e per la semplicità nella logica alla base del suo funzonamento.

Si prenda per esempio il comando di cancellazione utilizzabile attraverso il tasto [d] (delete). La sequenza [d]+[d], impone la cancellazione della riga su cui è posizionato il cursore; se si desiderasse cancellare più righe basterebbe combinare un valore numerico al tasto per la cancellazione, ad esempio: [5]+[d]+[d] vorrà dire che dovrà essere cancellata la riga corrente più le 4 righe successive.

I valori numerici sono generalmente utilizzati per indicare al programma quante righe dovranno essere interessate dall’operazione che si intende svolgere. Per cui, ad esempio, una combinazione di tasti come [j] (oppure [Down]) + [5] indicherà uno spostamento del cursore di 5 righe da quella corrente.

Un altro esempio può essere quello della copia e dell’incollamento del testo; a questo scopo esiste il tasto [y] (yank). In particolare, la combinazione [y]+[y] copia la riga in cui è posizionato il cursore; si potrà aggiungere un valore numerico per copiare più righe. Basterà quindi spostarsi all’altezza della riga al di sotto della quale vogliamo incollare il testo e premere il tasto [p] per terminare l’opera.

Il tasto [p] torna utile anche nelle operazioni di taglia e incolla, infatti, quando utilizziamo il tasto [d] per cancellare una o più righe queste rimangono in memoria (buffer) fino alla successiva cancellazione o all’uscita da programma; quindi spostandosi su un’altra zona del documento sarà possibile incollare tramite [p] il frammento di testo appena tagliato con [d].

Naturalmente sarà possibile effettuare dei copia (o taglia) e incolla non solo all’interno dello stesso documento, ma anche prelevando porzioni di testo da altri file. In questo caso ci viene incontro la combinazione di tasti [:]+[r] a seguito della quale digiteremo il nome del file da cui desideriamo copiare o tagliare; il testo prelevato rimarra in memoria al ritorno nel file di destinazione e potrà essere utilizzato per le operazioni desiderate. Alcune versioni avanzate di Vi e dei suoi cloni permettono anche l’autocompletamento dei percorsi ai file, proprio come nella Shell.

La ricerca di testo all’interno di un documento è un argomento importante, ma per fortuna Vi mette a disposizione alcune opzioni semplici ed efficaci. La ricerca di una parola può essere operata facendo seguire quest’ultima al tasto [/].

Va sottolineato il fatto che Vi cerca ‘tutte’ le occorrenze di una determinata stringa a partire dalla posizione del cursore, quindi se per esempio all’interno della frase ‘Visto come si usa Vi?’ cercassimo la stringa ‘Vi’, la ricerca si fermerebbe all’altezza di ‘ Visto’. Per procedere nella ricerca dovremo premere nuovamente su [/] e Vi si sposterà verso l’occorrenza successiva. Per effettuare ricerche a ritroso dovremo utilizzare [?] invece di [/], da solo se la chiave è stata già specificata oppure succeduto dal testo della chiave in caso contrario.

4. Operazioni sui file con Vi

Quando Vi è avviato può essere necessario aprire un file diverso da quello su cui abbiamo operato; per far questo utilizzaremo il tasto [e] preceduto dai due punti e seguito dal nome del nuovo file da manipolare completo di percorso all’interno del file system (a meno che non si trovi anch’esso nella posizione corrente):

:e /var/www/html/file.txt

Può capitare che mentre si cerca di aprire un nuovo documento il buffer risulti ancora occupato, magari in seguito a modifiche non savate sul file appena manipolato; in questo caso Vi invia una notifica informando l’utilizzatore dello stato del buffer; se non si desidera ricevere notifiche, queste potranno essere evitate con la combinazione di tasti [:]+[e]+[!]. [e]+[!] puo essere utilizzata anche per ignorare le modifiche operate su di un documento e riaprirlo nuovamente.

In alcuni cloni di Vi è addirittura possibile lavorare in modalità multibuffer aprendo diverse finestre ognuna delle quali presenterà il contenuto di un diverso documento. Per constatare se il vostro editor supporta i buffer multipli, sarà sufficiente cercare di aprire un nuovo documento utilizzando un’istruzione simile alla seguente:

:split ~/var/www/html/file2.txt

Una volta operato su di un file, avremo la possibilità di salvarlo, ma per far questo dovremo ‘scrivere’ su di esso le modifiche apportate; ‘scrivere’ un file è una cosa diversa dallo ‘scriverci sopra’, nel secondo caso non stiamo facendo altro che riempire il buffer con gli output delle nostre digitazioni, nel primo stiamo invece modificando ‘fisicamente’ il documento salvando la versione modificata.

E’ possibile salvare le modifiche effettuate nello stesso file su cui si è operato (un pò come nel caso del comando ‘Salva’) o creare una copia modificata (come nel caso di ‘Salva con nome’). Per un salvataggio nello stesso file useremo la combinazione di tasti [Esc]+[:]+[w], aggiungendo [q] se si desidera uscire dal documento e dal programma; nel caso si vogliano salvare le modifiche in una nuova copia, a [w] dovrà seguire il nome del file su cui si desidera operare il salvataggio.

E’ consentito inoltre salvare un documento in sola lettura, per far questo si dovrà utilizzare la combinazione di tasti [w]+[!]; [w]+[q]+[!] permetterà anche la cancellazione del buffer.

E’ bene ricordare che Vi agisce sulla base delle impostazioni del sistema all’interno del quale è installato, ciò vuol dire che non si potranno salvare modifiche su documenti di altri utenti a meno che non si agisca impersonificando il root.

5. I principali comandi di Vi

Per gli utenti alle prime armi, nonostante la semplicità d’uso del software, non sarà facile ricordare da subito tutte le opzioni disponibili in Vi. A questo scopo, terminiamo la nostra breve serie di articoli sull’editor da linea di comando più diffuso in Linux con un pratico elenco dei comandi principali che si utilizzano nelle operazioni più comuni.

Comandi di movimento:

  • [h], [j], [k], [l] portano rispettivamente il cursore a sinistra, in basso, in alto e a destra.
  • [$] porta il cursore alla fine della riga.
  • [^] porta il cursore all’inizio della riga.
  • [G] porta il cursore alla fine del file.
  • [:]+[1] porta il cursore all’inizio del file.
  • [:]+[n] porta il cursore alla riga n.

Comandi di ricerca:

  • [/]+’chiave’ cerca la chiave specificata nel testo procedendo in avanti.
  • [?]+’chiave’ cerca la chiave specificata nel testo procedendo a ritroso.
  • [/] ripete l’ultima ricerca in avanti nel testo.
  • [?] ripete l’ultima ricerca a ritroso nel testo.

Comandi per la manipolazione del testo:

  • [d]+[d] cancella una riga.
  • [n]+[d]+[d] cancella n righe.
  • [r] sostituisce un carattere.
  • [x] cancella un carattere.
  • [n]+[x] cancella n caratteri.
  • [u] annulla l’ultima operazione effettuata.
  • [J] uniscie la riga corrente con le successive.

Comandi per il salvataggio e la chiusura di file o del programma:

  • [:]+[q] consente di uscire.
  • [:]+[q]+[!] consente di uscire senza salvare.
  • [:]+[w]+[q] consente di scrivere, salvare e uscire.
  • [:]+[w] consente di scrivere e salvare senza uscire.
  • [:]+[e]+[!] consente di riaprire il file.
  • [:]+[w]+[nome_file] consente di salvare il buffer su un file.
  • [:]+[e]+[nome_file] consente di aprire un nuovo file.
  • [:]+[r]+[nome_file] consente di copiare un file nel buffer.
  • [:]+[r]+[!]+[l]+[s] consente di copiare l’output del comando ls nel buffer.

Altri contenuti interessanti

Pubblicità
Claudio Garau
Claudio Garau
Web developer, programmatore, Database Administrator, Linux Admin, docente e copywriter specializzato in contenuti sulle tecnologie orientate a Web, mobile, Cybersecurity e Digital Marketing per sviluppatori, PA e imprese.

Leggi anche...

Linux: recuperare una partizione con GNU Parted o Gpart

A volte, nell'uso quotidiano del computer, possono capitare dei...

Differenze tra su e sudo in Linux

su e sudo, vengono considerati a torto due comandi...

Creare una lista dei programmi installati su Ubuntu (per effettuarne il ripristino)

In questo breve post vedremo come visualizzare tutto il...

Come svuotare la memoria Cache in Linux?

La memoria cache è stata creata perché, anche quando...

Installare un’interfaccia grafica su Ubuntu Server

Indipendentemente dalla versione di riferimento, il ramo principale della...

Creiamo un file server con Samba

La finalità di una rete locale di computer (LAN)...
Pubblicità