SO2_instrukcja_1 VIM, GCC, make i man.pdf

(42 KB) Pobierz
Instrukcja do laboratorium Systemów Operacyjnych
Ćwiczenie pierwsze
Temat: Wprowadzenie do edytora
vim,
kompilatora
gcc,
podręcznika
man
i systemu operacyjnego
Linux
Opracowanie:
mgr inż. Arkadiusz Chrobot
Wprowadzenie
1. Edytor VIM
Edytor tekstowy VIM jest rozbudowaną wersją edytora VI, najstarszego i naj-
bardziej rozpowszechnionego w środowiskach uniksowych edytora przeznaczo-
nego dla programistów. Mimo na pozór trudnej do opanowania obsługi stanowi
on bardzo elastyczne i wygodne środowisko dla programisty. VIM działa
w trzech trybach: edycji, wprowadzania i poleceń. W trybie edycji kursorem
można poruszać przy pomocy klawiszy <h>, <j>, <k>, <l>, jak również posługu-
jąc się klawiszami kursorów. W tym trybie niektórym klawiszom, lub ciągom
wpisanym przy pomocy klawiatury przypisano działania związane z operacjami
na tekście. Oto kilka najważniejszych przykładów:
yy – kopiuje do bufora linię tekstu pod którą znajduje się kursor,
y10y – kopiuje do bufora 10 linii tekstu zaczynając od tej pod którą znajduje się
kursor (zamiast 10 może wystąpić inna liczba)
p – wkleja tekst z bufora do miejsca, w którym znajduje się kursor,
10p – robi to co p, tylko 10 razy (zamiast 10 może wystąpić inna liczba),
dd - usuwa linię tekstu pod którą znajduje się kursor (można ją wkleić
klawiszem p w inne miejsce),
d10d - tak jak wyżej, ale 10 linii, (zamiast 10 może wystąpić inna liczba)
x – kasuje znak pod którym znajduje się kursor (uwaga: pięć znaków można
skasować poleceniem 5x),
u – polecenie cofnięcia ostatniej zmiany (ang. undo) - jest wielopoziomowe,
yw – skopiowanie wyrazu do bufora,
dw – usunięcie wyrazu,
cw – usunięcie wyrazu i przejście do trybu wprowadzania,
a – przesunięcie kursora o jedną pozycję w prawo i przejście do trybu wprowa-
dzania,
i – przejście do trybu wprowadzania,
r – zmiana jednego znaku,
R – przejście do trybu wprowadzania z nadpisywaniem (podobnie działa klawisz
insert),
* - wyszukanie kolejnego wystąpienia wzorca znajdującego się pod kursorem,
2
K – wyszukanie strony podręcznika man, dla instrukcji pod którą znajduje się
kursor,
== - formatuje wcięcie pojedynczego wiersza kodu,
=G – formatuje wcięcia kodu począwszy od bieżącego położenia kursora do
końca,
gg – umieszcza kursor na początku pliku z kodem/tekstem,
G – umieszcza kursor na końcu pliku z kodem/tekstem.
Tryb wprowadzania, jak sama nazwa wskazuje służy do wprowadzania tekstu
programu (kodu źródłowego). Edytor VIM oferuje wiele udogodnień uła-
twiających pracę programisty, jak podświetlanie składni, czy numerowanie li-
nii. Niektóre z nich trzeba uaktywnić w trybie poleceń, jednak część z nich do-
stępna jest poprzez odpowiednie kombinacje klawiszy np: <Ctrl> + <p> uzupe-
łnienie wprowadzanego wzorca poprzez dopasowanie go do wzorca znajdującego
się „u góry”, <Ctrl> + <n> to samo co poprzednio, ale wzorzec znajduje się „na
dole”, <Ctrl> + <W> przejście między otwartymi oknami, <Esc> przejście do try-
bu edycji. W trybie poleceń dostępne są następujące opcje:
/wzorzec – znajduje wystąpienie wzorca w pliku, przeszukiwanie „w dół”,
?wzorzec – jak wyżej, ale „w górę”,
!polecenie – wykonanie polecenia powłoki,
:q – wyjście z edytora,
:q! - wyjście z edytora, bez zapisywania zmian,
:wq – wyjście z zapisaniem zmian,
:sp – podzielenie bieżącego okna na dwie części,
:e
nazwapliku
– otwarcie pliku do edytowania,
:s/wzorzec/zast
ąpienie
– zastąpienie wzorca podanym ciągiem w linii, w której
znajduje się kursor,
:%s/wzorzec/zast
ąpienie
– to samo co wyżej, ale dla całego pliku,
:%s/wzorzec/zast
ąpienie
/g
to samo co wyżej, ale również dla każdego wy-
stąpienia wzorca w wierszu,
:set number – włączenie numeracji wierszy,
:set nonumber – wyłączenie numeracji wierszy,
:tabnew – otworzenie nowej karty (od wersji 7.0),
:tabnext – przejście do następnej karty (od wersji 7.0),
3
:tabprev – przejście do poprzedniej karty (od wersji 7.0),
:10 – przeniesienie kursora do wiersza o podanym numerze,
:make – wykonanie kompilacji bez opuszczania edytora, o ile istnieje plik make-
file,
:cnext – wyszukanie kolejnego błędu w kodzie, jeśli kompilacja się nie powiodła,
:cprevious – to co wyżej, ale poprzedniego błędu,
:clist – wypisuje skróconą listę błędów,
:clist! - wypisuje pełną listę błędów.
Część z tych poleceń może zostać automatycznie wykonana po uruchomieniu
VIMa, jeśli zostaną zapisane w pliku
.vimrc.
Oto przykładowy taki plik:
set nocp
set nowrap
set autoindent shiftwidth=8
set showcmd
map <F2> :set nowrap<cr>
map <F3> :set wrap<cr>
map <F4> :set number<cr>
"wyłącz tryb kompatybilności z VI
"wyłącz zawijanie wierszy
"ustaw głębokość wcięć na 8 znaków
"pokaż komendy wpisywane w trybie edycji
"zmapuj klawisze F2 – wyłącz zawijanie wierszy
"F3 – włącz zawijanie wierszy
"F4 – włącz numeracje wierszy
map <F5> :set nonumber<cr> "F5 – wyłącz numeracje wierszy
map <F6> :set showmatch<cr> "F6 – włącz parowanie nawiasów
1
map <F7> :set noshowmatch<cr> "F7 – wyłącz parowanie nawiasów
2. Podręcznik man
Podręcznik man zawiera opisy poleceń powłoki, oraz funkcji języka C. Składnia
wywołania jest następująca: man
nazwa polecenia.
W przypadku, kiedy istnieje
zarówno funkcja, jak i polecenie o takiej samej nazwie, to należy podać jeszcze
stronę podręcznika, np.:
man 3 printf.
Aby uzyskać informację na temat
wszystkich stron dotyczących danego zagadnienia należy zastosować opcję -k,
np.:
man -k printf.
3. Kompilator gcc i inne narzędzia do tworzenia programów
Kompilator gcc jest tak naprawdę zbiorem kompilatorów stworzonym przez or-
ganizację GNU. Kompilator ten wywołuje się podając mu argumenty w linii po-
leceń. W najprostszym przypadku wystarczy napisać: gcc
nazwa.c,
ale za-
1 W tym trybie, jeśli stawiamy nawias zamykający, to kursor na sekundę wraca do nawiasu
otwierającego
4
lecanym sposobem jest: gcc -Wall -o
nazwa nazwa.c,
gdzie flaga -o oznacza na-
zwę zbioru wynikowego, a flaga -Wall nakazuje włączenie wszystkich ostrzeżeń.
Oczywiście powyższe wywołanie może przyjąć formę bardziej złożoną. W takim
wypadku, aby uniknąć wielokrotnego wpisywania długich poleceń możemy się
posłużyć programem o nazwie make. Aby to uczynić należy przygotować plik
o nazwie makefile w katalogu, w którym znajdują się źródła programu. Treść
takiego pliku tworzymy według następującego schematu (linie zaczynające się
od „#” stanowią komentarz):
reguła: reguła1 reguła2 #po nazwie reguły umieszczamy opis wymagań
akcja
#Pusty wiersz
reguła1:
akcja
#Pusty wiersz
reguła2:
akcja
Z powyższego przykładu wynika, że wymagania co do reguł są opcjonalne i nie-
koniecznie musimy je wypisywać. Domyślnie wykonywana jest pierwsza za-
deklarowana w pliku reguła. Możliwa jest również deklaracja na początku pliku
pewnych stałych do których się będziemy odwoływać poprzedzając je znakiem
dolara. Oto przykład rozbudowanego pliku makefile:
CC = gcc
#stała oznaczająca nazwę kompilatora
OFLAGS = -Wall -O2 -o #stała przechowująca flagi wywołania kompilatora
#Pusty wiersz
all:
primitive primitive16 check_prim check_prim_16
#Pusty wiersz
#Pusty wiersz
primitive:primitive.c #Reguła primitive wymaga pliku primitive.c by zadziałać
$(CC) $(OFLAGS) primitive primitive.c
#Pusty wierz
primitive16:primitive16.c
$(CC) $(OFLAGS) primitive16 primitive16.c
#Pusty wiersz
5
Zgłoś jeśli naruszono regulamin