Otwarcie pliku main.c do edycji. Jeśli plik nie istniał, to vim przy pierwszym zapisaniu zmian go utworzy:
vim main.c
Vim może pracować w trybie komend (command mode) oraz w trybie wprowadzania (insert mode). W trybie wprowadzania na dole ekranu wyświetlony jest napis WPROWADZANIE a wszelkie wpisywane znaki trafiają do treści edytowanego pliku. Aby przejść w tryb komend z trybu wprowadzania, należy wcisnąć klawisz ESC. Aby przejść w tryb wprowadzania z trybu komend należy wcisnąć: a lub SHIFT+A lub i SHIFT+I
Zamknięcie edytora vim. Jeśli plik nie był zapisany przed wykonaniem tego polecenia,
to zmiany nie zostaną zapisane:
:q!
Wydanie poniższej komendy spowoduje, że po lewej stronie każdej linijki będzie wyświetlany jej numer porządkowy:
:set number
Wyłączenie numeracji wierszy:
:set nonumber
Usuwa znak spod pozycji kursora (w trybie komend):
x
Usuwa znak po lewej stronie bieżącej pozycji kursora (w trybie komend):
SHIFT+X
Usuwa znaki od pozycji kursora do końca bieżącego słowa (w trybie komend):
dw
Usuwa bieżącą linię (w trybie komend):
dd
Wycofanie ostatniej zmiany (w trybie komend):
u
Przywrócenie bieżącego wiersza do stanu sprzed edycji (w trybie komend):
SHIFT+U
Powtórzenie wycofanej zmiany (w trybie komend):
CTRL+R lub :redo
Wstawienie nowego wiersza w linijce pod kursorem, przemieszczenie do niej kursora i przełączenie w tryb edycji (w trybie komend):
o
Wstawienie nowego wiersza w linijce nad kursorem, przemieszczenie do niej kursora i przełączenie w tryb edycji (w trybie komend):
SHIFT+O
Usunięcie znaków od pozycji kursora do końca bieżącego słowa i przełączenie w tryb edycji (w trybie komend):
cw
Wstawienie w trybie wprowadzania znaku końca bieżącej strony:
CTRL+L
Zapisanie zmian i wyjście z edytora (w trybie komend):
ZZ lub :wq
Zapisanie zmian (w trybie komend):
:w
Zapisanie zmian do pliku o podanej nazwie (w trybie komend):
:w nazwa_pliku
Zapisanie zmian do pliku o podanej nazwie (w trybie komend). Jeśli plik już istnieje, to zostanie bezwarunkowo nadpisany
(o ile uprawnienia na to pozwalają):
:w! nazwa_pliku
Wyświetlenie dodatkowej linijki u dołu ekranu z informacją o nazwie pliku i współrzędnych położenia kursora (w trybie komend):
:set laststatus=2
Otwiera drugie okno dla edytowanego pliku (w trybie komend):
CTRL+W S
Przełącza się do okna o podanym numerze (w trybie komend):
CTRL+W numer, np. CTRL+W 2
Przełącza się do okna powyżej (w trybie komend):
CTRL+W STRZAŁKA_W_GÓRĘ
Przełącza się do okna poniżej (w trybie komend):
CTRL+W STRZAŁKA_W_DÓŁ
Zamknięcie bieżącego okna (w trybie komend):
CTRL+W Q
Otwiera nowy pusty dokument w nowym oknie (w trybie komend):
CTRL+W N
Wyświetla listę znalezionych w bieżącym katalogu plików wymiany (w shellu):
vim -r
Otwarcie pliku main.c wykorzystując plik wymiany main.c.swp (w shellu):
vim -r main.c
Przeniesienie kursora o jeden znak w prawo (w trybie komend):
STRZAŁKA_W_PRAWO lub l lub SPACJA
Przeniesienie kursora o jeden znak w lewo (w trybie komend):
STRZAŁKA_W_LEWO lub h
Przeniesienie kursora o 10 znaków w prawo (w trybie komend):
10STRZAŁKA_W_PRAWO lub 10l lub 10SPACJA
Przeniesienie kursora o 10 znaków w lewo (w trybie komend):
10STRZAŁKA_W_LEWO lub 10h
Przeniesienie kursora do kolejnego wystąpienia znaku i w bieżącym wierszu (w trybie komend):
fi
Przeniesienie kursora do poprzednego wystąpienia znaku i w bieżącym wierszu (w trybie komend):
Fi
Powtórzenie operacji wyszukiwania (f lub F) (w trybie komend):
;
Przeniesienie kursora do następnego słowa (znaki przestankowe traktowane są jako początek następnego słowa) (w trybie komend):
w
Przeniesienie kursora do następnego słowa oddzielonego białym znakiem (w trybie komend):
SHIFT+W
Przeniesienie kursora do poprzedniego słowa (znaki przestankowe traktowane są jako początek poprzedniego słowa) (w trybie komend):
b
Przeniesienie kursora do poprzedniego słowa oddzielonego białym znakiem (w trybie komend):
SHIFT+B
Przeniesienie kursora na koniec bieżącego/następnego słowa (znaki przestankowe traktowane są jako oddzielne słowo) (w trybie komend):
e
Przeniesienie kursora na koniec bieżącego/następnego słowa oddzielonego białym znakiem (w trybie komend):
SHIFT+E
Przeniesienie kursora na początek następnego wiersza (w trybie komend):
ENTER
Przeniesienie kursora o jeden wiersz w dół (w trybie komend):
j oraz STRZAŁKA_W_DÓŁ
Przeniesienie kursora o jeden wiersz do góry (w trybie komend):
k oraz STRZAŁKA_W_GÓRĘ
Przeniesienie kursora na początek poprzedniego wiersza (w trybie komend):
-
Przeniesienie kursora na początek następnego zdania (w trybie komend):
)
Przeniesienie kursora na początek następnego akapitu (w trybie komend):
}
Przeniesienie kursora na początek bieżącego/poprzedniego zdania (w trybie komend):
(
Przeniesienie kursora na początek bieżącego/poprzedniego akapitu (w trybie komend):
{
Przeniesienie kursora na początek pierwszego wiersza na ekranie (w trybie komend):
SHIFT+H
Przeniesienie kursora na początek środkowego wiersza na ekranie (w trybie komend):
SHIFT+M
Przeniesienie kursora na początek ostatniego wiersza na ekranie (w trybie komend):
SHIFT+L
Przewinięcie tekstu o pół ekranu w dół (w trybie komend):
CTRL+D
Przewinięcie tekstu o pół ekranu do góry (w trybie komend):
CTRL+U
Przewinięcie tekstu o cały ekranu w dół (bez jednej linijki) (w trybie komend):
CTRL+F lub PAGE_DOWN
Przewinięcie tekstu o cały ekranu do góry (bez jednej linijki) (w trybie komend):
CTRL+B lub PAGE_UP
Przeniesienie kursora do ostatniego wiersza dokumentu (w trybie komend):
SHIFT+G
Przeniesienie kursora do 10 wiersza dokumentu (w trybie komend):
10SHIFT+G
Zastąpienie bieżącego znaku (w trybie komend):
r nowy_znak
Zastępowanie bieżącego tekstu nowymi znakami aż do naciśnięcia klawisza ESC (w trybie komend oraz edycji):
SHIFT+R nowy_tekst
Usuwa bieżącą i następną linię (w trybie komend):
d Enter
Zamiana znaków miejscami (w trybie komend):
xp
Zamiana dwóch linii miejscami (w trybie komend):
ddp
Usunięcie bieżącego znaku (w trybie komend):
dl
Usunięcie znaków od początku wiersza do bieżącego znaku (w trybie komend):
d0
Usunięcie znaków począwszy od pierwszego nie białego znaku w bieżącej linii do bieżącego znaku (w trybie komend):
d^
Usunięcie znaków od bieżącej pozycji do początku następnego słowa (w trybie komend):
dw
Usunięcie znaków od bieżącej pozycji do początku 3 słowa (w trybie komend):
d2w
Usunięcie znaków od bieżącej pozycji do początku następnego słowa (rozdzielonego białym znakiem) (w trybie komend):
dSHIFT+W
Usunięcie znaków od bieżącej pozycji do początku bieżącego słowa (w trybie komend):
db
Usunięcie znaków od bieżącej pozycji do początku bieżącego słowa (rozdzielonego białym znakiem) (w trybie komend):
dSHIFT+B
Usunięcie od drugiego słowa rozdzielonego białym znakiem przed bieżącym położeniem kursora do jego bieżącej pozycji (w trybie komend):
d2SHIFT+B
Usunięcie znaków od bieżącej pozycji kursora do końca zdania (w trybie komend):
d)
Usunięcie znaków od początku bieżącego zdania do bieżącej pozycji (w trybie komend):
d(
Usunięcie znaków od bieżącej pozycji kursora do końca akapitu (w trybie komend):
d}
Usunięcie znaków od początku bieżącego akapitu do bieżącej pozycji (w trybie komend):
d{
Usunięcie znaków od bieżącej pozycji do następnego wystąpienia podanego tekstu (w trybie komend):
d/napis
Usunięcie znaków od bieżącej pozycji kursora do następnego wystąpienia znaku 'i' włącznie z tym znakiem (w trybie komend):
dfi
Usunięcie znaków od bieżącej pozycji kursora do następnego wystąpienia znaku 'i' bez tego znaku (w trybie komend):
dti
Usunięcie znaków od bieżącej pozycji kursora do końca linii (w trybie komend):
SHIFT+D
Usunięcie znaków od bieżącej pozycji kursora do końca linii (w trybie komend):
d$
Usunięcie bieżącego wiersza (w trybie komend):
dd
Usunięcie wierszy od bieżącego do ostatniego widocznego na ekranie (w trybie komend):
dSHIFT+L
Usunięcie wierszy od pierwszego widocznego na ekranie do bieżącego włącznie (w trybie komend):
dSHIFT+H
Usunięcie wierszy od bieżącego włącznie do końca pliku (w trybie komend):
dSHIFT+G
Usunięcie wierszy od pierwszego wiersza w pliku do bieżącego włącznie (w trybie komend):
d1SHIFT+G
Usunięcie tekstu począwszy od bieżącego znaku aż do 4 wystąpienia znaku 'i' w bieżącej linii (w trybie komend):
d4fi
Usunięcie bieżącego znaku i przejście w tryb edycji w jego miejscu (w trybie komend):
s
Usunięcie wszystkich znaków w bieżącej linii i przejście w tryb edycji na początku tej linii (w trybie komend):
SHIFT+S
Usunięcie 4 znaków począwszy od bieżącego i przejście w tryb edycji w ich miejscu (w trybie komend):
4s
Jeśli bieżący znak jest literą, to zamienia go w literę przeciwnej wielkości (małą lub dużą) i przechodzi do następnego znaku.
Jeśli bieżący znak nie jest literą, to przechodzi do następnego znaku. (w trybie komend):
~
Zamienia 4 kolejne litery na litery przeciwnej wielkości i przechodzi do następującego po nich znaku. Nie zmienia żadnych znaków
nie będących literami. (w trybie komend):
4~
Wyszukuje do przodu podany tekst i pozycjonuje kursor na jego początku (tekst jest wyrażeniem regularnym) (w trybie komend):
/tekst
Wyszukuje do tyłu podany tekst i pozycjonuje kursor na jego początku (tekst jest wyrażeniem regularnym) (w trybie komend):
?tekst
Powtórzenie ostatniej operacji wyszukiwania (w trybie komend):
n
Powtórzenie ostatniej operacji wyszukiwania w kierunku przeciwnym (w trybie komend):
SHIFT+N
Włączenie wyszukiwania przyrostowego (polega ono na tym, że vim podświetla pierwsze znalezione - do przodu '/' lub do tyłu '?' - słowo
w miarę wprowadzania kolejnych znaków) (w trybie komend):
:set incsearch
Wyłączenie wyszukiwania przyrostowego (w trybie komend):
:set noincsearch
:[g][gdzie]s/tekst-szukany/nowy-tekst[/opcja] - zastępuje łańcuch znaków tekst-szukany łańcuchem znaków
nowy-tekst we wszystkich liniach ([g]) pasujących do warunku [gdzie], np (w trybie komend):
:5s/tekst-szukany/nowy-tekst - zastępuje w 5 linii
:5,10s/tekst-szukany/nowy-tekst - zastępuje w liniach od 5 do 10 włącznie
:5,.s/tekst-szukany/nowy-tekst - zastępuje w liniach od 5 do bieżącej włącznie
:5,$s/tekst-szukany/nowy-tekst - zastępuje w liniach od 5 do ostatniej włącznie
:1,$s/tekst-szukany/nowy-tekst - zastępuje w całym pliku
:%s/tekst-szukany/nowy-tekst - zastępuje w całym pliku
:/napis/s/tekst-szukany/nowy-tekst - zastępuje w kolejnej linii zawierającej słowo napis
:.,+4s/tekst-szukany/nowy-tekst - zastępuje w kolejnych 4 liniach począwszy od bieżącej (w sumie w 5 liniach)
:g/napis/s/tekst-szukany/nowy-tekst - zastępuje we wszystkich liniach zawierających słowo napis (tylko pierwsze wystąpienie w danej linii)
:g/napis/s/tekst-szukany/nowy-tekst/g - zastępuje we wszystkich liniach zawierających słowo napis (wszystkie wystąpienia w danej linii)
:g/napis/s/tekst-szukany/nowy-tekst/c - zastępuje we wszystkich liniach zawierających słowo napis (tylko pierwsze wystąpienie w danej linii).
Przed każdym zastąpieniem pyta o potwierdzenie, można odpowiedzieć:
Łączy bieżącą linię z linią następną przez doklejenie następnej linii do bieżącej, wstawienie spacji między nimi i ustawienie
kursora na tej spacji. Jeśli bieżąca linia kończy się kropką, to wstawiane są dwie spacje. (w trybie komend):
SHIFT+J
Wyświetla informacje o edytowanym pliku: nazwę pliku, informację o tym czy plik jest zmodyfikowany lub czy jest tylko do odczytu,
ilość wierszy oraz procentową pozycję w pliku. (w trybie komend):
CTRL+G lub :f
Powtórzenie ostatniej operacji modyfikującej plik (w trybie komend):
.
Skopiowanie znaków od bieżącego miejsca do końca bieżącego słowa i umieszczenie ich w buforze ogólnego przeznaczenia. Następnie można
wkleić zawartość tego bufora w innym miejscu pliku poleceniem p. Polecenie y ma taką samą składnię jak
polecenie d opisane powyżej. (w trybie komend):
yw
Skopiowanie do bufora ogólnego przeznaczenia bieżącej linii (w trybie komend):
yy lub SHIFT+Y
Wstawia po bieżącym znaku zawartość bufora ogólnego przeznaczenia (w trybie komend):
p
Wstawia przed bieżącym znakiem, zawartość bufora ogólnego przeznaczenia (w trybie komend):
SHIFT+P
Bufory nazwane mają identyfikatory z liter alfabetu: a-z.
Skopiowanie tekstu do bufora nazwanego a oraz bufora ogólnego przeznaczenia można wykonać następująco (w trybie komend):
"ayy
Wklejenie tekstu z bufora nazwanego a (w trybie komend):
"ap
Dalsze operacje kopiowania/wycinania tekstu przeprowadzone na buforze ogólnego przeznaczenia powodują zmianę tylko tego bufora - bufor
nazwany a (oraz żaden inny bufor nazwany) pozostaje nie zmodyfikowany.
W vimie są także bufory ponumerowane o nazwach od 1 do 9. Są to bufory tylko do odczytu - przechowują ostatnio usunięte fragmenty tekstu
o długości co najmniej jednego wiersza. Ostatnio usunięty tekst jest przchowywany w buforze o numerze 1, przedostatnio usunięty tekst - w
buforze o numerze 2, itd. Wstawienie zawartości bufora 1 (w trybie komend):
"1p
Wczytanie podanego pliku i wstawienie jego zawartości pod bieżącą linijką (bieżąca zawartość vima nie jest usuwana) (w trybie komend):
:r nazwa_pliku.txt
Wczytanie podanego pliku i wstawienie jego zawartości pod linijką o podanym numerze (bieżąca zawartość vima nie jest usuwana) (w trybie komend):
:[numer_linijki]r nazwa_pliku.txt
Dopisanie tekstu w edytorze vim do pliku o podanej nazwie (tekst jest doklejany na jego końcu) (w trybie komend):
:w>> nazwa_pliku.txt
Ustawienie znacznika a w bieżącej linii (w trybie komend):
ma
Przeskok na początek linijki zawierającej znacznik a (w trybie komend):
'a
Usuwa tekst od bieżącego miejsca do znacznika a (w trybie komend):
d'a
Rozpoczęcie nowej sesji edycji bieżącego pliku. Wszystkie zmiany od ostatniego zapisu pliku zostają utracone.
Bufor ogólnego przeznaczenia, bufory nazwane oraz bufory numerowane pozostają nietknięte (w trybie komend):
:e!
Rozpoczęcie nowej sesji edycji podanego pliku. Wszystkie zmiany od ostatniego zapisu bieżącego pliku zostają utracone.
Bufor ogólnego przeznaczenia, bufory nazwane oraz bufory numerowane pozostają nietknięte (w trybie komend):
:e! nazwa_pliku.txt
Zamyka bieżący plik i otwiera plik ostatnio edytowany (w trybie komend):
:e#
Utworzenie skrótu tekstowego (w trybie komend):
:abbrev WS Witaj świecie!
Od teraz ilekroć w trybie edycji zostanie wpisany skrót WS wraz z następującą po nim spacją, to zostanie on
zastąpiony tekstem "Witaj świecie!" (bez cudzysłowów).
Wykonanie polecenia powłoki i wklejenie jego wyjścia do aktualnej linii (jest ona zastępowana nową zawartością) (w trybie komend):
!! polecenie_powłoki
Posortowanie listy imion:
Marcin
Przechodzimy na początek linii Marcin i ustawiamy znacznik i (w trybie komend):
Antek
Paweł
Bartek
Janusz
mi
Następnie przechodzimy do linijki Janusz i wykonujemy polecenie (w trybie komend):
!'isort