Per spostarsi all'interno dei file si possono usare i tasti w, e e b. VIM è in grado di riconoscere i vari componenti delle espressioni C.
Considerate il seguente codice C
Considerate che il cursore sia posizionato all'inizio dell'espressione if. Premendo "w" una volta, il cursore salterà al primo (. Premendo ancora w il cursore si sposterà su NULL, quindi su ==. Le pressioni seguenti del tasto vi porteranno a x... )... &&... y... >... z... e alla fine )...
e è simile a w, solo che vi porta alla fine della parola corrente e non all'inizio della seguente.
b fa esattamente l'opposto di w: sposta il cursore nella direzione opposta, dunque potete muovervi all'indietro usando il tasto b.
I tasti { e } vengono usati per spostarsi da un paragrafo ad un altro. Quando scrivete file C, questi tasti hanno un significato leggermente differente: un paragrafo rappresenta un gruppo di righe separate da una riga vuota.
Ad esempio
Il ritaglio qua sopra rappresenta due paragrafi. E' possibile muoversi dall'inizio di uno all'altro, usando i tasti { e }. { porterà il cursore al paragrafo superiore e } lo sposterà a quello inferiore.
Molte persone usano uno stile di creazione del codice per il quale un insieme logico di espressioni viene raggruppato insieme e separato da una o più righe vuote.
Ad esempio
I tasti { e } sono molto utili in queste situazioni. E' possibile muoversi da un "paragrafo" all'altro.
Un altro gruppo di tasti utili sono [[ e ]], che vi permettono di saltare alla precedente { o alla seguente { nella prima colonna.
Ad esempio
Diciamo che state lavorando su foo() e ora volete modificare bar(). Semplicemente digitate ]] ed il cursore vi porterà alla { di apertura della funzione bar(). L'inverso è leggermente differente. Se siete nel mezzo di bar() e digitate [[, il cursore si sposterà alla prima { precedente, cioè all'inizio di bar() stessa. Per spostarsi all'inizio di foo() serve ancora [[. Il numero di pressioni dei tasti può essere minimizzato digitando 2[[per portare il cursore all'inizio della funzione precedente.
Altri insiemi di tasti simili sono ][ e []: ][ porta il cursore alla successiva } nella prima colonna. Se state modificando foo() e volete andare alla fine di foo() allora ][ vi porterà lì. In maniera simile se state modificando bar() e volete andare alla fine di foo() allora [] porterà lì il cursore.
Il modo per ricordarsi tutte le combinazioni è spezzarle. Il primo tasto indica se il cursore deve muoversi su o giù: [ andrà su e ] andrà giù. Il seguente indica il tipo di parentesi da cercare. Se è lo stesso tasto allora il cursore si muoverà alla {. Se il tasto è differente allora il cursore andrà a }.
Una cosa a cui fare attenzione per i tasti ]], ][, [[ e [], è che essi cercano le parentesi sulla prima colonna; se si vogliono ricercare tutte le parentesi sopra o sotto indipendentemente dal fatto che siano o no nella prima colonna non lo si può fare. La documentazione di VIM riporta un metodo per aggirare tutto questo: bisogna associare la pressione dei tasti alle parentesi. Per non farvi sprecare troppo tempo nella ricerca dell'associazione, quelle suggerite sono
:map [[ ?{<CTRL-VCTRL-M>w99[{
:map ][ /}<CTRL-VCTRL-M>b99]}
:map ]] j0[[%/{<CTRL-VCTRL-M>
:map [] k$][%?}<CTRL-VCTRL-M>
Il tasto % cerca un corrispondente all'oggetto sotto il cursore. L'oggetto sotto il cursore può essere una parentesi tonda, una graffa o una quadra. Premendo il tasto % il cursore salterà al corrispondente.
Tra le altre cose, il tasto % può essere anche per accoppiare #if, #ifdef, #else #elif e #endif.
Questo tasto è molto utile nel controllo del codice che è stato scritto. Ad esempio
Controllare il codice qua sopra implica il controllo della correttezza delle parentesi. Il % può essere usato per saltare da una ( alla sua corrispondente ) e viceversa; inoltre, potete scoprire quale parentesi aperta corrisponde a un'altra chiusa ed usare l'informazione per controllare il codice.
In maniera simile il % può essere usato per saltare da una { alla sua } corrispondente.