Vim on tekstiredaktor, mille andis esmakordselt välja Bram Moolenaar 1991. aastal Amiga arvutitele. "Vim" on esitähtlühend nimest "Vi IMproved"[1], sest Vim loodi laiendatud versioonina vitekstiredaktorist koos lisavõimalustega, mis on mõeldud olema abiks programmide lähtekoodi redigeerimisel.
Samuti nagu vi liides, ei põhine ka Vimi liides menüüdel või ikoonidel, vaid tekstipõhisesse kasutajaliidesesse sisestatud käskudel; selle graafiline liides, gVim, lisab menüüd ja tööriistaribad kõige sagedamini kasutatud käskudele, kuid täielik funktsionaalsus on siiski kättesaadav läbi käsurea.
Tihti edeneb Vimi õppimine alguses aeglaselt, kuid kui põhimõtted on selged, siis kulgeb õpe kiiresti[4]. Et õppimist hõlbustada, sisaldab Vim algajatele mõeldud õpetust. Algelisi ja keerukamaid toiminguid seletab Vim Users' Manual, mida saab lugeda kas läbi Vimi enda või internetist.[5]
Käskude ja võimaluste päringuteks sisaldab Vim abivahendit, millele saab ligi :help käsuga.
Redigeerimine režiimides
Olles vi järeltulija, on Vim režiimne – disainivalik, mis kipub uutes kasutajates segadust põhjustama. Selles mõttes on kõik tekstiredigeerimisprogrammid režiimsed, et need eristavad sisestus- ja käsusisendeid, kuid enamikus saavutatakse see sootuks teistviisi: käsud menüüdes (hiire või klaviatuuriga juhitavad), metaklahvid (samaaegne mitme klahvi kasutamine, tavaliselt koos Control (CTRL)- või Alt (ALT)-klahviga) ning osutusseadme sisend. Vim, sammudes vi radades, on ainulaadne, kuna tervet klaviatuuri lülitatakse nende režiimide vahel. Tänu sellele on võimalik kõiki redigeerimisfunktsioone sooritada kasutamata osutusseadet või menüüsid, ning vähima arvu metaklahvidega. Pimesüsteemis kirjutajatele ja hiire suhtes vastumeelsetele võib see jõudluses ja tõhususes olla suureks eeliseks.
Kohandamine
Osa Vimi võimsusest tuleneb laialdastest kohandamisvõimalustest. Põhiliidest saab juhtida paljude saadaolevate valikute abil, ning kasutaja saab määratleda isikupäraseid klahvijärjendeid – sageli nimetatakse neid makrodeks – ehk lühendeid, mis automatiseerivad klahvivajutuste järjendeid, või isegi kutsuvad esile sisseehitatud või kasutaja poolt määratletud <to /> funktsioone.
Vimscript
On palju laiendusi (pluginaid), mis laiendavad või lisavad Vimi funktsioone. Neid keerukaid skripte kirjutatakse tavaliselt Vimi sisseehitatud skriptimiskeele vimscript abil[6]. Vim toetab skriptimist ka teiste programmeerimiskeeltega, nagu MzScheme, Perl, Python, Ruby, Tcl jt.
Komplektid
On projekte, mis komplekteerivad keerukaid skripte ja kohandusi, mis on mõeldud tegemaks Vimist spetsialiseerinud töövahendi või muutmaks oluliselt selle käitumisviisi. Näitena võib tuua Creami, mis muudab Vimi käitumise klõpsa-ja-kirjuta laadi redaktorprogrammi sarnaseks, või VimOutliner, mis annab UNIXi-laadsete arvutite kasutajatele mugava liigitusprogrammi.
Võimalused ja vi täiendused
Ühilduvusrežiimis on Vim peaaegu täielikult vi'ga ühilduv, kuid Vim sisaldab vi täiendusi, mis võivad, kuid ei pruugi ühilduvusrežiimis saada olla.[7]