Wymagania.we: przerobione Pliki i kartoteki vi - Visual edytor vi jest standardowym edytorem tekstu w systemie Unix. Pozwala na tworzenie i edycję plików tekstowych. Jest jednocześnie jednym ze "straszaków", jakimi w Unixie zwykło się "torturować" uŝytkowników innych systemów operacyjnych. Dość często zdarzało mi się obserwować przeraŝenie na twarzy uŝytkownika, który zaczął edycję za pomocą vi, wpisał coś do pliku a potem zobaczył na ekran - te resztki które zostały z pliku zwykle znacznie róŝniły się od tego "co uŝytkownik miał na myśli"... Powód takiego działania jest zwykle dość prosty - vi zaczyna pracę w trybie klawiszowym - a w tym trybie kaŝdy naciśnięty przez uŝytkownika klawisz jest komendą wykonywanym przez vi a nie znakiem dopisywanym do pliku... Dlaczego w takim razie powinniśmy się nauczyć przynajmniej elementarnego sposobu uŝywania vi: bardzo często vi jest uruchamiany automatycznie - jest zwykle standardowym edytorem Unixa. Pisząc kolejny list, uŝywając niektórych z komend systemowych - moŝemy 'znaleźć się' w vi nawet wtedy, kiedy 'jawnie' go nie wywołaliśmy vi jest naprawdę 'mocnym' edytorem - moŝna za jego pomocą dokonać zaawansowanych edycji plików tekstowych - jeŝeli tylko panujemy nad tym edytorem... vi niczego sam nie zmienia w edytowanym pliku. Inne edytory próbują np. czasem minimalizować wielkość pliku, zmieniając grupę spacji w znak tabulacji, formatują edytowany tekst - w przypadku plików konfiguracyjnych moŝe to być 'groźne' - taka modyfikacja pliku - na przykład definiującego DNS - moŝe spowodować, Ŝe nasz serwer DNSu przestanie działać prawidłowo. Unix - edytory 'tedd' T. Kędzierski str. 1/1
uruchomienie: vi [parametry] wzornik vi zostanie uruchomiony - pierwszy z plików których nazwy są zgodne z wzornikiem zostanie wczytany do edycji. Zanim omówimy zasady działania vi - najczęściej uŝywane parametry wywołania vi: -r plik jeŝeli nastąpiła awaria komputera podczas poprawiania przez vi jakiegoś pliku moŝemy - po ponownym uruchomieniu Unixa odzyskać ten plik uruchamiając vi z parametrem r nazwa_pliku poprawianego podczas awarii -R wczytaj pliki o nazwach zgodnych z wzornikiem w trybie read only - to zabezpiecza nas przed przypadkową zmianą zawartości tych plików vi moŝe pracować w jednym z 3 stanów: tryb klawiszowy - w tym trybie kaŝdy klawisz na klawiaturze powoduje wykonanie jakiejś akcji na edytowanym pliku tryb edycji tekstu - po wykonaniu (w trybie klawiszowym) komendy inicjującej wpisywanie tekstu - przechodzimy do trybu edycji tekstu. W tym trybie tekst wpisywany z klawiatury jest wstawiany do edytowanego pliku - aŝ do naciśnięcia klawisza Esc - co spowoduje powrót do trybu klawiszowego tryb komend liniowych - jeŝeli w trybie klawiszowym naciśniemy : (dwukropek) - przechodzimy do trybu komend liniowych. W ostatniej linii na ekranie pojawia się : po którym moŝemy wpisać komendę 'liniową'. Komenda taka działa zwykle na grupie linii. Po jej wykonaniu vi wraca automatycznie do trybu klawiszowego Unix - edytory 'tedd' T. Kędzierski str. 2/2
Esc tryb komend klawiszowych tryb edycji tekstu i, A : tryb komend liniowych q, q!, x Uwaga!!! Najczęściej popełnianym błędem jest próba wpisywania tekstu w trybie klawiszowym bez wcześniejszego wykonania komendy inicjującej wpisywanie tekstu. Powoduje to interpretowanie przez vi kaŝdego naciśniętego klawisza jako komendy vi - moŝe do doprowadzić do duŝych 'zniszczeń' w edytowanym tekście. Zmiana trybów pracy: po uruchomieniu vi przechodzi w tryb komend klawiszowych - kaŝde naciśniecie klawisza na klawiaturze powoduje wykonanie komendy, związanej z tym klawiszem z trybu klawiszowego, po naciśnięciu : przechodzimy do trybu komend liniowych. MoŜemy wpisać komendę - po naciśnięciu klawisza Enter vi wykonuje komendę i wraca do trybu klawiszowego Unix - edytory 'tedd' T. Kędzierski str. 3/3
jeŝeli w trybie klawiszowym wykonamy komendę wstawiającą tekst - przechodzimy do trybu edycji tekstu. W tym trybie znaki wpisywane z klawiatury są wstawiane do edytowanego pliku. Naciśnięcie klawisza ESC powoduje powrót do trybu klawiszowego - zakończenie wstawiania tekstu jeŝeli pracując w trybie liniowym wykonamy komendę kończącą pracę vi (q - zakończ, nie zmieniaj pliku, x - zakończ, zapisz zmieniony plik) - wrócimy do Unixa Wybrane komendy trybu klawiszowego powodujące przejście do trybu wpisywania tekstu: a i A I S C wpisuj tekst za kursorem wpisuj tekst przed kursorem wpisuj tekst na końcu linii wpisuj tekst na początku linii zastąp całą bieŝącą linię wpisywanym tekstem zastąp znaki od połoŝenia kursora do końca linii wpisywanym tekstem Wpisywany tekst moŝe być wieloliniowy. Kończymy wpisywanie tekstu naciskając klawisz Esc - wracamy do trybu klawiszowego. Wybrane komendy trybu klawiszowego: dd x X skasuj całą linię w której znajduje się kursor skasuj znak za kursorem skasuj znak przed kursorem Unix - edytory 'tedd' T. Kędzierski str. 4/4
J u Y połącz bieŝącą i następną linię w jedną linię anuluj ostatnią zmianę ('undo') anuluj wszystkie zmiany w bieŝącej linii. powtarzaj ostatnie polecenie zmieniające tekst Komendy zmiany pozycji (tryb klawiszowy): znak w lewo, znak w prawo linia w górę, linia w dół 0 przejdź na początek bieŝącej linii $ przejdź na koniec bieŝącej linii fc Fc w b H M L ^F skocz wprzód do znaku c skocz w tył do znaku c skocz do początku następnego słowa skocz do początku poprzedniego słowa przejdź na górę ekranu przejdź na środek ekranu przejdź na dół ekranu przesuń o ekran w przód Unix - edytory 'tedd' T. Kędzierski str. 5/5
^B ^R przesuń o ekran w tył przerysuj ekran zapis ^F oznacza jednoczesne naciśnięcie klawisza Ctrl i klawisza F. Kopiowanie i przenoszenie tekstu (tryb klawiszowy): Wszystkie komendy skreślające lub kopiujące tekst wpisują ten tekst do wewnętrznego bufora vi. Tekst ten moŝe być potem wielokrotnie wstawiany w róŝne miejsca pliku. NiŜej wymienione komendy równieŝ działają na buforze vi: m y p P zaznacz bieŝącą linię skopiuj zaznaczony tekst do bufora vi wstaw tekst z bufora vi za kursorem wstaw tekst z bufora vi przed kursorem Wybrane komendy trybu liniowego: /wzornik wyszukaj tekst zgodny z wzornikiem, przesuń tam kursor / wyszukaj następne wystąpienie ostatnio uŝytego wzornika s/t old/t new/ zamień tekst t old na t new Unix - edytory 'tedd' T. Kędzierski str. 6/6
w w fname r fname number zapisz bieŝący plik na dysk zapisz bieŝąco poprawiany tekst na plik fname wczytaj zawartość pliku fname i wstaw go za kursorem przejdź do linii numer number n q zakończ poprawianie bieŝącego pliku, zacznij poprawiać następny plik, którego nazwa pasuje do wzornika z linii komendy uruchamiającej vi zakończ pracę vi - jeŝeli zmieniliśmy zawartość pliku vi nie pozwoli nam zakończyć pracy q! zakończ pracę z vi nie zapisując zmienionego pliku na dysk x zapisz edytowany plik na dysk i zakończ pracę z vi Komendy s i w standardowo przeszukują i zapisują cały plik. JeŜeli poprzedzimy je dwoma numerami linii oddzielonymi przecinkiem - będą działać tylko na tych liniach. Jako numery linii moŝna uŝyć liczb całkowitych lub konstrukcji postaci: -liczba +liczba linia o liczba linii wcześniej niŝ bieŝąca linia o liczba linii później niŝ bieŝąca. bieŝąca linia. Komenda.= wpisana w trybie komend liniowych wyświetli numer bieŝącej linii $ ostatnia linia pliku. Komenda =$ wpisana w trybie komend liniowych wyświetli ilość linii w pliku Unix - edytory 'tedd' T. Kędzierski str. 7/7
Przykłady: 1,20s/ala/ola/ zamień kaŝde wystąpienie tekstu ala na ola w liniach od 1 do 20.+5,$-10w part1 wpisz na plik part1 część bieŝąco poprawianego pliku - od linii o 5 dalej niŝ bieŝąca do linii o 10 mniej niŝ ostatnia linia w pliku UŜywając vi stwórz we własnej kartotece plik zawierający podanie o podwyŝkę. Najpierw stwórz i zapisz plik zawierający nagłówek takiego podania i zapisz go na dysk kończąc pracę z vi. Następnie uŝyj ponownie vi aby dopisać do pliku uzasadnienie podwyŝki. MoŜesz napisać podanie o obniŝenie zarobków... Od kiedy uczę tylko jedna studentka napisała takie przykładowe podanie - do dziś nie wiem dlaczego... Pełny opis komend vi (po angielsku) moŝna znaleźć tutaj: VI.REF joe - edytor 'dla ludzi' Unix - edytory 'tedd' T. Kędzierski str. 8/8
Sam - (średnio) znając vi, uŝywając go do edycji plików konfiguracyjnych, potrzebuję czasami edytora bardziej 'dostosowanego' do zapisywania skryptów i programów. Prawie w kaŝdej wersji Unixa moŝna znaleźć joe - edytor naśladujący większość "Borlando podobnych" edytorów (z Turbo C, Turbo Pascala, Borland C++, itp.). MoŜe się jednak okazać, Ŝe ten edytor musimy dodatkowo doinstalować do naszej wersji Unixa. PowyŜej - zrzut ekranu z sesji joe. Program - dla kogoś kto uŝywał któregokolwiek z wspomnianych wcześniej edytorów powinien nie wymagać Ŝadnego komentarza dotyczącego sposobu jego uŝycia. Podobnie jak man w Unixie - jedyną komendą joe jaką zawsze powinniśmy pamiętać jest komenda ^KH. Komenda ta działa jak przełącznik - jeŝeli 'ściąga' z podstawowych komend, wyświetlana w nagłówku ekranu, nie jest bieŝąco wyświetlona - komenda ^KH wyświetli ją. JeŜeli ta podpowiedź jest wyświetlnoa - po komendzie ^KH zostanie usunięta z ekranu. Wielkość liter wprowadzanych jako komendy nie ma w joe znaczenia - komendy ^KH i ^kh działają tak samo. Unix - edytory 'tedd' T. Kędzierski str. 9/9
UŜywając joe powtórz te same operacje jakie wykonałeś za pomocą vi. Następny rozdział: srodowisko_uzytkownika.doc Unix - edytory 'tedd' T. Kędzierski str. 10/10