Globalne

  • :h[elp] słowo kluczowe - otwórz pomoc dla słowa kluczowego
  • :sav[eas] plik - zapisz plik jako
  • :clo[se] - zamknij okienko nawigacji
  • :ter[minal] - otwórz okno terminala
  • K - otwórz stronę pomocy dla słowa pod kursorem
Tip Uruchom komendę vimtutor w terminalu by poznać komendy Vim'a.

Poruszanie kursorem

  • h - przesuń kursor w lewo
  • j - przesuń kursor w dół
  • k - przesuń kursor w górę
  • l - przesuń kursor w prawo
  • gj - przesuń kursor w dół (w tekście wielowierszowym)
  • gk - przesuń kursor w górę (w tekście wielowierszowym)
  • 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ę)
  • ge - skocz wstecz do końca słowa
  • gE - skocz wstecz do końca słowa (słowa mogą zawierać interpunkcję)
  • % - przesuń do pasującego znaku (standardowo wspierane pary: '()', '{}', '[]' - użyj :h matchpairs w Vimie po więcej 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 - skocz do deklaracji lokalnej
  • gD - skocz do deklaracji globalnej
  • fx - przesuń kursor na pierwszy znaleziony znak 'x'
  • tx - przesuń kursor przed pierwszy znaleziony znak 'x'
  • Fx - skocz do poprzedniego wystąpienia znaku x
  • Tx - skocz do lokalizacji po ostatnim wystąpieniu znaku x
  • ; - powtórz poprzednie ruchy f, t, F lub T
  • , - powtórz poprzednie ruchy f, t, F lub T wstecz
  • } - 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
  • zt - ustaw kursor na górze ekranu
  • zb - ustaw kursor na dole ekranu
  • Ctrl + e - przesuń ekran o jedną linię w dół (bez przesuwania kursowa)
  • Ctrl + y - przesuń ekran o jedną linię w górę (bez przesuwania kursowa)
  • 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 - usuń znak przed kursorem w trybie edycji
  • Ctrl + w - usuń słowo przed kursorem w trybie edycji
  • Ctrl + j - rozpocznij nowy wiersz w trybie edycji
  • Ctrl + t - zwiększ wcięcie (przesuń w prawo) linię o jedną szerokość wcięcia w trybie edycji
  • Ctrl + d - zmniejsz wcięcie (przesuń w lewo) linię o jedną szerokość wcięcia w trybie edycji
  • Ctrl + n - wstaw następne dopasowanie przed kursorem w trybie edycji
  • Ctrl + p - wstaw poprzednie dopasowanie przed kursorem w trybie edycji
  • Ctrl + rx - wstaw zawartość rejestru x
  • Ctrl + ox - tymczasowo przejdź do trybu normalnego, żeby wykonać komendę x.
  • Esc or Ctrl + c - wyjdź z trybu wstawiania

Edycja

  • r - zamień pojedynczy znak pod kursorem
  • R - zamień więcej niż jeden znak (dopóki nie zostanie naciśniety ESC).
  • J - połącz wiersze: dodaj wiersz poniżej do bieżącego
  • gJ - połącz wiersze: dodaj wiersz poniżej do bieżącego bez spacji pomiędzy nimi
  • gwip - podziel akapit na wiersze
  • g~ - zmień wielkość liter (zgodnie z ruchem)
  • gu - zmień na małe litery (zgodnie z ruchem)
  • gU - zmień na wielkie litery (zgodnie z ruchem)
  • cc - zastąp cały wiersz
  • c$ or C - zastąp na końcu wiersza
  • ciw - zastąp całe słowo
  • cw or ce - 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 - cofnij (przywróc) ostatnio zmienioną linię
  • 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 - blok z <>
  • ib - wewnętrzny blok z ()
  • iB - wewnętrzny blok z {}
  • it - wewnętrzny blok z <>s
  • Esc or Ctrl + c - wyjdź z trybu wizualnego
Tip Zamiast b lub B możesz też użyć ( lub {.

Komendy w trybie wizualnym

  • > - przesuń tekst w prawo
  • < - przesuń tekst w lewo
  • y - kopiuj zaznaczony tekst
  • d - usuń zaznaczony tekst
  • ~ - zmień wielkość liter
  • u - zmień zaznaczony tekst na małe litery
  • U - zmień zaznaczony tekst na wielkie litery

Rejestry

  • :reg[isters] - pokaż zawartość rejestrów
  • "xy - kopiuj do rejestru x
  • "xp - wklej zawartość rejestru x
  • "+y - skopiuj do rejestru schowka systemowego
  • "+p - wklej z rejestru schowka systemowego
Tip Rejestry zostały zapisane w ~/.viminfo i zostaną załadowane przy ponownym uruchomieniu vima
Tip Rejestry specjalne:

0 - ostatno skopiowany tekst
" - nienazwany rejestr, ostatnio skopiowany lub usunięty tekst
% - bieżąca nazwa pliku
# - alternatywna nazwa pliku
* - zawartość schowka (X11 primary)
+ - zawartość schowka (schowek X11)
/ - ostatnio wyszukiwany wzorzec
: - ostatnio wykonana komenda z linii poleceń
. - ostatnio wstawiony tekst
- - ostatnio usunięty krótki (krótszy niż linia) tekst
= - rejestr przechowujący wyrażenie
_ - rejestr „czarna dziura” (pochłania przekazany tekst, nie zwraca niczego przy odczycie)

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 - idź do lokalizacji, w której Vim został zamknięty
  • `" - idź do miejsca ostatniej edycji w tym pliku
  • `. - idź do miejsca ostatniej zmiany w tym pliku
  • `` - idź do miejsca przed ostatnim skokiem
  • :ju[mps] - lista skoków
  • Ctrl + i - idź do nowszej pozycji w liście skoków
  • Ctrl + o - idź do starszej pozycji w liście skoków
  • :changes - lista zmian
  • g, - idź do nowszej pozycji w liście zmian
  • g; - idź do starszej pozycji w liście zmian
  • Ctrl + ] - skocz do znacznika pod kursorem
Tip Żeby skoczyć do znacznika, można użyć grawisu (`) albo apostrofu ('). Skok przy użyciu apostrofu wykonywany jest do początku (pierwszy niebiały znak) linii oznaczonej znacznikiem.

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
  • yiw - kopiuj wyraz pod kursorem
  • yaw - kopiuj wyraz pod kursorem i spacje przed lub za tym wyrazem
  • y$ or Y - kopiuj na koniec wiersza
  • p - wklej zawartość schowka za kursorem
  • P - wklej przed kursorem
  • gp - wklej zawartość schowka za kursorem i postaw kursor za wklejonym tekstem
  • gP - wklej przed kursorem i postaw kursor za wklejonym tekstem
  • dd - kasuj wiersz
  • 2dd - kasuj dwa wiersze
  • dw - kasuj litery wyrazu od miejsca, gdzie znajduje się kursor, na początek następnego słowa
  • diw - kasuj wyraz pod kursorem
  • daw - kopiuj wyraz pod kursorem i spację przed wyrazem lub za nim
  • :3,5d - usuń linie od 3 do 5
Tip Możesz także użyć następującej składni by określić zasięg działania:
e.g.

:.,$d - Od obecnej linii do końca pliku
:.,1d - Od obecnej linii do początku pliku
:10,1d - Od 10 linii do początku pliku

  • :g/{pattern}/d - usuń wszystkie linie zawierające dany wzorzec (pattern)
  • :g!/{pattern}/d - usuń wszystkie linie nie zawierające danego wzorca (pattern)
  • d$ or D - kasuj na końcu wiersza
  • x - usuń znak

Wcięcia tekstu

  • >> - zwiększ wcięcie (przesuń w prawo) o jedną szerokość wcięcia
  • << - zmniejsz wcięcie (przesuń w lewo) o jedną szerokość wcięcia
  • >% - zwiększ wcięcie bloku ograniczonego () lub {} (kursor on nawiasie)
  • <% - usunięcie wcięcia ograniczonego () lub {} (kursor na nawiasie)
  • >ib - zwiększ wcięcia bloku ograniczonego ()
  • >at - zwiększ wcięcia bloku ograniczonego <>
  • 3== - popraw wcięcia trzech linii
  • =% - popraw wcięcia bloku ograniczonego () lub {} (kursor na nawiasie)
  • =iB - popraw wcięcia bloku wewnętrznego ogranoczonego {}
  • gg=G - popraw wcięcia całego bufora
  • ]p - wklej i dopasuj wcięcia do bieżącej linii

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 - zapisz i zamknij wszystkie karty

Szukaj i zastąp

  • /pattern - szukaj wzoru
  • ?pattern - szukaj wzoru wstecz
  • \vpattern - „magiczny” wzór: niealfanumeryczne 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] - zamknij okno zawierające listę dopasowań

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] plik - edytuj plik w nowym buforze
  • :bn[ext] - idź do następnego bufora
  • :bp[revious] - wróć do poprzedniego bufora
  • :bd[elete] - usuń bufor (zamknij plik)
  • :b[uffer]# - idź do bufora o numerze #
  • :b[uffer] file - idź do bufora o nazwie pliku
  • :ls or :buffers - zrób listę wszystkich otwartych buforów
  • :sp[lit] plik - otwórz plik w nowym buforze i podziel okno
  • :vs[plit] plik - otwórz plik w nowym buforze i podziel okno wertykalnie
  • :vert[ical] ba[ll] - edytuj wszystkie bufory w oknach pionowych
  • :tab ba[ll] - edytuj wszystkie bufory jako zakładki
  • Ctrl + ws - podziel okno
  • Ctrl + wv - podziel okno pionowo
  • Ctrl + ww - przełącz okno
  • Ctrl + wq - wyjdź z okna
  • Ctrl + wx - zmień bieżące okno z następnym
  • Ctrl + w= - wyrównaj wysokość i szerokość wszystkich okien
  • Ctrl + wh - przesuń kursor do lewego okna (podział pionowy)
  • Ctrl + wl - przesuń kursor do prawego okna (podział pionowy)
  • Ctrl + wj - przesuń kursor do okna poniżej (podział poziomy)
  • Ctrl + wk - przesuń kursor do okna powyżej (podział poziomy)
  • Ctrl + wH - przesuń bieżące okno maksymalnie w lewo i zmaksymalizuj jego wysokość
  • Ctrl + wL - przesuń bieżące okno maksymalnie w prawo i zmaksymalizuj jego wysokość
  • Ctrl + wJ - przesuń bieżące okno maksymalnie w dół i zmaksymalizuj jego szerokość
  • Ctrl + wK - przesuń bieżące okno maksymalnie w górę i zmaksymalizuj jego szerokość

Diff

  • zf - ręcznie zdefiniuj zwinięcie poprzez ruch
  • zd - skasuj zwinięcie pod kursorem zdefiniowane znacznikami
  • za - zwiń, jeśli niezwinięte; rozwiń, jeśli zwinięte (pod kursorem)
  • zo - rozwiń zwinięcie pod kursorem
  • zc - zwiń pod kursorem
  • zr - zmniejsz (rozwiń) zwinięcia o jeden poziom
  • zm - zwiększ (zwiń) zwinięcia o jeden poziom
  • zi - włącz lub wyłącz funkcjonalność zwijania
  • ]c - skocz do początku następnej zmiany
  • [c - skocz do początku poprzedniej zmiany
  • do or :diffg[et] - pobierz różnice (z innego bufora)
  • dp or :diffpu[t] - przekaż różnice (do innego bufora)
  • :diffthis - bieżące okno staje się częścią diff
  • :dif[fupdate] - aktualizuj różnice
  • :diffo[ff] - wyłącz tryb różnic w bieżącym oknie
Tip Komendy do zwijania (np. za) działają na jednym poziomie. Żeby działały na wszystkich poziomach, użyj wielkich liter (np. zA).
Tip Żeby pokazać różnice plików, można od razu uruchomić Vima w trybie różnic uruchamiając vimdiff w terminalu. Można to nawet ustawić jako git difftool.