Żeby powtórzyć jakąś komendę kilkakrotnie poprzedź jej wydanie stosowną liczbą. h kursor w lewo j kursor w dół k kursor w górę l kursor w prawo w kursor w prawo na początek wyrazu b kursor w lewo na początek wyrazu e kursor w prawo na koniec wyrazu ge kursor w lewo na koniec wyrazu ) kursor do następnego zdania ( kursor do poprzedniego zdania } kursor do następnego paragrafu { kursor do poprzedniego paragrafu 0 kursor na początek linii (równoważny HOME) ^ kursor na pierwszy widzialny znak $ kursor na koniec linii (równoważny END) g0,g^,g$ to samo, co bez g, różnica w liniach długich (jako linię traktuje gj,gk to, co jest wyświetlane w jednej linii, a nie to, co jest zakończone znakiem nowej linii) [num]| przesuń kursor do kolumny [num] f[znak] kursor na następny napotkany znak [znak] w linii F[znak] kursor na poprzedni napotkany znak [znak] w linii t[znak] kursor przed następny napotkany znak [znak] w linii T[znak] kursor przed poprzedni napotkany znak [znak] w linii ; powtórz ostatnie f,F,t,T , powtórz ostatnie f,F,t,T w przeciwnym kierunku % kursor do zamykającego nawiasu z przewiń ekran tak, żeby kursor był w górnej linii zz przewiń ekran tak, żeby kursor był w środkowej linii zb przewiń ekran tak, żeby kursor był w dolnej linii [num]% przesuń kursor do pozycji [num] procent w buforze [#]g[kier] przesuń kursor o # linii w kierunku [kier] [#]gg przesuń kursor do # linii (domyślnie do pierwszej) [#]G przesuń kursor do # linii (domyślnie do ostatniej) [#]H przesuń kursor do # wyświetlanej linii M przesuń kursor do środkowej wyświetlanej linii [#]L przesuń kursor do linii wyświetlanej jako #-tej od końca [#]go przesuń kursor do # bajtu w buforze ^E przewiń ekran o linię w dół ^D przewiń ekran o 1/2 strony w dół ^F przewiń ekran o całą stronę w dół ^Y przewiń ekran o linię w górę ^U przewiń ekran o 1/2 strony w górę ^B przewiń ekran o całą stronę w górę ^G wyświetl aktualną pozycję ga wyświetl wartość ASCII znaku pod kursorem g ^G wyświetl szczegółową pozycję kursora m[mark] ustaw znacznik [mark] pod kursorem `[mark] idź do znacznika [mark] (` to znak pod tyldą, nie pod cudzysłowiem) `` idź do pozycji przed ostatnim skokiem (jw.) '[mark] idź do linii ze znacznikiem [mark] (' to znak pod cudzysłowiem) '' idź do pozycji przed ostatnim skokiem (jw.) [',[` idź do najbliższego wyższego znacznika małoliterowego ]',]` idź do najbliższego niższego znacznika małoliterowego :marks wypisz wszystkie znaczniki ^] skocz do znacznika spod kursora (wygodne przy help-ie) :tag[tag] skocz do znacznika o nazwie [tag] :[num]tag skocz do znacznika o numerze [num] ^O skocz do poprzedniej pozycji kursora (wszelkie skoki) ,^I skocz do następnej pozycji kursora i tryb INSERT I tryb INSERT kursor na początku wiersza a tryb INSERT kursor o znak dalej A tryb INSERT kursor na końcu linii cc,C tryb INSERT wyczyszczona aktualna linia cw,ce,c$,c^ tryb INSERT wyczyszczone jak w 'd*' s tryb INSERT kasowany aktualny znak o tryb INSERT nowa linia za aktualną O tryb INSERT nowa linia przed aktualną R tryb REPLACE v tryb VISUAL (zaznaczanie tekstu) V tryb VISUAL LINE (zaznaczanie całych linii) ^V tryb VISUAL BLOCK (zaznaczanie kolumnowe) x usuń znak zza kursora X usuń znak sprzed kursora d [kier] usuń znak w kierunku [kier] dd usuń całą linię dw usuń znaki od kursora do końca wyrazu i spację kończącą de usuń znaki od kursora do końca wyrazu d^ usuń znaki między początkiem linii i kursorem d$,D usuń znaki od kursora do końca linii J połącz aktualną linię z następną (w miejsce EOL wstaw spację) gJ jw., ale bez wstawiania spacji gv przywróć ostatnie zaznaczenie r [char] zamień znak pod kursorem na [char] . powtórz ostatnią operację ^C,^[ działa jak ESCAPE o VISUAL: zamień początek zaznaczania i kursor c VISUALe: zamień zaznaczenie na wpisany tekst VISUAL BLOCK: zmień zaznaczenia we wszyskich zaznaczonych liniach C VISUAL BLOCK: zmień zaznaczenia do końca linii d VISUALe: usuń zaznaczony tekst J VISUALe: połącz zaznaczenie w jedną linię (zmień EOL na spacje) gJ VISUALe: jw., ale bez spacji ab,a),a( VISUALe: rozszerz zaznaczenie o (...) (z nawiasami) aB,a},a{ VISUALe: rozszerz zaznaczenie o {...} (z nawiasami) a],a[ VISUALe: rozszerz zaznaczenie o [...] (z nawiasami) a>,a< VISUALe: rozszerz zaznaczenie o <...> (z nawiasami) aw VISUALe: rozszerz zaznaczenie o słowo ib,i),i( VISUALe: rozszerz zaznaczenie o (...) (bez nawiasów) iB,i},i{ VISUALe: rozszerz zaznaczenie o {...} (bez nawiasów) i],i[ VISUALe: rozszerz zaznaczenie o [...] (bez nawiasów) i>,i< VISUALe: rozszerz zaznaczenie o <...> (bez nawiasów) ^V ### Edycja (INSERT i komendy ':xxx'): wstaw znak o kodzie ### ^R @ Edycja: wstaw zawartość rejestru @ ^R ^O @ Edycja: wstaw zawartość rejestru @ i nie indentuj tego ^W Edycja: usuń słowo przed kursorem ^U Edycja: usuń znaki od początku wiersza do kursora (w linii poleceń czyści wszystko) ^T INSERT: wetnij tekst o szerokość shiftwidth ^D INSERT: skasuj wcięcie tekstu o szerokość shiftwidth ^U INSERT: skasuj znaki od początku wiersza do kursora ^Y INSERT: przepisz znak z poprzedniej linii ^E INSERT: przepisz znak z następnej linii ^P INSERT: autouzupełnienie następnym pasującym słowem w pliku ^N INSERT: autouzupełnienie poprzednim pasującym słowem w pliku ^O INSERT: tymczasowo wyjdź do trybu wydawania poleceń ^X INSERT: różne efekty: ^E przewijanie w dół ^Y przewijanie w górę ^L dokończenie linii z bufora ^] dokończenie nazwy znacznika ^F dokończenie nazwy pliku ^I dokończenie słowa z plików include ^K dokończenie słowa kluczowego ze słownika ^D dokończenie makra/definicji (#define ...) ^N dokończenie słowa z bufora (następne pasujące) ^P dokończenie słowa z bufora (poprzednie pasujące) ~ zmień case znaku pod kursorem i przesuń kursor g~~ zmień case całej linii gU [kier] zmień literę w kierunku [kier] na dużą gUU zamień litery w linii na duże gu [kier] zmień literę w kierunku [kier] na małą guu zamień litery w linii na małe :[range]copy [adr] skopiuj linie [ran] za linię [adr] :[range]move [adr] przesuń linie [ran] za linię [adr] zakresy: 1 linia 1 1,10 linie 1 do 10 ,10 stąd do linii 10 +1 jedna linia dalej % cały plik * widoczny fragment gq [kier] formatuje (obcina tekst do szerokości okna) linie wskazane przez kierunek [kier] gqgq, gqq formatuje aktualną linię :[ran]center [szer] centruje linie z zakresu [ran] (prawy margines na kolumnie [szer]) :[ran]right [szer] wyrównuje linie z zakresu do prawej (prawy margines na kolumnie [szer]) :[ran]left [ind] wyrównuje linie z zakresu do lewej (lewy margines na kolumnie [ind]) / wyszukaj następny tekst w pliku (bez argumentu powtarza do przodu ostatnie wyszukiwanie) ? wyszukaj poprzedni tekst w pliku (jw., tylko do tyłu) n następny znaleziony tekst N poprzedni znaleziony tekst * wyszukaj następny wyraz najbliższy kursorowi # wyszukaj poprzedni wyraz najbliższy kursorowi :nohl przestań podświetlać wyszukanie (aż do następnego szukania) :[ran]s/@1/@2 zamień pierwsze wystąpienie @1 w liniach [ran] na @2 :[ran]s/@1/@2/g zamień wszystkie wystąpienia @1 w liniach [ran] @1 na @2 :reg wyświetl zawartość wszystkich rejestrów (schowków) :reg [arg] wyświetl zawartość rejestru [arg] "x y[kier] kopiuj znak/zaznaczenie do rejestru x "x yy kopiuj całą linię do rejestru x "x x przenieś znak/zaznaczenie do rejestru x (coś jak wytnij) "x p wstaw zawartość rejestru x za kursorem "x P wstaw zawartość rejestru x przed kursorem (kursor za wstawieniem) "x gp wstaw rejestr x za kursorem i ustaw kursor za wstawieniem "x gP wstaw rejestr x przed kursorem i ustaw kursor za wstawieniem q [reg] zapisz wciskane klawisze do rejestru [reg], koniec na 'q' @ [reg] wykonaj klawisze z rejestru [reg] :let @[reg] = "text" ustaw zawartość rejestru [reg] na "text" rejestry: a-z 1-0 rejestry nazwane A-Z dopisz do rejestru o odpowiedniej małej literce " rejestr nienazwany (używany do wszystkiego) = rejestr artymetyczny (wpisujesz wyr. arytm., dostajesz jego wynik) ^W s zduplikuj aktywne okno (okno ma podany rozmiar) ^W v zduplikuj aktywne okno poziomo [n]^W ^ otwórz bufor alternatywny (lub n-ty) w nowym oknie [n]^^ edytuj w tym samym oknie bufor elternatywny (lub n-ty) ^W c zamknięcie aktualnego okna ^W n nowe okno z pustym buforem ^W [kier] przejście o zadaną ilość okien w kierunku [kier] ^W ^W przewijanie w dół, po ostatnim oknie pierwsze ^W o zamknięcie wszystkich pozostałych okien ^W p przejście do poprzednio używanego okna ^W r przewinięcie okien w dół (1-2, 2-3, 3-4 itd.) ^W R przewinięcie okien w górę (2-1, 3-2, 4-3 itd.) ^W x zamiana aktywnego okna z następnym ^W = wszystkie okna z jednakowym rozmiarem ^W + zwiększ rozmiar okna o zadaną ilość linii ^W - zmniejsz rozmiar okna o zadaną ilość linii ^W _ ustaw rozmiar okna na zadaną ilość linii z[n] ustaw rozmiar okna na zadaną ilość linii ^W ] zduplikuj aktywne okno i skocz do znacznika spod kursora (przydatne przy help-ie) :split to samo, co ^W s :split [#n|t] tworzy nowe okno z buforem o numerze bn lub nazwie t (przed numerem koniecznie znaczek '#') :close to samo, co ^W c :new to samo, co ^W n :resize [n] zmień rozmiar okna do [n] (względem obecnego: + i -) :ls listuje bufory :bdelete # usuwa bufor # :buffer # edytuje w aktualnym oknie bufor # :sbuffer # otwiera nowe okno i edytuje w nim bufor # :f [plik] znajdź (otwórz) plik nazwie [plik] :sf [plik] znajdź plik o nazwie [plik] i edytuj go w nowym oknie gf znajdź plik o nazwie pod kursorem ^W f znajdź plik o nazwie pod kursorem i edytuj go w nowym oknie :q[uit] wyjdź z vim-a :w[rite] zapisz bufor :wq,:x wyjdź z vim-a zapisaniem aktualnego bufora :qa,:wa,:xa operacja dla wszystkich buforów :e[dit] [f] załaduj plik [f] z dysku :[ran]w [f] zapisz linie [ran] do pliku o nazwie [f] :r[ead] [f] wstaw plik o nazwie [f] w następnej linii :set [opt]? pokaż wartość opcji [opt] :set [opt]& ustaw stan opcji na domyślny :set [opt] włącz opcję [opt] (opcje typu wł/wył) :set no[opt] wyłącz opcję [opt] (opcje typu wł/wył) :set [opt]! zmień stan opcji (opcje typu wł/wył) :set [opt]=[val] ustaw stan opcji na [val] (obsługuje przypisania złożone) :syntax [on/off] podświetlanie składniowe UŻYTECZNE OPCJE typu wł/wył (:set xxx / :set noxxx): is "incremental search" wyszukuje tekst przy każdym naciśnięciu klawisza ic "ignore case" nie rozróżnia małych i dużych liter hls "highlight search" nie podświetla znalezień ai "auto indent" autowcięcia cin "c indenting" dodatkowe wcięcia, specyficzne dla języka C/C++ si "smart indent" podobne do cin UŻYTECZNE OPCJE typu tekst (set xxx=wartosc): filetype=cpp, c, html, pl, js, php i inne (zmiana typu podświetlania składni) syntax = ON, OFF (wł/wył podświetlania składni) Fold to zwinięcie kilku linii tekstu w jedną linię zf[kier] utwórz fold zd usuń fold zc zamknij fold zo otwórz fold zR otwórz wszystkie foldy zM zamknij wszystkie foldy zj przejdź do początku następnego folda zk przejdź do końca poprzedniego folda [z przejdź do początku aktualnego folda ]z przejdź do końca aktualnego folda ----------------------------------------------------------------------------- Klawisze dla programisty C/C++: ^W d otwórz w nowym oknie miejsce #definiowania słowa [ ^D skocz do pierwszego #definiowania słowa [D wylistuj wszystkie wystąpienia #definicji słowa [d wypisz pierwsze wystąpienie #definicji słowa ^W i otwórz w nowym oknie miejsce zadeklarowania identyfikatora [ ^I skocz do pierwszego wystąpienia słowa [I wylistuj wszystkie wystąpienia słowa [i wypisz pierwsze wystąpienie słowa [( skocz do poprzedniego otwartego i nie zamkniętego nawiasu ]) skocz do następnego zamkniętego, a nie otwartego nawiasu gD skocz do deklaracji słowa w obecnym pliku gd skocz do deklaracji słowa w obecnej funkcji