vi (software)

Da Wikipedia, l'enciclopedia libera.
vi
Vim in Debian sid
Vim in Debian sid
Sviluppatore Bill Joy ed altri
Ultima versione 7.3 (15 agosto 2010)
Sistema operativo Unix-like
Linguaggio C
Genere Editor di testo
Licenza Licenza BSD
(Licenza libera)
Sito web http://www.vim.org/

vi è un editor di testo con interfaccia testuale per BSD ed Unix.

Il nome deriva dalla più breve abbreviazione non ambigua del comando visual in ex (cioè <vi>). Questo comando commuta l'editor di linea ex in modalità visuale. Vi insieme ad Emacs è stato uno dei protagonisti della cosiddetta guerra degli editor.

Storia[modifica | modifica wikitesto]

Il programma venne scritto da Bill Joy nel 1976 per una delle prime versioni di BSD Le prime versioni di vi non davano indicazione della modalità utilizzata, e quindi è comune premere il tasto ESC solo per assicurarsi di essere in modalità comando (vi segnala con un "beep" di esser già in modalità comando, se si tenta di rientrarvi). Le versioni recenti di vi, come danno indicazione del modo corrente nella linea di stato o graficamente. Le versioni grafiche di vi (per esempio gvim) supportano l'utilizzo del mouse e l'accesso ai comandi via menù.

Successivamente è diventato l'editor standard de facto per Unix ed il preferito dagli utenti fino all'arrivo di Emacs dopo il 1984. Ancora nel 2014 vi o uno dei suoi cloni può essere trovato in quasi tutte le versioni di Unix (la Single UNIX Specification indica vi come editor, quindi ogni sistema conforme alla specifica è dotato di vi).

È stato uno dei programmi più largamente usati dagli utenti Unix (secondo un sondaggio del 1991 su Usenet era preferito dalla metà dei votanti).[senza fonte]

Caratteristiche[modifica | modifica wikitesto]

Per questione di comodità, lo stesso programma parte in modalità vi o ex a seconda del nome con cui lo si lancia. "vi" è un'abbreviazione che si pronuncia lettera per lettera come [ vi: ai ] e non come parola [ vai ].
Si avvia più rapidamente di Emacs ed ha bisogno di meno memoria, quindi anche alcuni sostenitori di Emacs lo utilizzano come editor per le e-mail o piccole modifiche. Per i "floppy di emergenza" utilizzati per recuperare un sistema dopo il danneggiamento di un disco, si utilizza vi perché è abbastanza compatto da trovare posto su un floppy disk e permette di affrontare quasi ogni tipo di modifica di testo.

Vi viene comunemente ritenuto piuttosto difficile per un utente nuovo a BSD e Unix perché è un editor modale.

Un editor modale (come ogni altro programma modale) assegna differenti azioni ai tasti a seconda della modalità attiva nel momento in cui vengono premuti. Le principali modalità di modifica in vi sono i modi insert (inserimento) e command (comando). In modalità inserimento, quando si preme un tasto, il carattere corrispondente viene inserito normalmente. Premendo il tasto ESC dalla modalità inserimento si passa alla modalità comando.

Pro e contro dei programmi modali[modifica | modifica wikitesto]

In modalità comando, ad ogni carattere corrisponde un movimento del cursore o una funzione di modifica (per esempio, con "j" il cursore si sposta alla linea successiva, con "k" si sposta alla linea precedente, "x" cancella un carattere e "i" (insert) o "a" (append) ritornano alla modalità inserimento). Questa modalità, dal punto di vista dell'usabilità non regge il confronto con un qualsiasi programma ad interfaccia grafica, ma esistono delle motivazioni di base per cui viene ancora usata. Ai tasti premuti in modo comando, non corrisponde in genere nessun carattere visualizzato, salvo eccezioni quali ":" o "/", ad esempio: questo è probabilmente una delle principali cause di confusione per i nuovi utilizzatori. Alcune pressioni dei tasti possono essere poi parecchio pericolose: premendo la D maiuscola si cancella la riga corrente dal cursore fino alla fine, e se avviene inavvertitamente, può compromettere il lavoro svolto o il file. È quasi impossibile apprendere un programma del genere senza una guida, venire a conoscenza di nuove funzionalità aggiunte, cosa abbastanza comune in un programma a finestra dove basta la lettura dei menù o la visualizzazione di eventuali nuovi tasti sulla barra degli strumenti. Non funzionano combinazioni ormai ritenute quasi universali, come CTRL-z per annullare; nuove funzionalità vengono aggiunte molto raramente.

Esistono tuttavia delle situazioni in cui un programma del genere è necessario, ovvero quando serve modificare file remoti da terminale, cosa che sarebbe molto difficile da fare direttamente. Tale operazione in locale richiederebbe lo scaricamento, la modifica ed il reinvio dei file modificati, oppure la creazione di un'interfaccia che permetta la modifica diretta sul server, comunque più lenta e non conveniente se le modifiche da fare sono minime o da fare di rado (ad esempio il cambio di un'impostazione in un file .ini). L'uso di programmi ad interfaccia grafica ovviamente richiede il mouse, i cui movimenti devono essere inviati continuamente al server. Uno dei vantaggi di avere una modalità comando separata è che più operazioni di modifica possono essere fatte mediante una sola riga della tastiera senza dover premere contemporaneamente i tasti Alt, Ctrl o altri modificatori, cosa che riduce di un fattore almeno doppio il numero di tasti da premere per attivare le funzioni base dell'editor. Inoltre, la modalità separata fa sì che le operazioni di modifica più complesse si possano ottenere giustapponendo più primitive semplici (per esempio, dw per cancellare una parola, c2fa per cambiare il testo dal cursore presente in corrispondenza della seconda "a"). C'è da considerare anche che la doppia modalità consente l'uso del vi praticamente su qualsiasi tipo di terminale, in quanto le sequenze di carattere associato a ciascuno di essi variano (^? al posto di ^H per il backspace, ad esempio), mentre le lettere dell'alfabeto e caratteri come ":" o "/" sono presenti su qualunque tipo di tastiera.

Per gli utilizzatori esperti, questo permette un lavoro molto più veloce, anche perché è possibile utilizzare i comandi di vi con la sola riga principale della tastiera, senza ad esempio dover spostare le mani sui tasti freccia. In molte versioni di vi comunque è possibile utilizzare anch'essi per spostarsi all'interno del testo in qualsiasi modalità, così come anche BACKSPACE o CANC per cancellare testo; tali tasti potrebbero però non funzionare se si utilizza vi da terminali remoti.

Un punto di forza nell'uso di vi è dovuto alla potenza espressiva ed operativa delle funzioni di ricerca e sostituzione basate sull'uso di espressioni regolari, ereditate in gran parte dall'editor ex, ed attivate utilizzando i comandi / e: che ridirigono il cursore sull'ultima linea della finestra per introdurre i dati per la ricerca/sostituzione. Questo consente ad un utente esperto di ottenere con un solo comando operazioni che in editor tradizionali potrebbero richiedere anche centinaia di azioni elementari. Per esempio, un'operazione come quella di trasformare in un testo tutte le parole isolate "if" in "IF" ignorando i caratteri interni ad altre parole si ottiene digitando semplicemente  :g/\<if\>/s//IF/g

Programmi derivati da vi e cloni[modifica | modifica wikitesto]

  • Vim — "Vi IMproved" — è il più noto tra gli eredi di vi, si tratta di un clone aggiornato [1]
  • Su Sourceforge è presente una versione adattata a BSD. Utilizza ed come base di partenza [2]
  • nvi è un'implementazione dell'editor di testi ex/vi distribuito originariamente come parte di Fourth Berkeley Software Distribution (4BSD) [3]
  • bvi "Binary VI" — un editor per file binari basato su vi [4]
  • Elvis è un clone di vi per Unix ed altri sistemi operativi [5]
  • Vigor è l'editor vi con l'aggiunta del Vigor Assistant, un personaggio animato volutamente irritante modellato su Clippy di Microsoft Office [6]
  • VILE o Vi Like Emacs è un insieme di macro per Emacs che permette di usare i comandi di vi [7]

Curiosità[modifica | modifica wikitesto]

vi è presente nella Evans Hall all'Università della California.

Voci correlate[modifica | modifica wikitesto]

Altri progetti[modifica | modifica wikitesto]

Collegamenti esterni[modifica | modifica wikitesto]

Software libero Portale Software libero: accedi alle voci di Wikipedia che trattano di Software libero