Edycja

by Paweł Paduch published 2018/12/10 18:49:51 GMT+2, last modified 2018-12-10T18:49:51+02:00
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.