L'editor "vi" viene invocato con il seguente comando: vi [-r] [+comando] [file1 [file2 ... filen]] dove: -r è un'opzione da introdurre dopo un crash del sistema (per recuperare i cambiamenti eventuali non memorizzati nella sessione interrotta); +comando apre la sessione dell'editor eseguendo il "comando" (sono contemplati solo i comandi di editor di linea). Quando vengono specificati più nomi di file da editare, 'vi' inizia l'editing sul primo file suggerito, e su richiesta (comando ':n') passerà seguendo l'ordine ai successivi. L'editor vi visualizza una schermata di file alla volta, permettendo lo spostamento del cursore con appositi comandi al punto dove si vuole inserire o aggiornare il testo. Per un funzionamento ottimale è necessario conoscere l'esatto tipo di terminale a disposizione. Verrà quindi settata la variabile TERM con la sintassi propria del sistema su cui si lavora; per default, la sintassi standard è: TERM=type ; export TERM
dove "type" corrisponde ad un nome di terminale (con tutte le funzionalità ad esso legate) descritto nella libreria "terminfo". Nella prima schermata di "vi", compariranno le prime 24 righe del file richiamato (con "~" come primo carattere sulle righe vuote), e ci si troverà in COMMAND MODE. Quest'ultimo è uno dei tre possibili stati dell'editor "vi". 1)COMMAND MODE Il cursore è posizionato sul testo, la tastiera è utilizzabile solo per richiedere l'esecuzione di comandi, e non per introdurre testo. I caratteri digitati non vengono visualizzati. 2)INPUT MODE Tutti i caratteri digitati vengono visualizzati ed inseriti nel testo. Si passa in input mode ad ogni richiesta di inserimento di testo. 3)DIRECTIVE MODE Ci si trova (tramite ":") posizionati con il cursore nella linea direttive (l'ultima linea del video) e si possono richiedere a "vi" tutti i comandi per il controllo del file. I passaggi di stato avvengono con i seguenti caratteri:1) DIRECTIVE MODE -----> COMMAND MODE <RET>
2) COMMAND MODE -----> INPUT MODE oOiIaA - o apre una nuova linea al di sotto della linea corrente e permette l'inserimento del testo; - O apre una nuova linea al di sopra della linea corrente e permette l'inserimento del testo; - i inserice testo prima del cursore; - I inserice testo prima dell'inizio della linea corrente; - a aggiunge testo dopo il cursore; - A aggiunge testo dopo la fine della linea corrente;
3) INPUT MODE -----> COMMAND MODE <ESC>
4) COMMAND MODE -----> DIRECTIVE MODE :/?
E' inoltre possibile lanciare comandi appartenenti alla shell da cui è stato richiamato il "vi" stesso, tramite l'apposito escape alla shell (questo comando verrà trattato meglio più avanti): :!comando Per eliminare del testo, 'vi' ha un singolo buffer senza nome, nel quale viene salvata l'ultima porzione di testo cancellata, nove buffer numerati (1 2 ... 9) ed un insieme di buffer individuati dalle lettere dell'alfabeto (a b ... z) a disposizione dell'utente. I buffer, in caso di editing di più file in successione, non vengono cancellati nel passare da un file all'altro, permettendo così spostamenti di parte di testo tra file diversi. Naturalmente possono anche essere utilizzati per cancellazioni e ripristini o per spostamenti di parti di testo all'interno di uno stesso file.