Egy fájlt a vi file paranccsal nyithatunk meg szerkesztésre; ha létező fájlról van szó, a vi a fájl elejére áll, ha még nem létezett ilyen fájl, a képernyő alsó sorában egy "New file" vagy "Empty file" szöveg figyelmeztet minket. (Meghívhatjuk a vi-t fájlparaméter nélkül is, ez esetben legkésőbb kilépéskor kell nevet adni neki.)
A megnyitott fájlban a villogó kurzor az első sor elején jelzi, hogy a vi parancsra vár. Ha a képernyőn a fájl vége (is) látható, a képernyő szélén a '~' (tilde) karakterek a már üres sorokat jelzik.
A vi egyik leggyakrabban szidott vonása szófukarsága; még gyakorlott felhasználóknak is rendkívül zavaró tud lenni, hogy nem látják, milyen üzemmódban vannak éppen. Első lépésként ezért gépeljük be az alábbi parancsokat:
:set novice (Nem minden vi-nál működik.) :set showmodeEnnek hatására némileg megoldódik a vi nyelve, a továbbiakban a képernyő jobb alsó sarkában ki fogja írni, hogy milyen beviteli módban vagyunk éppen; ennek hiánya azt jelzi, hogy parancsmódban vagyunk. (Ha elvesztettük a fonalat, s nem tudjuk, épp milyen vi módban vagyunk, nyomjuk meg kétszer egymás után az ESC gombot, ennek hatására garantáltan ,,visszajutunk a kályhához'', azaz parancsmódba. Mivel a legtöbb terminál a parancsmódban érkező ESC karaktert egy fütyüléssel vagy villanással is honorálja, így ha a dupla ESC után fütyült a terminálunk, biztosak lehetünk abban, hogy parancsmódba kerültünk vissza.
Ahogy a kisbaba is először járni tanul meg, elsőként nézzük meg, mely alapvető parancsokkal mozoghatunk egy fájlban. A legfontosabbak a balra-le-föl-jobbra funkcióknak megfelelő parancsok. Ezeket a klaviatúrán rendre az egymás mellett lévő h j k l billentyűvel érhetjük el. (A legtöbb Unix rendszerben és terminálon ma már használhatóak a standard nyíl billentyűk is, ám ezek használata nem mindig javasolt. Ennek az az oka, hogy a kurzormozgató nyíl billentyűket a legtöbb terminál valamilyen ESC karaktert is tartalmazó 2-4 karakteres szekvenciával kódolja (például ESC [ A ). A rendszer leterheltsége esetén könnyen előfordulhat, hogy e karakterszekvenciák feldolgozása időben elhúzódik, a vi egymástól független külön karakterként fogadja őket, s így egy nyílbillentyű lenyomásakor a vi az ESC miatt átlép parancsmódba, majd a kurzormozgató szekvencia többi karakterét vi parancsnak értelmezi.) Ha nagyobb lépésekkel szeretnénk mozogni a fájlban, a b paranccsal az aktuális szó elejére ugorhatunk vissza, w paranccsal pedig a (jobbra) következő szó elejére. A 0 karakterrel az aktuális sor elejére, a $ karakterrel pedig a sor végére ugorhatunk. A H paranccsal a képernyő tetejére, az L paranccsal pedig a képernyő utolsó sorára ugorhatunk. A fájl tetszőleges sorára az nG paranccsal pozicionálhatunk, így 1G a fájl legelső sorába visz minket. Paraméter nélkül megadva G az utolsó sorba röpít.
[...]
Ha írni szeretnénk a fájl egy tetszőleges helyére, álljunk a kurzorral a kívánt helyre, majd adjuk ki az i (insert) parancsot. Ennek hatására azonnal beviteli módba kerülünk, s mint már mondtuk, az ESC karakter leütéséig minden, amit gépelünk, bekerül a fájlba. Az i parancs az elé a karakter elé szúr be, ahol a kurzor áll, az a karakter hatására pedig a kurzor után szúródik be szövegünk. Ha szöveg bevitele közben szeretnénk javítani, a BACKSPACE karakterrel törölhetünk egy karaktert.
Speciális (például vezérlőkarakterek) beviteléhez előbb a CTRL-V billentyűt nyomjuk le, az ezután megadott karaktert a vi nem értelmezi, hanem beírja a fájlba. Például ha egy ESC karaktert szeretnénk beírni, a CTRL-V ESC karakterszekvenciát kell megadni; a vi a vezérlőkaraktereket a c formátumban jeleníti meg a képernyőn (az ESC például [ ), az ékezetes karakterek megjelenítése implementáció és beállításfüggő.
A szövegbevitel után előbb-utóbb törölni is kényszerülünk...Ha néhány karaktert szeretnénk csak törölni, a kurzorral álljunk rá az első törlendőre, s adjuk ki az x parancsot; ennek hatására egy karakter törlődik. Ha többet szeretnénk, adjuk meg az x előtt a darabszámot; így például 5x öt karaktert fog törölni, a kurzor feletti karaktert, s négy tőle jobbra lévőt. (Vigyázzunk, ha eközben a sor végére értünk, a maradék karaktereket balra haladva fogja törölni a vi, mintha a PC-s DEL funkcióból hirtelen BACKSPACE funkcióra váltana.)
Ha egész sort szeretnénk törölni, a dd paranccsal az aktuális sort törölhetjük.
Ha valamit elrontottunk, és rögtön észrevesszük a hibát, az u (undo) paranccsal vissza lehet állítani a legutolsó szövegmódosítás előtti állapotot. Ha végeztünk munkánkkal, a :w paranccsal tudjuk a módosított fájlt elmenteni, azaz visszaírni a vi pufferének tartalmát a merevlemezre. Kilépni a :q paranccsal léphetünk. Ha egy fájlt módosítottunk, és mentés nélkül akarunk kilépni, a vi nem hagyja: vagy el kell mentenünk a fájlt a :w paranccsal, vagy pedig a :q! paranccsal kell kilépnünk.