Start/microHowto/Samouczek - edytor vi

Samouczek edytora vi Wysłano dnia 22-08-2002 o godz. 10:51:45 przez LiNiO

Tekst jest tłumaczeniem mikro-manuala vi, znajdującego się na stronie http://www.navigare.org/vi-muman.uk. Autorem jest Massimo Pilolli. Tłumaczenie Robert "LiNiO" Litwiniec.



  vi-muman       interaktywny mikro-podręcznik dla nowych użytkowników vi
................................................................................
Zalecam otwarcie tego pliku w trybie "tylko do odczytu". W tym celu wpisz
w linii komend (DOKŁADNIE):
vi -Readonly vi-muman.pl

gdzie: -Readonly (duża litera R) jest opcją "tylko do oczytu", która uchroni
ten plik przed modyfikacjami; vi-muman.pl jest nazwą tego pliku.

^^^^^^^^^^^^^^^^^^^^      ZAPAMIĘTAJ LUB ZAPISZ SOBIE!      ^^^^^^^^^^^^^^^^^^^^

ABY OPUŚCIĆ vi      wciśnij kolejno następujące klawisze      [ESC] :q [ENTER]

gdzie: [ESC] jest klawiszem umieszczonym w lewym górnym rogu klawiatury a
[ENTER] jest to klawisz oznaczony jako ENTER (lub RETURN).
Pamiętaj, aby po wciśnięciu klawisza natychmiast zdjąć z niego palec.
Zanim wciśniesz klawisz [ENTER] powinna się pojawić następująca linia:
:q

Rozkaz ten (quit - wyjdź) pojawi się w ostatnim wierszu ekranu.
Jeśli po wydaniu powyższego polecenia nie uda się opuścić edytora, wciśnij
[ESC] :q! [ENTER]
Spowoduje to bezwarunkowe opuszczenie edytora (quit! - wyjdź!) bez zapisu
dokonanych w nim modyfikacji. Teraz możesz ponownie otworzyć ten plik
w edytorze (w trybie tylko do oczytu). Pamiętaj, aby nie wciskać klawiszy
w sposób przypadkowy (każdy klawisz ma przypisane jakieś polecenie).
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Aby przejść o 1 stronę DO PRZODU:  [CTRL] f   (trzymając [CTRL] wciśnij f)
Aby przejść o 1 stronę DO TYŁU:    [CTRL] b   (f oznacza Forward (naprzód),
                                               b Backward - wstecz)










(dalej)










Zrobione!



Ćwiczenia:
 a - cofnij się do poprzedniej strony a następnie wróć tutaj z powrotem.
 b - wyjdź z tego podręcznika (jeśli nie pamiętasz jak: cofnij się i sprawdź!)
     i otwórz go ponownie w vi, nie zapominając o opcji "tylko do odczytu":
     Jeśli nie pamiętasz jak to zrobić, cofnij się do początku i zapamiętaj to
     (raczej postaraj się to zapamiętać, niż zapisywać)
 c - wykonuj ćwiczenia a i b dotąd, aż osiągniesz wystarczająca praktykę

UWAGA 1: w podręczniku tym jest dużo ćwiczeń:
         aby zapobiec uszkodzeniu tego pliku pamiętaj, aby otworzyć go
         z opcją vi "tylko do odczytu".

UWAGA 2: pomysł, aby zamiast tego nie wykonywać ćwiczeń jest jeszcze gorszy.

________________________________________________________________________________

 SPIS TREŚCI
________________________________________________________________________________
 0  WPROWADZENIE
    0.0 CZYM jest vi?
    0.1 DLACZEGO warto uczyć się vi?
    0.2 JAK się uczyć vi?

 1  ZACZYNAMY
    1.0 Krok pierwszy: TRYB POLECEŃ i TRYB WSTAWIANIA
    1.1 Podstawowe polecenia
    1.2 Przemieszczanie się
    1.3 Do roboty!
    1.4 Wyszukiwanie tekstu
    1.5 Polecenia set

 2  INFORMACJE DODATKOWE
    2.0 Pozostałe polecenia
    2.1 Zamiana tekstów
    2.2 Zapisywanie plików
    2.3 Odczyt innych plików
    2.4 Otwieranie kilku plików jednocześnie
    2.5 Otwieranie plików w trybie tylko do odczytu
    2.6 Polecenia powłoki
    2.7 Daj mi powłokę!
    2.8 Makropolecenia
________________________________________________________________________________

*** 0  WPROWADZENIE


 -- 0.0 CZYM jest vi?

vi (pisany małymi literami) jest edytorem tekstów (oprogramowaniem)
umożliwiającym zapis i modyfikację plików tekstowych.


 -- 0.1 DLACZEGO warto uczyć się vi?

Dlaczego warto poświęcić czas na naukę niezbyt łatwgo edytora tekstowego,
takiego jak vi, gdy istnieje tak wiele innych, łatwiejszych i bardziej
przyjaznych edytorów?
Istnieje kilka dobrych powodów:
 a - vi jest jedynym edytorem tekstowym, który na pewno znajdziesz na każdym
     komputerze z systemem UNIX/Linux;
 b - vi umożliwia edycję bardzo wielkich plików;
 c - vi posiada wyjątkowo duże możliwości;
 d - vi pozawla na szybkie i efektywne wykonanie wielu złożonych operacji.


 -- 0.2 JAK się uczyć vi?

Stopniowo. Błędem jest próba nauczenia się wszystkiego naraz:
w vi możesz zrobić wiele rzeczy, ale w rzeczywistości pracę można rozpocząć
znając niewielką liczbę poleceń.

Często łatwiej jest zapamiętać jednoliterowe polecenia, jeśli zauważysz,
że w większości przypadków litera taka jest pierwszą literą słowa w języku
angielskim, związanego w jakiś sposób z tym skrótem.



*** 1  ZACZYNAMY


 -- 1.0 Krok pierwszy: TRYB POLECEŃ i TRYB WSTAWIANIA

Należy sobie uzmysłowić, że vi pracuje w dwóch trybach:
TRYBIE POLECEŃ i TRYBIE WSTAWIANIA:
* w trybie poleceń wydajesz polecenia mówiące, co chcesz zrobić;
* w trybie wstawiania wpisujesz tekst do pliku, który aktualnie edytujesz.

Pyt- "Czy w pierwszych ćwiczeniach, które wykonywałem (wyjście z edytora,
      przejście do następnego i poprzedniego ekranu) wydawałem polecenia?"
Odp- Tak.
Pyt- "Po co to całe zamieszanie z trybem poleceń i wstawiania?"
Odp- W rzeczywistości ułatwia to bardzo pracę, szczególnie gdy pracujesz
     w środowisku znakowym.
Pyt- "Jak mogę się przełączać pomiędzy trybami poleceń i wstawiania?"
Odp- Aby się przełączyć z trybu wstawiania do trybu poleceń wciśnij [ESC].
     Aby dowiedzieć się, jak przełączyć się z powrotem do trybu wstawiania,
     przeczytaj rozdział 1.1


 -- 1.1 Podstawowe polecenia

INFORMACJA 0: w celu wydania POLECENIA, musisz być w TRYBIE POLECEŃ (stąd nazwa)
              W przypadku wątpliwości wciśnij klawisz [ESC].

Następujące polecenia przełączają z trybu poleceń do trybu wstawiania
(masz możliwość wstawiania tekstu).

iTekst  (insert)   wstawia łańcuch znaków "Tekst" zaczynając od pozycji kursora
aTekst  (append)   dodaje łańcuch znaków "Tekst"

oTekst  (open)     otwiera nowa pustą linię poniżej kursora i wstawia "Tekst"
OTekst  (open)     otwiera nowa pustą linię powyżej kursora i wstawia "Tekst"

INFORMACJA 1: vi rozróżnia wielkość liter.
INFORMACJA 2: gdy skończysz pisać odpowiedni tekst, musisz o tym poinformować
              vi, w przeciwnym wypadku pozostaniesz 'in aeterno' (na zawsze)
              w trybie wstawiania.

Pyt- "Jak wyjść z trybu wstawiania?"
Odp- Wciśnij klawisz [ESC]
Pyt- "To przełączy mnie do trybu poleceń?"
Odp- Dokładnie. Nie ma innych trybów: jest albo tryb poleceń, albo wstawiania.

INFORMACJA 3: Polecenia rozpoczynające się znakiem ":" pojawiają w ostatniej
              linii ekranu i wymagaja potwierdzenia klawiszem [ENTER].
              Pozostałe polecenia nie pojawiają się na ekranie.

Następujące polecenia również są często używane (pozostajesz w trybie poleceń):
J             (join)        łączy aktualną linię z następująca po niej
x                           usuwa znak, na którym znajduje się kursor
u             (undo)        cofa ostatnią modyfikację...
.                           ... powtarza ostatnią modyfikację

:w            (write)       zapisuje aktualny plik (ten, który edytujesz)

:w innyplik                 zapisuje zawartość do nowego pliku o nazwie
                            "innyplik"
:e innyplik                 wczytuje do edycji plik "innyplik"

:q            (quit)        wyjście; jeśli nie zachowałeś na dysku zmian,
                            zostaniesz poproszony o potwierdzenie
:q!           (quit!)       wyjście bez zapisywania ostatnich modyfikacji
:wq           (write quit)  zapisz i wyjdź

:7                          przemieszcza kursor do początku siódmej linii
G                           przemieszcza kursor do końca pliku

dd            (delete)      usuwa aktualną linię

Ćwiczenia:
 a - przejdź do linii numer 98, a następnie do linii 206
 b - przejdź do końca pliku używając polecenia G, a następnie wróc do linii 207
 c - (inne ćwiczenia możesz znaleźć na końcu rozdziału 1.3, ale zalecane jest
     wcześniejsze przeczytanie rozdziału 1.2)


 -- 1.2 Przemieszczanie się

Pyt- "Jak mogę wpisać tekst, tam gdzie ja chcę, a nie tam gdzie chce vi?"
Odp- Przesuwając kursor w obrębie pliku. Klawisze, które w trybie poleceń mogą
     zostać użyte, to:

h          przesuwa kursor w lewo...
j          ...w dół
k          ...do góry
l          ...w prawo

Zapraszamy do wykonania eksperymentów. Oczywiście, jeśli użyjesz powyższych
klawiszy w trybie wstawiania, zobaczysz jak do pliku wpisywane są znaki
hhjjjjjkkkllll...

Pyt- "Ale ja nigdy nie zapamiętam tych wszystkich poleceń!"
Odp- Spokojnie. Ponieważ wydaje mi się, że próbujesz używać klawiszy kursora
     (być może to działa, ale któż to wie!), chcę ci powiedzieć, że nie jest to
     najlepszym pomysłem: klawisze kursora nie zawsze działają.
Pyt- "Dobrze, więc je zapiszę..."
Odp- Chwileczkę. Zauważ, że klawisze hjkl są na klawiaturze ułożone kolejno.
     Klawisz "j" odnosi się do ruchu w dół; "k" - do góry; "h" jest z tej grupy
     najbardziej w lewo wysuniętym klawiszem (spójrz na klawiaturę);
     "l" najbardziej w prawo.

Do szybszego przemieszczania kursora istnieją także inne polecenia:
w             (word)    przesuwa kursor do początku następnego słowa
b         (backward)    przesuwa kursor do początku poprzedniego słowa
e              (end)    przesuwa kursor na koniec następnego słowa

Ćwiczenia:
 a - sprawdź następujące klawisze: w, b, e, h, j, k, l


 -- 1.3 Do roboty!

Zaczynamy zabawę z vi!
Staraj się pamiętać, w którym trybie jesteś: jeśli nie jesteś tego pewien,
wciśnij [ESC], a przejdziesz do trybu poleceń.

Ćwiczenia:
 a - zapisz zawartość aktualnego pliku do pliku o nazwie junk.txt
 b - zapisz zawartość aktualnego pliku również do pliku o nazwie garbage.txt
 c - przejdź do edycji pliku junk.txt wychodząc wcześniej z edycji aktualnego
     pliku: wpisz z linii komend powłoki:
       vi junk.txt
     tym razem nie używaj opcji -Readonly, dzięki czemu będziesz miał pełną
     kontrolę nad plikiem junk.txt: wyszalej się na tym pliku, wykonując
     następujące ćwiczenia
 d - próbuj tworzyć nowe linie (poniżej/powyżej kursora)
 e - dodaj tekst używając poleceń "a" oraz "i": jakie są różnice?
 f - co się stanie, gdy w trybie WSTAWIANIA wciśniesz klawisz [ENTER] ?
 g - zachowaj plik junk.txt
 h - przenieś w dowolne miejsce kursor używając klawiszy h, j, k, l: działają?
     (pamiętasz, że możesz je używać wyłącznie w trybie poleceń?
     Jeśli nie jesteś pewnien, zawsze możesz wcisnąć klawisz [ESC])
 i - przejdź do edycji pliku garbage.txt BEZ WYCHODZENIA z edycji pliku
     junk.txt: użyj polecenia
       :e garbage.txt
     i zamieszaj w nim wykonując następujące eksperymenty:
 j - połącz dwie linie (pamiętasz jakim poleceniem?)
 k - załóżmy, że połączyłeś złe linie: cofnij modyfikacje
 l - co stanie się, gdy spróbujesz cofnąć cofniętą zmianę?
 m - usuń jeden lub kilka znaków
 n - dodaj dwie linie tekstu
 o - spróbuj wykonać ćwiczenie "n" używając polecenia "."
 p - spróbuj usunąć linie używając polecenia "dd"
 q - kontynuuj ćwiczenia (w jednym z dwóch plików junk.txt lub garbage.txt)
     dotąd, aż swobodnie będziesz potrafić wykonywać powyższe ćwiczenia.


Dobrze, a co z tworzeniem nowych plików?
Jeżeli masz dostęp do innego okna (lub konsoli) z linią poleceń powłoki wpisz
(jeśli nie masz dostępu, najpierw wyjdź z edycji tego pliku):

vi filename

(Chociaż jest to możliwe, nie jest zbyt dobrym pomysłem edycja tego samego
pliku w dwóch różnych miejscach: nazwa pliku powinna więc różnić się od nazwy
TEGO pliku)

Pamiętaj, że NIE OTWIERASZ pliku z opcją "-Readonly".
Jeśli plik ten już istnieje (a ty nie troszczysz się zbytnio o jego zawartość)
możesz uszkodzić jego zawartość poprzez eksperymenty.
Jeśli plik ten jest nowy (zalecane), zauważysz, że...

Pyt- "Co to za dziwne znaczki, znajdujące się na początku każdej linijki?"
Odp- znaczki te to 'tyldy', pokazujące koniec pliku. Widziałeś je również
   na końcu tego pliku. Jeśli twój plik jest pusty, zobaczysz same tyldy:
~
~
~
~


Ćwiczenia:
 a - powtórz niektóre z powyższych ćwiczeń (a-q), a w szczególności:
 b - wstaw dowolny tekst w dowolnym miejscu
 c - tak przy okazji: czy działają polecenia h, j, k, l wówczas, gdy są tam
     znaki "~"? (nie chodzi o znajdujące się powyżej 4 znaki "~", ale o te na
     końcu pliku)


 -- 1.4 Wyszukiwanie tekstu

Aby znaleźć tekst "per exemplum" wpisz (teraz!) polecenie:
/per exemplum

Polecenie to pojawi się w ostatniej linii ekranu. Jeśli tak się nie stanie,
nie jesteś w trybie poleceń (więc wciśnij [ESC], aby do niego przejść).

aby znaleźć następne wystąpienie wydaj polecnie
n      (next - następne)

aby znaleźć poprzednie wystąpienie wciśnij
N

Szukanie wstecz jest identyczne, ale używa się
?per exemplum

wtedy też zostaje zamienione znaczenie poleceń n i N.

Ćwiczenia:
 a - znajdź wszystkie wystąpienia tekstu 'per exemplum' w tym pliku używając
     polecenia '/' i powtarzając wyszukiwanie przy pomocy 'n' oraz 'N'

 b - powtórz ćwiczenie "a" używając poleceń '?', 'n' oraz 'N'

Wkrótce zauważysz, że wpisanie
/PER EXEMPLUM

lub
/per eXemplum

nie jest róważne wpisaniu
/per exemplum

Ta cecha vi wynika z faktu, że systemy UNIX rozróżniają wielkość liter.
W pierwszej chwili wydaje się to irytujące, ale w rzeczywistości jest to bardzo
wygodne.

Teraz sprbuj wpisać
/per e.emplum

Zauważ, że zostanie znalezione zarówno "per exemplum" jak i "per eXemplum"
(nawet znajdziesz tekst "per eZemplum"), ale nie "PER EXEMPLUM".

Kropka oznacza więc (przy wyszukiwaniu) dowolny znak.

Pyt- "A jeśli zechcę znaleźć tekst 'per e.emplum'?"
Odp- Spróbuj
/per e.emplum

Ogólnie mówiąc, istnieją znaki specjalne, traktowane przez vi w szczególny
sposób. Aby vi znaki te potraktował w sposób standardowy, wystarczy przed nimi
wstawić znak ''.

Na przykład: znak "*" również jest znakiem specjalnym; aby znaleźć początek
każdego rozdziału oznaczony jako '***', wpisz:
/***

Pyt- "Co stanie się, jeśli przez lenistwo wpiszę:"
/**
Odp- Sprawdź. Jak sam widzisz lenistwo nie opłaca się. Ponieważ sam jestem
     leniwy, proponuję ci sprawdzenie następującego wyrażenia:
/**

Pyt- "Przecież to to samo!"
Odp- Nie, po ostatniej gwiazdce została dodana spacja. Sprawdź to (aby wrócić
     do tego miejsca poszukaj tekstu 'Przecież to to samo').
     W edytorze vi możesz zobaczyć ukryte znaki: jeśli zainsteresowało cię to,
     poszukaj tekstu 'Polecenia set'

Pyt- "Czy również '' jest znakiem specjalnym?"
Odp- Tak. Spróbuj znaleźć tekst 'per e.emplum'. Zanim się wkurzysz, wpisz
/per e.emplum

'/' jest również znakiem specjalnym: aby znaleźć '/' musisz wpisać
//


Ćwiczenia:
 a - znajdź tekst '***' i 'per e.emplum'
 b - znajdź początek każdego paragrafu, oznaczonego przy pomocy '--', ale tak
     aby nie zostało odnalezione to ćwiczenie. Czy '-' jest znakiem specjalnym?
 c - znajdź tekst "--" znajdujący się w poprzednim ćwieczeniu, ale tak aby nie
     został odnaleziony żaden paragraf ani to ćwiczenie.
     Czy apostrof (') jest znakiem specjalnym? Czy cudzysłów jest?
 d - Co stanie się, jeśli uruchomisz następujące wyszukiwanie? (Sprawdź!)
/... .X......
/... .X
/.....X
     Czy ostatni ciąg wyszukujący różni się od przedostatniego?
 e - znajdź tekst '../images' bez odnajdywania './somedir/images'


 -- 1.5 Polecenia set

iAby zobaczyć znaki ukryte spróbuj (w trybie poleceń) wpisać
:set list

Znaki '$', które właśnie się pojawiły pokazują koniec każdej linii
i ewentualnie spacje (tak jak na końcu tej linii).
Aby cofnąć to polecenie, wpisz:
:set nolist

Aby włączyć (lub wyłączyć) numerację linii, wpisz:
:set number
:set nonumber

Aby widzieć (lub nie) tryb, w jakim aktualnie znajduje się vi
(tekst pojawiający się na dole ekranu)
:set showmode
:set noshowmode

Ponieważ vi słynie raczej z krótkich poleceń, istnieją również krótsza składnia
(posiadająca to samo znaczenie):
:set li
:set noli
:set nu
:set nonu
:set smd
:set nosmd

Ćwiczenia:
 a - Sprawdź, co stanie się, gdy wpiszesz:
:set nu li smd
:set nu noli smd



*** 2  INFORMACJE DODATKOWE


 -- 2.0 Pozostałe polecenia

Następujace polecenia tak naprawdę nie są niezbędne: będziesz się ich uczył
krok po kroku, ale powinieneś mieć świadomość ich istnienia.

ITekst   (insert)  wstawia ciąg "Tekst" na początku aktualnej linii
ATekst   (append)  dodaje ciąg "Tekst" na końcu aktualnej linii

dw       (delete word)   usuwa aktualne słowo, poczynając od pozycji kursora
                         (pozostajesz w trybie poleceń)
cw       (change word)   zamienia aktualne słowo, poczynając od pozycji kursora
                         (przełącza w tryb wstawiania)
5dw                      usuwa 5 słów
5cw                      zmienia 5 słów

s        (substitute)    zamienia znak, wskazywany przez kursor
                         (przełącza w tryb wstawiania)
5s                       zamienia 5 znaków poczynając od pozycji kursora

x                        usuwa znak wskazywany przez kursor
5x                       usuwa 5 znaków poczynając od pozycji kursora

dd       (delete)        usuwa aktualną linię
5dd                      usuwa 5 linii, zaczynając od linii bieżącej
:18,22d                  usuwa 5 linii (od 18 do 22 włącznie)
D                        usuwa tekst od pozycji kursora do końca linii

cc       (change)        zmienia tekst w aktualnej linii (kasuje linię i przechodzi
                         do trybu wstawiania)
5cc                      zmienia 5 liniii, poczynając od aktualnej
:18,22c                  zmienia linie od 18 do 22 włącznie
C                        zmienia pozostałą część linii

ZZ                       zapisuje (jeśli są zmiany do zapisania) i wychodzi

yw       (yank)          zapisuje do bufora aktualne słowo
yy                       zapisuje do bufora aktualną linię
5yy                      zapisuje do bufora 5 linii, zaczynając od aktualnej

UWAGA: gdy kopiujesz (yank) lub usuwasz jakiś tekst, pozostaje on w buforze,
       skąd może być wykorzystany np do kopiowania:

p        (print)         wstawia linię lub słowo znajdujące się w buforze.

0        (zero)          przenosi kursor do początku linii
$                        przenosi kursor na koniec linii
:$                       przenosi kursor na koniec pliku (tak jak G)
^                        przenosi kursor do pierwszego znaku w linii (pomijając
                         tzw. białe znaki)
7|                       przenosi kursor do siódmego znaku w linii

H              (high)    przenosi kursor do pierwszej linii ekranu
L               (low)    przenosi kursor do ostatniej linii ekranu
M            (middle)    przenosi kursor do środka ekranu

[CTRL] u         (up)    przechodzi w górę o pół ekranu
[CTRL] d       (down)    przechodzi w dół o pół ekranu
[CTRL] y                 przesuwa ekran w górę, nie przemieszczając kursora
[CTRL] e                 przesuwa ekran w dół, nie przemieszczając kursrora

[CTRL] g                 wypisuje informacje o aktualnym pliku
[CTRL] l                 odświeża zawartość ekranu
[CTRL] h                 move the cursor backward in case of some modification
                         (you can use it in insert mode, too)

fx             (find)    szuka następnego znaku "x" w aktualnej linii
;                        szuka następnego znaku "x" w aktualnej linii
,                        szuka poprzedniego znaku "x" w aktualnej linii
Fx             (Find)    szuka poprzedniego znaku "x" w aktualnej linii
;                        szuka poprzedniego znaku "x" w aktualnej linii
,                        szuka następnegp znaku "x" w aktualnej linii

Ćwieczenia:
 a - sprawdź działanie następujących rozkazów
     (aby wrócić do tego miejsca znajdź tekst "Ćwiczenia")
     0, $, :$, ^, 3|, H, L, M
 b - sprawdź polecenia
     [CTRL] u, [CTRL] d, [CTRL] y, [CTRL] e, [CTRL] g, [CTRL] l, [CTRL] h
 c - umieść kursor w poprzedniej linii i znajdź wszystkie "T" urżywając poleceń
     f i F
 d - [CTRL] h jest szczególnym poleceniem:
     d1) w trybie wstawianie możesz korygować tekst wciąż POZOSTAJĄC w trybie
     wstawiania;
     d2) w trybie poleceń możesz korygować nieprawidłowo wpisane polecenia.
     Wykonaj kilka ćwiczeń:
     sprawdź działanie d1) wpisz tekst i skoryguj go NIE PRZECHODZĄC do trybu
     poleceń
     na przykład wpisz ZłyTekst i popraw go na DobryTekst NIE PRZECHODZĄC
     do trybu poleceń.
     sprawdź d2) Skoryguj polecenie takie jak :set li (chciałeś wpisać :set nu).
     Skoryguj polecenie /ZłyTekst na /DobryTekst bez wpisywania polecenia
     od początku.
 e - polecenia yy oraz dd używane z p, są często wykorzystywane:
     spróbuj skopiować lub przenieść jedną lub kilka linii tekstu:
     umieść kursor w pierwszej linii tekstu, który chcesz skopiować,
     wpisz np. 3yy, przesuń kursor do miejsca, gdzie chcesz wstawić skopiowana
     linie i wciśnij p. Gdzie pojawiły się nowe linie? (aby przenieść tekst,
     użyj 3dd,p).
 f - zachęcamy, jeśli nie do nauczenia się tych poleceń, to przynajmniej do
     sprawdzenia, że polecenia te umożliwiają modyfikację pliku (do eksperymentów
     użyj innego pliku)


 -- 2.1 Zamiana tekstów

Aby zamienić "stary tekst" na "nowy tekst", możesz użyć poleceń:

:s/stary tekst/nowy tekst                jeśli w aktualnej linii znajdują się
                                         ciągi "stary tekst", zostanie zamieniony
                                         tylko pierwszy.

:s/stary tekst/nowy tekst/g              zamienia wsystkie wystąpienia ciągu
                                         "stary tekst" w aktualnej linii

UWAGA: polecenie /g jest opcjonalne: pominięcie go spowoduje, że zostanie
       zamieniony tylko pierwszy ciąg "stary tekst" w każdej linii:

:1,9s/stary tekst/nowy tekst/g           zamienia wszystkie wystąpienia ciągu
                                         "stary tekst" w liniach od 1 do 9

:7,$s/stary tekst/nowy tekst/g           zamienia wszystkie wystąpienia ciągu
                                         "stary tekst" w liniach od 7 do końca
                                         pliku

:%s/stary tekst/nowy tekst/g             zamienia wszystkie wystąpienia ciągu
                                         "stary tekst" w pliku


 -- 2.2 Zapisywanie plików

Wiesz już, że jeśli edytujesz plik "nowy",
:w                  zapisuje modyfikacje w aktualnym pliku "nowy"
:w inny             zapisuje zawartość aktualnego pliku do pliku o nazwie "inny"

Również możesz wykonać:
:3,9w inny          zapisuje linie od 3 do 9 włącznie aktualnego pliku do
                    pliku o nazwie "inny"

Jeśli "inny" już istnieje
:w! inny            nadpisuje zawartość pliku "inny"
:w>>inny            dopisuje zawartość aktualnego pliku na koniec pliku "inny"
:3,9w>>inny         dopisuje na koniec pliku "inny" linie od 3 do 9 włącznie
                    z aktualnego pliku
:e inny             wczytuje do edycji plik "inny"

Ćwiczenia:
 a - używając poprzednich poleceń, korzystając z tego pliku stwórz nowy plik
     zawierający spis poleceń vi, które będziesz częściej wykorzystywał.
     Podpowiedź: włącz numerowanie linii i wykorzystaj informacje z paragrafu
     2.2


 -- 2.3 Odczyt innych plików

Jeśli chcesz dołączyć w określonym miejscu jedengo pliku zawartość innego
pliku, możesz użyć polecenia
:r innyplik         wstawia zawartość pliku "innyplik" od następnej linii,
                    w której znajduje się kursor

Ćwiczenia:
 a - używając dwóch niepotrzebnych plików sprawdź działanie polecenia :r


 -- 2.4 Otwieranie kilku plików jednocześnie

Używając vi możesz edytować kilka różnych plików jednocześnie, używając
vi pierwszyplik drugiplik trzeciplik [...]

Edytor vi pozwala na edycjię tych plików jeden po drugim: na początku
zobaczysz "pierwszyplik", następnie używając polecenia
:n

(next - następny) możesz się przełączyć na drugi plik, a następnie na trzeci.
Aby przełączyć się na plik poprzedni, wpisz
:N

UWAGA: Łatwiej zapamiętasz te polecenia, jeśli zauważysz, że są one podobne
       do wyszukiwania tekstu, ale używa się dodatkowo ":"

Pyt- "Do czego potrzebne mi jest edytowanie kilku plików?"
Odp- Ponieważ czasami trzeba wykonać takie same operacje na różnych plikach
     (wyszukiwanie, modyfikacje, zamiana tekstów ...). Wykorzystując tą
     cechę vi, możesz zrobić to bardzo szybko.


 -- 2.5 Otwieranie plików w trybie tylko do odczytu

Wiesz już, że możesz użyć opcji -Readonly :
vi -Readonly plik

Możesz również użyć krótszego zapisu:
vi -R plik

Przy użyciu opcji -R (również -Readonly) możesz otworzyć kilka plików:
vi -R pierwszyplik drugiplik trzeciplik [...]


 -- 2.6 Polecenia powłoki

Pyt- "iCo to jest powłoka?"
Odp - Jest to interpreter poleceń. Jest pośrednikiem między tobą a systemem
      operacyjnym.

W celu wykonania dowolnego polecenia, musisz poprzedzić go ":!". Np. jeśli
używasz systemu UNIX i chcesz wykonać polecenie "ls" bez opuszczania vi, wpisz
(w trybiue poleceń)
:!ls

(Oczywiście, jeśli nie używasz systemu UNIX, musisz użyć poleceń swojego
systemu!)

Ćwiczenia:
 a - wywołaj polecenia systemu operacyjnego (ale nie usuwaj tego pliku!)
 b - sprawdź co stanie przy wykonywaniu połączonych w potok poleceń
     (przy użyciu "|"), np. (w systemie UNIX):
:!ps -ef | grep vi
 c - jeśli twój system umożliwia wykonanie kolejno kilku poleceń, spróbuj
     jak działa to w vi, wpisując np. (w systemi UNIX):
:!pwd; ls -l; ps -ef | grep vi
 d - pomyliłeś się i wcisnąłeś za długo klawisz ENTER - wynik działania
     poprzedniego polecenia zniknął! Ponów je! Podpowiedź: użyj
:!!

Pyt- "Czy mogę w vi wykonać wszystko to, co z linii poleceń?"
Odp- Tak


 -- 2.7 Daj mi powłokę!

Aby podczas edycji pliku uzyskać dostęp do powłoki wpisz (w trybie poleceń)
:sh

Aby powrócić do vi, zamknij powłokę (wpisz exit lub wciśnij CTRL+D).
Edytowany plik powinien się ponownie pojawić w edytorze. Nie bój się. Spróbuj!

Pyt- "Co mogę zrobić przy pomocy powłoki?"
Odp- Możesz wykonać wszytskie polecenia systemu operacyjnego.
     Np. możesz uruchomić edycję drugiego pliku wpisując:
ci drugiplik
   Oczywiście, możesz następnie otworzyć nową powłokę, w której możesz
   uruchomić edycję trzeciego pliku:
vi trzeciplik
   Możesz następnie uruchomić nową powłokę, itd.


 -- 2.8 Makropolecenia

Czy próbowałeś kiedykolwiek, używając swojego edytora, usunąć ostatni znak
z każdej linii? (np. w liczącym 4000 linie kodu programie...)

Edytor vi umożliwia szybkie wykonanie tego (i wielu innych rzeczy) używając
makropoleceń.
Niestety, makropolecenia wykraczają poza ten podręcznik: jeśli jednak czujesz
nieodpartą chęć poznania innych poleceń vi, znaczy to, że definitywnie
zostałeś nawrócony na vi i możesz samodzielnie pogłębiać swoją wiedzę.

________________________________________________________________________________
Copyright (C) 1999 - Massimo Pilolli,   Modena - ITALY   maxpilolli@yahoo.com
                     Stefania Perrucci, Modena - ITALY
                     http://www.navigare.org/vi-muman.uk
Tłumaczenie:  2001 - Robert Litwiniec,  Zamość - POLSKA  linio@gnu.pl
                     http://asterix.wonder.pl

This file is free software; you can redistribute it and/or modify it under the terms
of the GNU General Public License as published by the Free Software Foundation;
see the GNU General Public License for more details.

Wersja tekstowa http://asterix.wonder.pl/pub/debian/pliki/vi-muman.pl.txt


Google Polska Encyklopedia sieciowa
Asterix - Debian Wiki