Globalne naredbe

  • :h[elp] naredba - otvori pomoć za naredbu
  • :sav[eas] datoteka - snimi datoteku kao
  • :clo[se] - zatvori trenutno aktivni prozor
  • :ter[minal] - otvori terminal u prozoru
  • K - otvori 'man' stranicu za riječ ispod kursora
Tip Pokrenite vimtutor u terminalu kako bi naučili osnove korištenja Vim-a.

Pomicanje kursora

  • h - pomakni kursor lijevo
  • j - pomakni kursor dolje
  • k - pomakni kursor gore
  • l - pomakni kursor desno
  • gj - move cursor down (multi-line text)
  • gk - move cursor up (multi-line text)
  • H - pomakni kursor na vrh zaslona
  • M - pomakni kursor na sredinu zaslona
  • L - pomakni kursor na dno zaslona
  • w - idi na početak sljedeće riječi
  • W - idi na početak sljedeće riječi (riječ može sadržavati znakove interpunkcije)
  • e - idi na kraj riječi
  • E - idi na kraj riječi (riječ može sadržavati znakove interpunkcije)
  • b - idi na početak riječi
  • B - idi na početak riječi (riječ može sadržavati znakove interpunkcije)
  • ge - idi na kraj predhodne riječi
  • gE - idi na kraj predhodne riječi (riječ može sadržavati znakove interpunkcije)
  • % - idi na sljedeći podudarni znak (podržani zadani parovi: '()', '{}', '[]' - za više informacija koristi Vim naredbu :h matchpairs)
  • 0 - idi na početak linije
  • ^ - idi na prvi neprazni znak u redu
  • $ - idi na kraj linije
  • g_ - idi na zadnji neprazni znak u redu
  • gg - idi na prvi red dokumenta
  • G - idi na zadnji red dokumenta
  • 5gg or 5G - idi na 5. red
  • gd - idi na lokalnu deklaraciju varijable (programski jezici)
  • gD - idi na globalnu deklaraciju varijable (programski jezici)
  • fx - idi na sljedeće pojavljivanje znaka x
  • tx - idi ispred sljedećeg pojavljivanja znaka x
  • Fx - idi na predhodno pojavljivanje znaka x
  • Tx - idi iza predhodnog pojavljivanja znaka x
  • ; - ponovi predhodno f, t, F ili T pomicanje
  • , - ponovi predhodno f, t, F ili T pomicanje, u suprotnom smjeru
  • } - idi na sljedeći odjeljak (ili funkciju/blok, kod uređivanja programskog koda)
  • { - idi na predhodni odjeljak (ili funkciju/blok, kod uređivanja programskog koda)
  • zz - postavi kursor na sredinu zaslona
  • Ctrl + e - pomakni zaslon jednu liniju prema dolje (bez pomicanja kursora)
  • Ctrl + y - pomakni zaslon jednu liniju prema gore (bez pomicanja kursora)
  • Ctrl + b - pomakni nazad jedan zaslon
  • Ctrl + f - pomakni naprijed jedan zaslon
  • Ctrl + d - pomakni naprijed pola zaslona
  • Ctrl + u - pomakni nazad pola zaslona
Tip Prije naredbe za pomicanje kursora upiši broj ponavljanja. Npr. 4j pomiče kursor četiri linje prema dolje.

Uređivanje teksta (insert mode)

  • i - umetni ispred kursora
  • I - umetni na početak reda
  • a - umetni iza kursora
  • A - umetni na kraj reda
  • o - dodaj (započni) novi red ispod kursora
  • O - dodaj (započni) novu red iznad kursora
  • ea - umetni (dodaj) na kraj riječi
  • Ctrl + h - obriši znak ispred kursora tijekom uređivanja
  • Ctrl + w - obriši riječ ispred kursora tijekom uređivanja
  • Ctrl + j - idi u novi red tijekom uređivanja
  • Ctrl + t - povećaj uvlaku (pomakni udesno) red za zadanu širinu tijekom uređivanja
  • Ctrl + d - smanji uvlaku (pomakni ulijevo) red za zadanu širinu tijekom uređivanja
  • Ctrl + n - umetni (automatsko dovršavanje) sljedeće podudarne riječi ispred kursora tijekom uređivanja
  • Ctrl + p - umetni (automatsko dovršavanje) predhodne podudarne riječi ispred kursora tijekom uređivanja
  • Ctrl + rx - umetni sadržaj registra x
  • Ctrl + ox - Privremeno koristi normalni mod za izvršavanje jedne naredbe x.
  • Esc - izađi iz uređivanja teksta

Uređivanje

  • r - promijeni jedan znak
  • R - promijeni više od jednog znaka, za kraj promjene koristi ESC
  • J - spoji red ispod s trenutnim redom koristeći jedan prazni znak između (razdjelnik)
  • gJ - spoji red ispod s trenutnim redom bez dodavanja razdjelnika
  • gwip - preoblikuj odjeljak
  • g~ - zamijeni velika i mala slova koristeći pomicanje kursora
  • gu - promijeni u mala slova koristeći pomicinje kursora
  • gU - promijeni u velika slova koristeći pomicinje kursora
  • cc - promijeni cijeli red
  • c$ or C - promijeni sve do kraja reda
  • ciw - promijeni cijelu riječ
  • cw or ce - promijeni do kraja riječi
  • s - izbriši znak i zamijeni s drugim tekstom
  • S - izbriši red i zamijeni s drugim tekstom (isto kao cc)
  • xp - zamijeni poredak dva znaka (izbriši i zalijepi)
  • u - poništi (undo)
  • U - poništi sve promjene u zadnje izmjenjenom redu
  • Ctrl + r - ponovi (redo)
  • . - ponovi zadnju naredbu

Označavanje teksta (visual mode)

  • v - započni označavanje teksta, označi tekst, zatim izvrši naredbu (npr. y - kopira označeni tekst)
  • V - započni označavanje cijelih redova
  • o - pomakni kursor na suprotni kraj označenog bloka
  • Ctrl + v - započni označavanje bloka
  • O - pomakni kursor na drugu stranu označenog bloka
  • aw - označi riječ
  • ab - označi blok sa ()
  • aB - označi blok sa {}
  • at - označi blok sa <> tag-ovima
  • ib - označi blok unutar ()
  • iB - označi blok unutar {}
  • it - označi blok unutar <> tag-ova
  • Esc - izađi iz označavanja teksta
Tip Umjesto b ili B možemo koristiti ( odnosno {.

Naredbe tijekom označavanja teksta

  • > - pomakni označeni tekst udesno
  • < - pomakni označeni tekst ulijevo
  • y - kopiraj označeni tekst
  • d - obriši označeni tekst
  • ~ - zamijeni mala i velika slova
  • u - promijeni označeni tekst u mala slova
  • U - promijeni označeni tekst u velika slova

Registri

  • :reg[isters] - prikazi sadržaj registara
  • "xy - kopiraj u registar x
  • "xp - zalijepi sadržaj registra x
  • "+y - kopiraj u registar međuspremnika sustava (clipboard)
  • "+p - zalijepi iz registra međuspremnika sustava (clipboard)
Tip Sadržaj registara je spremljen u ~/.viminfo i biti će učitan prilikom sljedećeg pokretanja Vim-a.
Tip Posebni registri:

0 - zadnje kopirani tekst
" - neoznačeni (bezimeni) registar, posljednje brisanje ili kopiranje
% - naziv trenutne datoteke
# - alternativni naziv datoteke
* - sadržaj međuspremnika (clipboard) (X11 primarno)
+ - sadržaj međuspremnika (X11 clipboard)
/ - zadnje upotrebljeni izraz (pattern)
: - zadnja naredba
. - zadnje zalijepljeni tekst
- - zadnji manji (manje od jedne linije) obrisani tekst
= - 'izraz' registar
_ - 'crna rupa' registar

Oznake i položaji

  • :marks - lista oznaka
  • ma - označi trenutni položaj oznakom A
  • `a - idi na položaj oznake A
  • y`a - kopiraj sav tekst do položaja oznake A
  • `0 - idi na položaj neposredno prije zatvaranja Vim-a
  • `" - idi na položaj zadnjeg uređivanja datoteke
  • `. - idi na položaj zadnje promjene datoteke
  • `` - idi na položaj prije zadnjeg pomaka
  • :ju[mps] - lista pomaka
  • Ctrl + i - idi na sljedeći (skorašnji) položaj u listi pomicanja
  • Ctrl + o - idi na predhodni (stariji) položaj u listi pomicanja
  • :changes - lista izmjena
  • g, - idi na položaj sljedeće (skorašnje) promjene
  • g; - idi na položaj predhodne (starije) promjene
  • Ctrl + ] - idi na tag ispod kursora
Tip Za pomicanje na oznaku može se koristiti (`) ili jednostruki apostrof ('). Ukoliko se koristi jednostruki apostrof kursor se pomiče na prvi neprazni znak u redu koji sadrži oznaku.

Makro naredbe

  • qa - snimi makro a
  • q - zaustavi snimanje makro-a
  • @a - pokreni makro a
  • @@ - ponovo pokreni zadnji makro

Izreži i zaljepi

  • yy - kopiraj cijeli red
  • 2yy - kopiraj 2 reda
  • yw - kopiraj znakove u riječi od trenutog položaja kursora do početka sljedeće riječi
  • yiw - kopiraj cijelu riječ ispod kursora
  • yaw - kopiraj riječ ispod kursora i razmak prije ili poslije riječi
  • y$ or Y - kopiraj sve do kraja reda
  • p - zalijepi sadržaj trenutnog registra iza kursora
  • P - zalijepi ispred kursora
  • gp - zalijepi sadržaj trenutnog registra iza kursora i postavi kursor iza novog teksta
  • gP - zalijepi ispred kursora i postavi kursor iza novog teksta
  • dd - izbriši čitavi red
  • 2dd - izbriši 2 reda
  • dw - izbriši znakove u riječi od položaja kursora do početka sljedeće riječi
  • diw - izbriši cijelu riječ ispod kursora
  • daw - izbriši riječ ispod kursora i razmak prije ili poslije riječi
  • d$ or D - izbriši sve do kraja reda
  • x - izbriši znak ispod kursora

Uvlačenje teksta

  • >> - povećaj uvlaku reda (pomakni udesno) za zadanu širinu
  • << - smanji uvlaku reda (pomakni ulijevo) za zadanu širinu
  • >% - uvuci blok zadan sa () ili {} (kursor na zagradi)
  • >ib - uvuci unutrašnjost bloka zadanog sa ()
  • >at - uvuci blok zadan sa <> tag-ovima
  • 3== - ponovi uvlaku 3 reda
  • =% - ponovi uvlaku bloka zadanog sa () ili {} (kursor na zagradi)
  • =iB - ponovi uvlaku unutrašnjosti bloka zadanog sa {}
  • gg=G - ponovo uvuci čitavi međuspremnik
  • ]p - zalijepi i prilagodi uvlaku u trenutnom redu

Zatvaranje

  • :w - spremi izmjene, ali nemoj zatvoriti datoteku
  • :w !sudo tee % - spremi izmjene u datoteci koristeći sudo
  • :wq or :x or ZZ - spremi i zatvori
  • :q - zatvori (neuspješno ukoliko ima nespremljenih izmjena)
  • :q! or ZQ - zatvori i nemoj spremiti izmjene
  • :wqa - spremi i zatvori za sve otvorene datoteke

Traži i zamijeni

  • /pattern - traži izraz
  • ?pattern - traži izraz unazad
  • \vpattern - 'very magic' izraz: znakovi koji nisu alfanumerički se tretiraju kao posebi znakovi regularnog izraza (nije potreban 'escaping')
  • n - ponovi pretragu u istom smjeru
  • N - ponovi pretragu u suprotnom smjeru
  • :%s/old/new/g - zamijeni svaku pojavu starog izraza s novim izrazom
  • :%s/old/new/gc - zamijeni svaku pojavu starog izraza s novim izrazom, ali zahtjevaj potvrdu
  • :noh[lsearch] - makni prikaz istaknutog pronađenog teksta nakon pretrage

Pretraga u više datoteka

  • :vim[grep] /pattern/ {`{file}`} - traži izraz u više datoteka
e.g. :vim[grep] /foo/ **/*
  • :cn[ext] - idi na sljedeći pronađeni tekst
  • :cp[revious] - idi na predhodni pronađeni tekst
  • :cope[n] - otvori prozor sa pregledom pronađenog teksta
  • :ccl[ose] - zatvori prozor za brzi popravak

Kartice (tabs)

  • :tabnew or :tabnew {page.words.file} - otvori datoteku u novoj kartici
  • Ctrl + wT - prebaci trenutni podjeljeni prozor u posebnu novu karticu
  • gt or :tabn[ext] - idi na sljedeću karticu
  • gT or :tabp[revious] - idi na predhodnu karticu
  • #gt - idi na karticu broj #
  • :tabm[ove] # - pomakni trenutnu karticu na # mjesto (indeks kreće od 0)
  • :tabc[lose] - zatvori trenutnu karticu i sve pripadajuće pozore
  • :tabo[nly] - zatvori sve kartice osim trenutno otvorene
  • :tabdo command - pokreni naredbu command u svim karticama (npr. :tabdo q - zatvara sve otvorene kartice)

Rad sa više datoteka

  • :e[dit] datoteka - uredi datoteku u novom međuspremniku (buffer)
  • :bn[ext] - idi na sljedeći međuspremnik (buffer)
  • :bp[revious] - idi na predhodni međuspremnik (buffer)
  • :bd[elete] - izbriši međuspremnik (zatvori datoteku)
  • :b[uffer]# - otvori međuspremnik s indeksom #
  • :b[uffer] file - otvori međuspremnik definiran datotekom
  • :ls or :buffers - lista svih otvorenih međuspremnika (buffers)
  • :sp[lit] datoteka - otvori datoteku u novom međuspremniku (buffer) i podijeli zaslon
  • :vs[plit] datoteka - otvori datoteku u novom međuspremniku (buffer) i podijeli zaslon vertikalno
  • :vert[ical] ba[ll] - uredi sve međuspremnike u vertikalnim prozorima
  • :tab ba[ll] - uredi sve međuspremnike (buffer) u karticama (tabs)
  • Ctrl + ws - podijeli prozor
  • Ctrl + wv - podijeli prozor vertikalno
  • Ctrl + ww - zamijeni prozore
  • Ctrl + wq - zatori prozor
  • Ctrl + wx - promijeni trenutni prozor s sljedećim
  • Ctrl + w= - postavi sve prozore na jednake dimenzije (sirina i visina)
  • Ctrl + wh - pomakni kursor u prozor lijevo (vertikalna podjela)
  • Ctrl + wl - pomakni kursor u prozor desno (vertikalna podjela)
  • Ctrl + wj - pomakni kursor u prozor ispod (horizontalna podjela)
  • Ctrl + wk - pomakni kursor u prozor iznad (horizontalna podjela)
  • Ctrl + wH - pomakni trenutni prozor skroz ulijevo i podesi na punu visinu zaslona (lijevi vertikalni prozor)
  • Ctrl + wL - pomakni trenutni prozor skroz udesno i podesi na punu visinu zaslona (desni vertikalni prozor)
  • Ctrl + wJ - pomakni trenutni prozor skroz dolje i podesi na punu širinu zaslona (donji horizontalni prozor)
  • Ctrl + wK - pomakni trenutni prozor skroz gore i podesi na punu širinu zaslona (gornji horizontalni prozor)

Razlika (Diff)

  • zf - ručno definiranje grupiranja (skupljanja) teksta
  • zd - poništi zadano grupiranje teksta ispod kursora
  • za - izmjenjuj skupljanje/rastvaranje grupiranog teksta ispod kursora
  • zo - rastvori grupirani tekst ispod kursora
  • zc - skupi grupirani tekst ispod kursora
  • zr - rastvori jedan nivo manje u svim grupiranim tekstovima
  • zm - skupi jedan nivo više u svim grupiranim tekstovima
  • zi - izmjenjuj skupljanje/rastvaranje grupiranih tekstova
  • ]c - idi na početak sljedeće izmjene
  • [c - idi na početak predhodne izmjene
  • do or :diffg[et] - dohvati razliku (iz drugog buffer-a)
  • dp or :diffpu[t] - pošalji razliku (drugom buffer-u)
  • :diffthis - označi trenutni prozor dijelom razlike
  • :dif[fupdate] - osvježi razlike
  • :diffo[ff] - ukloni trenutni prozor iz razlike
Tip Naredbe za skupljanje/rastvaranje (npr. za) djeluju na jedan nivo. Za radnje na svim nivoima, koristi velika slova (npr. zA).
Tip Za pregled razlika u datotekama, Vim se može pokrenuti u diff modu naredbom u terminalu vimdiff. Možete čak i definirati kao git difftool.