Laboratorium Komputerowe Progmar
Marcin Załęczny

Na stronie używamy cookies. Korzystając z witryny wyrażasz zgodę na ich wykorzystywanie.      Zamknij

Edytor Vim - komendy i skróty klawiaturowe

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ć:

  • y - wykonuje zastąpienie
  • q - przerywa działanie operacji zastępowania
  • l - wykonuje zastąpienie i przerywa działanie operacji zastępowania
  • a - wykonuje zastąpienie wszystkich kolejnych znalezionych dopasowań
  • n - pomija bieżące dopasowanie i szuka następnego

Łą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
Antek
Paweł
Bartek
Janusz
Przechodzimy na początek linii Marcin i ustawiamy znacznik i (w trybie komend): mi Następnie przechodzimy do linijki Janusz i wykonujemy polecenie (w trybie komend): !'isort