Edycja
Z tekstem w Vimie można zrobić prawie wszystko.
Edycja
Wstawianie - przejście z trybu komend do trybu wstawiania:
- i - wstawianie tekstu przed kursorem
- I, _i - wstawianie tekstu od początku linii
- a - wstawianie tekstu za kursorem
- A - wstawianie tekstu na końcu linii
- o - dodanie pustej linii pod linią z kursorem
- O - dodanie pustej linii nad linią z kursorem
- Esc - powrót z trybu wstawiania do trybu komend
Zamiana:
- ~ - (tylda) zamiana małej litery na dużą i odwrotnie
- xp - zamiana dwóch sąsiadujących ze sobą znaków
- ddp - zamienia miejscami kolejne dwie linie: linie bieżącą z następną
- cw - zamienia słowo; kasowane są znaki począwszy od kursora do końca słowa i kursor ustawia się w tryb wstawiania
- c$, C - zamienia tekst od kursora do końca linii, kursor ustawia się w tryb wstawiania
- c5j - zamienia bieżącą linię i 5 linii w dół, kursor ustawia się w tryb wstawiania
- rx - nadpisuje (zastępuje) znak nad kursorem znakiem x
- Rnowy-tekstEsc - nadpisuje (zastępuje) tekst począwszy od znaku nad kursorem nowym-tekstem
Kasowanie i odzysk skasowanego:
Uwaga: Vi zapewnia automatyczne zapamiętywanie 10 ostatnich kasowań. Kasowania zapamiętywane są w buforach 1..10 (ostatnie kasowanie w buforze 1). Umożliwia to odzysk danych (komendy p i P).
- x - skasowanie znaku wyróżnionego kursorem
- 4x - skasowanie 4 znaków począwszy od znaku wyróżnionego kursorem
- X - skasowanie znaku sprzed znaku wyróżnionego kursorem
- dw - skasowanie znaków od kursora do końca słowa włączając spację
- de - skasowanie znaków od kursora do końca słowa wyłączając spację
- 2dw - skasowanie 2 słów
- dd - skasowanie bieżącej linii
- 5dd - skasowanie 5 linii począwszy od bieżącej
- d5j - skasowanie linii bieżącej i 5 linii w dół
- d$, D - skasowanie znaków do końca linii począwszy od znaku wyróżnionego kursorem
- d0 - (d zero) skasowanie znaków od początku linii do znaku wyróżnionego kursorem z pozostawieniem tego znaku
- d1G - skasowanie wszystkich linii od początku pliku aż do bieżącej linii
- dG - skasowanie wszystkich linii do końca pliku z bieżącą linią włącznie
- "add - skasowanie bieżącej linii i zapamiętanie jej w buforze a. Można użyć buforów a..z (np. "n10dd - skasuj 10 linii i zapamiętaj je w buforze n).
- "ap -wstawienie zawartości bufora a.
- p - wstawienie zawartości automatycznego bufora ZA kursorem. Jeśli ostatnią komendą było kasowanie, to p wstawi skasowany tekst.
- P - wstawienie zawartości automatycznego bufora PRZED kursorem.
- "1p - wstawienie zawartości automatycznego bufora 1 (cofnięcie ostatniego skasowania)
- di( - usuwanie zawartości w nawiasach, można też użyć np " (zawartość w cudzysłowie) lub t (zawartość pomiędzy tagami HTML).
Kopiowanie i wklejanie
- yy, Y - zapamiętanie bieżącej linii
- 3yy, 3Y - zapamiętanie 3 linii
- 3yl - zapamiętanie 3 znaków z prawej
- 3yh - zapamiętanie 3 znaków z lewej
- y5j - zapamiętanie linii bieżącej i 5 linii w dół
- p - wstawienie zawartości automatycznego bufora ZA kursorem. Jeśli ostatnią komendą było zapamiętanie, to p wstawi zapamiętany tekst.
- P - wstawienie zawartości automatycznego bufora PRZED kursorem.
- "ayy - zapamiętanie bieżącej linii w buforze a. Można użyć buforów a..z (np. "n10yy - zapamiętaj 10 linii w buforze n).
- "ap - wstawienie zawartości bufora a.
- yi( - kopiowanie zawartości w nawiasach, można też użyć np " (zawartość w cudzysłowie) lub t (zawartość pomiędzy tagami HTML).
Wyszukiwanie i zastępowanie:
- :s/stary/nowy - znajdowanie następnego wystąpienia tekstu 'stary' i zastąpienie go tekstem 'nowy'
- :s/stary/nowy/g - zastąpienie tekstu 'stary' na tekst 'nowy' w całej linii
- :x,ys/stary/nowy/g - zastąpienie tekstu 'stary' na tekst 'nowy' w liniach od x do y
- :%s/stary/nowy/g - zastąpienie BEZ potwierdzania tekstu 'stary' na tekst 'nowy' w całym pliku
- :%s/stary/nowy/gc - zastąpienie Z potwierdzaniem tekstu 'stary' na tekst 'nowy' w całym pliku
- \<text\> - wyszukiwanie tekstu 'text' jako całego wyrazu, \< oznacza początek, a \> koniec wyrazu w szukanym ciągu
Usuwanie i kopiowanie tekstu z wykorzystaniem mark'ów
- mx - (x- dowolna mała litera) oznakowanie markerem x miejsce w zbiorze, wskazane kursorem
- 'x - powracanie kursora do pozycji oznaczonej markerem x
- d'x - usunięcie bloku tekstu od linii oznaczonej markerem x do bieżącej pozycji kursora i przesłanie go do bufora tymczasowego, z którego można dokonać wklejenia tekstu używając komendy p
- y'x - skopiowanie bloku tekstu od linii oznaczonej markerem x do bieżącej pozycji kursora i przesłanie go do bufora tymczasowego, z którego można dokonać wklejenia tekstu używając komendy p
- :'a,'bm - kopiowanie oznakowanych linii od a do b za linię bieżącą
- :'a,'bd - usuwanie oznakowanych linii od a do b
- :'a,'by - kopiowanie oznakowanych linii od a do b do bufora automatycznego
Nagrywanie makr
- . - powtórzenie ostatniej czynności
- q{a-z} - rozpoczęcie nagrywania makro do bufora {a-z}
- q{A-Z} - rozpoczęcie nagrywania makro i dołączenie go do poprzedniego {a-z}
- q - zakończenie nagrywania
- N@{a-z} - wykonanie makra {a-z} N razy
- N@@ - wykonanie poprzednio wykonanego makra N razy
Visual Block ^V
- I - wstawienie na początek bloku
- A - wstawienie na koniec bloku
- r - zamiana liter w bloku na x
- u - zamiana na małe
- U - zamiana na duże
- ~ - duże na małe i na odwrót
- > - wstawienie tab
- gv - poprzednie zaznaczenie
Znaki specjalne i kody ASCII ^v w trybie edycji (edytor pod windows może działać inaczej)
- ^v + dowolny znak z klawiatury - zostanie przekazany kod sterujący
- ^v + liczba dziesiętna trzycyfrowa - np. sekwencja ^v065 wypisze A
- ga - sprawdzenie, jaki jest kod znaku pod kursorem
- :dig - wypisanie listy znaczków z odpowiednimi kodami
Różne:
- nu - cofnięcie ostatnich n poleceń
- U - cofnięcie wszystkich zmian w bieżącej linii (pod warunkiem, że po zmianach nie wychodziło się z tej linii
- Ctrl+R -cofnięcie cofnięcia
- . - powtórzenie ostatniego polecenia
- J - połączenie bieżącej linii z następną; łączenie linii, także w zaznaczonym obszarze
- gJ - to samo ale bez wstawiania spacji
- 5J - połączenie 5 kolejnych linii
- :rnazwa-pliku - wstawienie tekstu z pliku 'nazwa-pliku'
- CTRL+G - wyświetlenie na dole ekranu statusu pliku
- :! - przejście do wykonania poleceń systemowych
- F1, :help - pomoc on-line, powrót przez :q (:help w - opis polecenia w)
- :set number - numerowanie linii
- :set nonumber - kończy numerowanie linii
- :syntax on - podświetlanie słów kluczowych pliku
- :syntax off - wyłączenie podświetlania słów kluczowych pliku
- :f - wyświetlenie informacji o edytowanym pliku - jego nazwa, linia w której znajduje się kursor i liczba linii pliku
- n>> - przesunięcie n linii w prawo
- n<< - przesunięcie n linii w lewo
- :'a,'b>> - przesunięcie linii od znacznika a do b w prawo
- :r! polecenie - wstawianie do tekstu strumienia wyjściowego polecenia, np. chcemy wylistować katalog prosto do naszego pliku
- K - wyszukanie, jeśli jest dostępny, manuala na temat wyrazu pod kursorem
- ^g - podanie nazwy pliku, stanu i pozycji kursora
- g ^g - dokładne dane na temat pozycji kursora
- gf - edytowanie pliku, którego nazwa jest pod kursorem
- :r plik -wstawienie tekstu z pliku plik
- :ce - centrowanie linii
- :le - do lewej
- :ri - do prawej
- :pw - pokazanie aktualnego katalogu
- :cd - powrót do poprzedniego katalogu
- set equalprg=sort - potem sortować można zaznaczony obszar przez = equalprg=sort
Zamiast sort można podać inny program do obróbki tekstu np indent (indent jest domyślnym programem, służy do formatowania kodu np [ESC]ggvG= sformatuje nam cały kod ESC przechodzimy w tryb edycji, gg skok na górę v zaznaczanie G skok na dół = indent.