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.

Pubblicitร 

Iniziare a lavorare con Vi

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.

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).

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.

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.

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ร 

Potrebbero interessarti queste guide

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

Quando si parla di Linux, uno degli aspetti fondamentali...

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

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

Criptare (e decriptare) file su Linux con OpenSSL

OpenSSL è un'implementazione rilasciata sotto licenza Open Source dei...

Come svuotare la memoria Cache in Linux?

La memoria cache รจ un componente fondamentale nei sistemi...

Installare un’interfaccia grafica su Ubuntu Server

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