Globalne

  • :h[elp] keyword - otwórz pomoc dla słowa kluczowego
  • :sav[eas] file - zapisz plik jako
  • :clo[se] - zamknij okienko nawigacji
  • :ter[minal] - open a terminal window
  • K - open man page for word under the cursor
Tip Run vimtutor in a terminal to learn the first Vim commands.

Poruszanie kursorem

  • h - przesuń kursor w lewo
  • j - przesuń kursor w dół
  • k - przesuń kursor w górę
  • l - przesuń kursor w prawo
  • H - skocz do góry ekranu
  • M - skocz do połowy ekranu
  • L - skocz do dołu ekranu
  • w - skocz na początek następnego wyrazu
  • W - skocz na początek następnego wyrazu (słowa mogą zawierać interpunkcję)
  • e - skocz na koniec bieżącego wyrazu
  • E - skocz na koniec bieżącego wyrazu (słowa mogą zawierać interpunkcję)
  • b - skocz na początek bieżącego wyrazu
  • B - skocz na początek bieżącego wyrazu (słowa mogą zawierać interpunkcję)
  • % - przesuń do pasującego znaku (standardowo wspierane pary: '()', '{}', '[]' - użyj :h matchpairs w Vimie po więce informacji)
  • 0 - skocz na początek linii
  • ^ - przesuń kursor na pierwszy niepusty znak
  • $ - skocz na koniec wiersza
  • g_ - skocz do ostatniego niepustego znaku na końcu wiersza
  • gg - skocz do pierwszego wiersza w pliku
  • G - skocz do ostatniego wiersza w pliku
  • 5gg or 5G - skocz do linii 5
  • gd - move to local declaration
  • gD - move to global declaration
  • fx - przesuń kursor na pierwszy znaleziony znak 'x'
  • tx - przesuń kursor przed pierwszy znaleziony znak 'x'
  • Fx - jump to previous occurence of character x
  • Tx - jump to after previous occurence of character x
  • ; - repeat previous f, t, F or T movement
  • , - repeat previous f, t, F or T movement, backwards
  • } - skocz do następnego paragrafu (albo funkcji/bloku kodu w trakcie edycji kodu)
  • { - skocz do poprzedniego paragrafu (albo funkcji/bloku kodu w trakcie edycji kodu)
  • zz - wyśrodkuj kursor na ekranie
  • Ctrl + e - move screen down one line (without moving cursor)
  • Ctrl + y - move screen up one line (without moving cursor)
  • Ctrl + b - przesuń ekran o całą jego wysokość w górę
  • Ctrl + f - przesuń ekran o całą jego wysokość w dół
  • Ctrl + d - przesuń ekran o połowę tekstu w dół
  • Ctrl + u - przesuń ekran o połowę tekstu w górę
Tip Poprzedź komendę ruchu kursora liczbą powtórzeń. Na przykład 4j przesunie w dół 4 wiersze

Tryb wprowadzania tekstu: wstawianie/dodawanie tekstu

  • i - wstaw przed kursorem
  • I - wstaw na początku wiersza
  • a - wstaw za kursorem
  • A - przesuń kursor na koniec wiersza i wprowadź tekst od tej pozycji
  • o - utwórz nowy wiersz poniżej bieżącego i wprowadź tekst
  • O - utwórz nowy wiersz powyżej bieżącego i wprowadź tekst
  • ea - wstaw na końcu wyrazu
  • Ctrl + h - delete the character before the cursor during insert mode
  • Ctrl + w - delete word before the cursor during insert mode
  • Ctrl + j - begin new line during insert mode
  • Ctrl + t - indent (move right) line one shiftwidth during insert mode
  • Ctrl + d - de-indent (move left) line one shiftwidth during insert mode
  • Ctrl + n - insert (auto-complete) next match before the cursor during insert mode
  • Ctrl + p - insert (auto-complete) previous match before the cursor during insert mode
  • Ctrl + rx - insert the contents of register x
  • Esc - wyjdź z trybu wstawiania

Edycja

  • r - zamień pojedynczy znak pod kursorem
  • J - połącz wiersze: dodaj wiersz poniżej do bieżącego
  • gJ - join line below to the current one without space in between
  • gwip - reflow paragraph
  • g~ - switch case up to motion
  • gu - change to lowercase up to motion
  • gU - change to uppercase up to motion
  • cc - zastąp cały wiersz
  • C - change (replace) to the end of the line
  • c$ - zastąp na końcu wiersza
  • ciw - change (replace) entire word
  • cw - zastąp na końcu wyrazu
  • s - zastąp znak wskazany przez kursor
  • S - zastąp wiersz (takie samo znaczenie jak cc)
  • xp - zastąp dwa znaki (usuń i wklej)
  • u - cofnij
  • U - restore (undo) last changed line
  • Ctrl + r - popraw
  • . - powtórz ostatnią komendę

Zaznaczanie tekstu

  • v - uruchom tryb wizualny, zaznacz wiersze, potem wykonaj polecenie (podobnie jak y-kopiuj zaznaczony tekst)
  • V - uruchom tryb wizualny
  • o - przesuń na koniec zaznaczonej części
  • Ctrl + v - uruchom tryb wizualny
  • O - przesuń do przeciwnego kąta bloku
  • aw - zaznacz słowo
  • ab - blok z ()
  • aB - blok z {}
  • at - a block with <> tags
  • ib - wewnętrzny blok z ()
  • iB - wewnętrzny blok z {}
  • it - inner block with <> tags
  • Esc - wyjdź z trybu wizualnego
Tip Instead of b or B one can also use ( or { respectively.

Komendy w trybie wizualnym

  • > - przesuń tekst w prawo
  • < - przesuń tekst w lewo
  • y - kopiuj zaznaczony tekst
  • d - usuń zaznaczony tekst
  • ~ - zmień wielkość liter
  • u - change marked text to lowercase
  • U - change marked text to uppercase

Rejestry

  • :reg[isters] - pokaż zawartość rejestrów
  • "xy - kopiuj do rejestru x
  • "xp - wklej zawartość rejestru x
  • "+y - yank into the system clipboard register
  • "+p - paste from the system clipboard register
Tip Rejestry zostały zapisane w ~/.viminfo i zostaną załadowane przy ponownym uruchomieniu vima
Tip Special registers:

0 - last yank
" - unnamed register, last delete or yank
% - current file name
# - alternate file name
* - clipboard contents (X11 primary)
+ - clipboard contents (X11 clipboard)
/ - last search pattern
: - last command-line
. - last inserted text
- - last small (less than a line) delete
= - expression register
_ - black hole register

Oznaczanie

  • :marks - pokaż listę wszystkich zaznaczeń
  • ma - ustaw bieżącą pozycję na oznaczenie A
  • `a - przeskocz do pozycji oznaczenia A
  • y`a - kopiuj tekst do pozycji oznaczenia A
  • `0 - go to the position where Vim was previously exited
  • `" - go to the position when last editing this file
  • `. - go to the position of the last change in this file
  • `` - go to the position before the last jump
  • :ju[mps] - list of jumps
  • Ctrl + i - go to newer position in jump list
  • Ctrl + o - go to older position in jump list
  • :changes - list of changes
  • g, - go to newer position in change list
  • g; - go to older position in change list
  • Ctrl + ] - jump to the tag under cursor
Tip To jump to a mark you can either use a backtick (`) or an apostrophe ('). Using an apostrophe jumps to the beginning (first non-black) of the line holding the mark.

Makra

  • qa - nagraj makro A
  • q - przerwij nagrywanie makra
  • @a - odtwórz makro A
  • @@ - powtórz ostatnio odtworzone makro

Wytnij i wklej

  • yy - kopiuj wiersz
  • 2yy - kopiuj dwa wiersze
  • yw - kopiuj litery wyrazu od miejsca, gdzie znajduje się kursor, na początek następnego słowa
  • y$ - kopiuj na koniec wiersza
  • p - wklej zawartość schowka za kursorem
  • P - wklej przed kursorem
  • dd - kasuj wiersz
  • 2dd - kasuj dwa wiersze
  • dw - kasuj litery wyrazu od miejsca, gdzie znajduje się kursor, na początek następnego słowa
  • D - kasuj na końcu wiersza
  • d$ - kasuj na końcu wiersza
  • x - usuń znak

Indent text

  • >> - indent (move right) line one shiftwidth
  • << - de-indent (move left) line one shiftwidth
  • >% - indent a block with () or {} (cursor on brace)
  • >ib - indent inner block with ()
  • >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

Wychodzenie

  • :w - zapisz plik, ale nie wychodź
  • :w !sudo tee % - zapisz plik używając sudo
  • :wq or :x or ZZ - zapisz i wyjdź
  • :q - wyjdź (nie zadziała, jeśli są niezapisane zmiany)
  • :q! or ZQ - wyjdź i odrzuć niezapisane zmiany
  • :wqa - write (save) and quit on all tabs

Szukaj i zastąp

  • /pattern - szukaj wzoru
  • ?pattern - szukaj wzoru wstecz
  • \vpattern - 'magiczny' wzór: nie alfanumeryczne znaki są rozumiane jako wyrażenia regularne - regex (bez wstawiania ukośników)
  • n - powtórz szukanie w tym samym kierunku
  • N - powtórz szukanie w przeciwnym kierunku
  • :%s/old/new/g - zastąp wszystkie stare z nowymi w całym pliku
  • :%s/old/new/gc - zastąp wszystkie stare z nowymi w całym pliku z potwierdzeniem
  • :noh[lsearch] - usuń podświetlone wyniki

Szukaj w wielu plikach równocześnie

  • :vim[grep] /pattern/ {`{file}`} - szukaj wzorca w wielu plikach
e.g. :vim[grep] /foo/ **/*
  • :cn[ext] - skocz do następnego dopasowania
  • :cp[revious] - skocz do poprzedniego dopasowania
  • :cope[n] - otwórz okno zawierające listę dopasowań
  • :ccl[ose] - close the quickfix window

Karty

  • :tabnew or :tabnew {page.words.file} - otwórz plik w nowej karcie
  • Ctrl + wT - przesuń podzielone okno do oddzielnej karty
  • gt or :tabn[ext] - przesuń do następnej karty
  • gT or :tabp[revious] - przesuń do poprzedniej karty
  • #gt - przesuń do karty numer #
  • :tabm[ove] # - przesuń kartę do pozycji #th (liczonej od 0)
  • :tabc[lose] - zamknij kartę i wszystkie jej okna
  • :tabo[nly] - zamknij wszystkie karty oprócz bieżącej
  • :tabdo command - wykonaj polecenie we wszystkich kartach (np. :tabdo q - zamyka wszystkie otwarte karty)

Praca z wieloma plikami

  • :e[dit] file - edytuj plik w nowym buforze
  • :bn[ext] - idź do następnego bufora
  • :bp[revious] - wróć do poprzedniego bufora
  • :bd[elete] - usuń bufer (zamknij plik)
  • :b[uffer]# - go to a buffer by #
  • :b[uffer] file - go to a buffer by file
  • :ls or :buffers - zrób listę wszystkich otwartych buforów
  • :sp[lit] file - otwórz plik w nowym buforze i podziel okno
  • :vs[plit] file - otwórz plik w nowym buforze i podziel okno wertykalnie
  • :vert[ical] ba[ll] - edit all buffers as vertical windows
  • :tab ba[ll] - edit all buffers as tabs
  • Ctrl + ws - podziel okno
  • Ctrl + wv - podziel okno wertykalnie
  • Ctrl + ww - przełącz okno
  • Ctrl + wq - wyjdź z okna
  • Ctrl + wx - exchange current window with next one
  • Ctrl + w= - make all windows equal height & width
  • Ctrl + wh - przesuń kursor do lewego okna (podział wertykalny)
  • Ctrl + wl - przesuń kursor do prawego okna (podział wertykalny)
  • Ctrl + wj - przesuń kursor do okna poniżej (podział horyzontalny)
  • Ctrl + wk - przesuń kursor do okna powyżej (podział horyzontalny)

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.