Global

  • :h[elp] keyword - segítség megnyitása kulcsszóhoz
  • :sav[eas] file - fájl mentése másként
  • :clo[se] - aktuális ablak bezárása
  • :ter[minal] - terminálablak megnyitása
  • K - man oldal megnyitása a kurzor alatti szóhoz
Tip Futtasd a vimtutor parancsot egy terminálban az első Vim parancsok tanulásához.

Kurzormozgás

  • h - kurzort balra mozgatás
  • j - kurzort lefelé mozgatás
  • k - kurzort felfelé mozgatás
  • l - kurzort jobbra mozgatás
  • gj - kurzort lefelé mozgatás (többsoros szövegben)
  • gk - kurzort felfelé mozgatás (többsoros szövegben)
  • H - ugrás a képernyő tetejére
  • M - ugrás a képernyő közepére
  • L - ugrás a képernyő aljára
  • w - ugrás előre egy szó elejére
  • W - ugrás előre egy szó elejére (szavak tartalmazhatnak írásjeleket is)
  • e - ugrás előre egy szó végére
  • E - ugrás előre egy szó végére (szavak tartalmazhatnak írásjeleket is)
  • b - ugrás hátra egy szó elejére
  • B - ugrás hátra egy szó elejére (szavak tartalmazhatnak írásjeleket is)
  • ge - ugrás hátra egy szó végére
  • gE - ugrás hátra egy szó végére (szavak tartalmazhatnak írásjeleket is)
  • % - kurzor pozícionálása a megfelelő karakterre (alapértelmezett támogatott párok: '()', '{}', '[]' - további információkért használd a :h matchpairs parancsot a Vimben)
  • 0 - ugrás a sor elejére
  • ^ - ugrás a sor első nem-szóköz karakterére
  • $ - ugrás a sor végére
  • g_ - ugrás a sor utolsó nem-szóköz karakterére
  • gg - ugrás a dokumentum első sorára
  • G - ugrás a dokumentum utolsó sorára
  • 5gg or 5G - ugrás az 5. sorra
  • gd - ugrás a helyi deklarációra
  • gD - ugrás a globális deklarációra
  • fx - ugrás a karakter x következő előfordulására
  • tx - ugrás a karakter x előtti következő előfordulás elé
  • Fx - ugrás a karakter x előző előfordulására
  • Tx - ugrás a karakter x előző előfordulás utánra
  • ; - ismétlés az előző f, t, F vagy T mozgásnak
  • , - ismétlés az előző f, t, F vagy T mozgásnak hátrafele
  • } - ugrás a következő bekezdésre (vagy funkcióra/blockra, ha kódot szerkesztesz)
  • { - ugrás az előző bekezdésre (vagy funkcióra/blockra, ha kódot szerkesztesz)
  • zz - kurzor középre állítása a képernyőn
  • zt - kurzor pozícionálása a képernyő tetejére
  • zb - kurzor pozícionálása a képernyő aljára
  • Ctrl + e - képernyő lefelé egy sorral (kurzor mozgatása nélkül)
  • Ctrl + y - képernyő felfelé egy sorral (kurzor mozgatása nélkül)
  • Ctrl + b - képernyő felfelé egy oldallal (kurzor az utolsó sorra)
  • Ctrl + f - képernyő lefelé egy oldallal (kurzor az első sorra)
  • Ctrl + d - kurzor és képernyő lefelé 1/2 oldallal
  • Ctrl + u - kurzor és képernyő felfelé 1/2 oldallal
Tip Egy kurzormozgás parancs elé írj egy számot annak ismétléséhez. Például a 4j lefelé mozgatja a kurzort 4 sorral.

Beszúrási mód - beszúrás/bővítés szöveghez

  • i - beszúrás a kurzor előtt
  • I - beszúrás a sor elején
  • a - beszúrás (bővítés) a kurzor után
  • A - beszúrás (bővítés) a sor végén
  • o - új sor beszúrása a jelenlegi sor alá
  • O - új sor beszúrása a jelenlegi sor fölé
  • ea - beszúrás (bővítés) a szó végére
  • Ctrl + h - karakter törlése a kurzor előtt beszúrás közben
  • Ctrl + w - szó törlése a kurzor előtt beszúrás közben
  • Ctrl + j - sortörés hozzáadása a kurzor pozíciójához beszúrás közben
  • Ctrl + t - bekezdésig való behúzás (jobbra mozgatás) egy sornyi lépéssel beszúrás közben
  • Ctrl + d - bekezdésig való kihúzás (balra mozgatás) egy sornyi lépéssel beszúrás közben
  • Ctrl + n - beszúrás (automatikus befejezés) a kurzor előtt a következő találatból beszúrás közben
  • Ctrl + p - beszúrás (automatikus befejezés) a kurzor előtt az előző találatból beszúrás közben
  • Ctrl + rx - a 'x' regiszter tartalmának beszúrása
  • Ctrl + ox - Ideiglenes átváltás normál módba egy normál mód parancs futtatásához 'x' betűvel.
  • Esc or Ctrl + c - kilépés a beszúrási módból

Szerkesztés

  • r - egy karakter helyettesítése.
  • R - több karakter helyettesítése, amíg meg nem nyomod az ESC-t.
  • J - a sor alatti sor összefűzése egy szóközzel
  • gJ - a sor alatti sor összefűzése szóköz nélkül
  • gwip - bekezdés újraformázása
  • g~ - kapcsolja át a kisbetűket a kurzor helyzetéig
  • gu - átváltás kisbetűre a kurzor helyzetéig
  • gU - átváltás nagybetűre a kurzor helyzetéig
  • cc - sor teljes cseréje
  • c$ or C - cserélés a sor végéig
  • ciw - szó teljes cseréje
  • cw or ce - cserélés a szó végéig
  • s - karakter törlése és szöveg beillesztése
  • S - sor törlése és szöveg beillesztése (ugyanaz, mint cc)
  • xp - két karakter felcserélése (törlés és beillesztés)
  • u - visszavonás
  • U - visszaállítás (visszavonás) az utolsó megváltoztatott sorra
  • Ctrl + r - újra
  • . - az utolsó parancs ismétlése

Szöveg kijelölése (vizuális mód)

  • v - vizuális mód indítása, sorok kijelölése, majd parancs végrehajtása (pl. yank)
  • V - sortöréses vizuális mód indítása
  • o - ugrás a kijelölt terület másik végére
  • Ctrl + v - vizuális blokk mód indítása
  • O - ugrás a blokk másik sarkához
  • aw - szó kijelölése
  • ab - blokk kijelölése ()-al
  • aB - blokk kijelölése {}-al
  • at - blokk kijelölése <> címkékkel
  • ib - belső blokk kijelölése ()-al
  • iB - belső blokk kijelölése {}-al
  • it - belső blokk kijelölése <> címkékkel
  • Esc or Ctrl + c - kilépés a vizuális módból
Tip A b vagy a B helyett használhatsz ( vagy { is.

Vizuális parancsok

  • > - szöveg jobbra mozgatása
  • < - szöveg balra mozgatása
  • y - kijelölt szöveg másolása
  • d - kijelölt szöveg törlése
  • ~ - kis- és nagybetű váltás
  • u - kijelölt szöveg kisbetűvé alakítása
  • U - kijelölt szöveg nagybetűvé alakítása

Regiszterek

  • :reg[isters] - regiszter tartalmának megjelenítése
  • "xy - regiszter x-be való másolás
  • "xp - regiszter x tartalmának beillesztése
  • "+y - beillesztés a rendszer vágólap regiszterbe
  • "+p - beillesztés a rendszer vágólap regiszterből
Tip A regiszterek a ~/.viminfo fájlban vannak tárolva, és a Vim következő indításakor újra betöltődnek.
Tip Különleges regiszterek:

0 - utolsó másolás
" - névtelen regiszter, utolsó törlés vagy másolás
% - aktuális fájlnév
# - alternatív fájlnév
* - vágólap tartalma (X11 elsődleges)
+ - vágólap tartalma (X11 vágólap)
/ - utolsó keresési minta
: - utolsó parancssor
. - utolsó beillesztett szöveg
- - utolsó kis (egy soron belüli) törlés
= - kifejezés regiszter
_ - fekete lyuk regiszter

Jelölések és pozíciók

  • :marks - jelölések listája
  • ma - aktuális pozíció beállítása az 'A' jelzéshez
  • `a - ugrás az 'A' jelzés pozíciójához
  • y`a - szöveg másolása az 'A' jelzés pozíciójába
  • `0 - ugrás az utolsó Vim kilépési helyéhez
  • `" - ugrás a legutóbbi szerkesztés helyéhez ebben a fájlban
  • `. - ugrás az utolsó változás helyéhez ebben a fájlban
  • `` - ugrás az utolsó ugrás előtti helyhez
  • :ju[mps] - ugrások listája
  • Ctrl + i - ugrás a legújabb helyhez az ugrás listában
  • Ctrl + o - ugrás a legutóbbi helyhez az ugrás listában
  • :changes - változások listája
  • g, - ugrás a legújabb helyhez a változás listában
  • g; - ugrás a legutóbbi helyhez a változás listában
  • Ctrl + ] - ugrás az aktuális kurzor alatti címkehez
Tip A jelzéshez való ugráshoz használhatsz egy visszafele hajló vonalat (`) vagy egy idézőjelet ('). Az idézőjel használatával az ugrás a jelölés sorának kezdetére történik (első nem üres karakter).

Makrók

  • qa - makró 'a' rögzítése
  • q - makró rögzítésének leállítása
  • @a - makró 'a' futtatása
  • @@ - utoljára futtatott makró újra futtatása

Vágás és beillesztés

  • yy - sor másolása
  • 2yy - 2 sor másolása
  • yw - a kurzor helyzetétől a következő szó elejéig tartó karakterek másolása
  • yiw - a kurzor alatti szó másolása
  • yaw - a kurzor alatti szó és előtte vagy utána levő szóköz másolása
  • y$ or Y - a kurzor helyzetétől a sor végéig tartó szöveg másolása
  • p - vágólap beillesztése a kurzor után
  • P - vágólap beillesztése a kurzor előtt
  • gp - vágólap beillesztése a kurzor után, és a kurzort az új szöveg után hagyja
  • gP - vágólap beillesztése a kurzor előtt, és a kurzort az új szöveg után hagyja
  • dd - sor törlése
  • 2dd - 2 sor törlése
  • dw - a kurzor helyzetétől a következő szó elejéig tartó karakterek törlése
  • diw - a kurzor alatti szó törlése
  • daw - a kurzor alatti szó és előtte vagy utána levő szóköz törlése
  • :3,5d - 3-tól 5-ig terjedő sorok törlése
Tip Használhatsz a következő karaktereket a tartomány meghatározásához:
e.g.

:.,$d - Az aktuális sortól a fájl végéig
:.,1d - Az aktuális sortól a fájl elejéig
:10,$d - A 10. sortól a fájl elejéig

  • :g/{pattern}/d - a mintát tartalmazó összes sor törlése
  • :g!/{pattern}/d - nem tartalmaz mintát az összes sor törlése
  • d$ or D - a kurzor helyzetétől a sor végéig tartó szöveg törlése
  • x - karakter törlése

Szöveg behúzása

  • >> - egy sor behúzása egy tabulálás mérettel jobbra
  • << - egy sor behúzása egy tabulálás mérettel balra
  • >% - blokk behúzása () vagy {} címkékkel (kurzor a kapcsos zárójel fölött)
  • <% - de-indent a block with () or {} (cursor on brace)
  • >ib - belső blokk behúzása ()-al
  • >at - indent a block with <> tags
  • 3== - re-indent 3 lines
  • =% - re-indent a block with () or {} (cursor on brace)
  • =iB - re-indent inner block with {}
  • gg=G - re-indent entire buffer
  • ]p - paste and adjust indent to current line

Kilépés

  • :w - write (save) the file, but don't exit
  • :w !sudo tee % - write out the current file using sudo
  • :wq or :x or ZZ - write (save) and quit
  • :q - quit (fails if there are unsaved changes)
  • :q! or ZQ - quit and throw away unsaved changes
  • :wqa - write (save) and quit on all tabs

Keresés és csere

  • /pattern - search for pattern
  • ?pattern - search backward for pattern
  • \vpattern - 'very magic' pattern: non-alphanumeric characters are interpreted as special regex symbols (no escaping needed)
  • n - következő találat
  • N - előző találat
  • :%s/old/new/g - replace all old with new throughout file
  • :%s/old/new/gc - replace all old with new throughout file with confirmations
  • :noh[lsearch] - remove highlighting of search matches

Több fájl keresése

  • :vim[grep] /pattern/ {`{file}`} - search for pattern in multiple files
e.g. :vim[grep] /foo/ **/*
  • :cn[ext] - jump to the next match
  • :cp[revious] - jump to the previous match
  • :cope[n] - open a window containing the list of matches
  • :ccl[ose] - close the quickfix window

Tabs

  • :tabnew or :tabnew {page.words.file} - open a file in a new tab
  • Ctrl + wT - move the current split window into its own tab
  • gt or :tabn[ext] - move to the next tab
  • gT or :tabp[revious] - move to the previous tab
  • #gt - move to tab number #
  • :tabm[ove] # - move current tab to the #th position (indexed from 0)
  • :tabc[lose] - close the current tab and all its windows
  • :tabo[nly] - close all tabs except for the current one
  • :tabdo command - run the command on all tabs (e.g. :tabdo q - closes all opened tabs)

Working with multiple files

  • :e[dit] file - edit a file in a new buffer
  • :bn[ext] - go to the next buffer
  • :bp[revious] - go to the previous buffer
  • :bd[elete] - delete a buffer (close a file)
  • :b[uffer]# - go to a buffer by index #
  • :b[uffer] file - go to a buffer by file
  • :ls or :buffers - list all open buffers
  • :sp[lit] file - open a file in a new buffer and split window
  • :vs[plit] file - open a file in a new buffer and vertically split window
  • :vert[ical] ba[ll] - edit all buffers as vertical windows
  • :tab ba[ll] - edit all buffers as tabs
  • Ctrl + ws - split window
  • Ctrl + wv - split window vertically
  • Ctrl + ww - switch windows
  • Ctrl + wq - quit a window
  • Ctrl + wx - exchange current window with next one
  • Ctrl + w= - make all windows equal height & width
  • Ctrl + wh - move cursor to the left window (vertical split)
  • Ctrl + wl - move cursor to the right window (vertical split)
  • Ctrl + wj - move cursor to the window below (horizontal split)
  • Ctrl + wk - move cursor to the window above (horizontal split)
  • Ctrl + wH - make current window full height at far left (leftmost vertical window)
  • Ctrl + wL - make current window full height at far right (rightmost vertical window)
  • Ctrl + wJ - make current window full width at the very bottom (bottommost horizontal window)
  • Ctrl + wK - make current window full width at the very top (topmost horizontal window)

Diff

  • zf - manually define a fold up to motion
  • zd - delete fold under the cursor
  • za - toggle fold under the cursor
  • zo - open fold under the cursor
  • zc - close fold under the cursor
  • zr - reduce (open) all folds by one level
  • zm - fold more (close) all folds by one level
  • zi - toggle folding functionality
  • ]c - jump to start of next change
  • [c - jump to start of previous change
  • do or :diffg[et] - obtain (get) difference (from other buffer)
  • dp or :diffpu[t] - put difference (to other buffer)
  • :diffthis - make current window part of diff
  • :dif[fupdate] - update differences
  • :diffo[ff] - switch off diff mode for current window
Tip The commands for folding (e.g. za) operate on one level. To operate on all levels, use uppercase letters (e.g. zA).
Tip To view the differences of files, one can directly start Vim in diff mode by running vimdiff in a terminal. One can even set this as git difftool.