Ohjeita emacsin käyttöön ======================== Emacs käynnistetään komennolla "emacs " eli jos haluat muokata oma.c-tiedostoa anna komento: emacs oma.c Skandinaaviset merkit saa näkyviin lisäämällä kotihakemistossa sijaitsevaan tiedostoon .emacs rivin: (set-input-mode nil nil 'foo) Ohjelmointi muuttuu miellyttävämmäksi, jos .emacs:iin lisätään seuraavat rivit: (global-font-lock-mode t) (setq transient-mark-mode t) Komennot annetaan näppäinsarjoina, joko muodossa ESC merkki, eli painamalla ensin esc-näppäintä ja sen jälkeen merkkiä. Toinen tapa on antaa komento muodossa CTRL merkki, siten että näppäimiä painetaan samaan aikaan. Seuraavassa listassa C tarkoittaa CTRL:ää (esim C-k) ja E ESC:iä (esim. E w). HUOM: yleensä emacs-oppaissa merkitään ESC kirjaimella M! Jos emacs menee "sekaisin" (yleensä jokin komento kesken) tai normaalin teksti-ikkunan päälle aukeaa komentoikkuna, tilanteesta selviää ESC:iä pari kertaa painamalla. Tabulaattorilla on emacsissa erikoismerkitys, sen painallus sisentää rivin oikein. Jos halutaan tehdä tekstiin tabulointi, käytetään komentoa C-q tab Komennot joilla pääsee alkuun: C-x C-s tallenna tiedosto (siis CTRL pohjassa ja x s) C-x c lopeta ohjelman käyttö C-k tuhoa rivi ja aseta se leikepöydälle C-space aseta merkki eli paikka mistä merkittävä alue alkaa E w "copy" eli kopioi alue leikepöydälle C-w "cut" eli vie alue leikepöydälle C-y "paste" eli aseta leikepöydän sisältö kursorin kohdalle Muita komentoja: Emacsissa voi olla avoimena useita tiedostoja. Jokainen tiedosto on auki omassa bufferissaan. tiedostot: C-x C-f avaa tiedosto uuteen bufferiin C-x C-s tallenna aktiivinen bufferi C-x s tallenna kaikki tiedostot C-x C-w tallenna uudella nimellä C-x i lisää tiedosto aktiiviseen bufferiin kursorin jälkeen bufferit: C-x C-b listaa bufferit C-x b vaihda aktiivista bufferia C-x 1 yksi bufferi ruudulle C-x 2 kaksi puskuria ruudulle, allekkain C-x 3 kaksi bufferia ruudulle, vierekkäin C-x 0 poista aktiivinen bufferi ruudulta C-x o jos ruudulla monta bufferia, vaihda bufferia kursori: C-a siirry rivin alkuun C-e siirry rivin loppuun C-b sarake vasemmalle C-f sarake oikealle E b sana vasemmalle E f sana oikealle copy/paste: C-space aseta merkki C-k leikkaa rivi E k kopio rivi C-w leikkaa alue E w kopioi alue C-y aseta leikepöydän sisältö kursorin kohdalle C-x u undo search/replace: C-s etsi eteen (jatkaa uudelleen painamalla) C-r etsi taakse enter lopettaa etsinnän E % etsi ja korvaa ohjelmointia helpottavat toimet: E x compile käännä (edellyttää makefilen olemassaoloa) C-c C-c käännösvirheen kohdalla vie virheen sisältävälle riville E ; lisää kommentti C-c C-c kommentoi merkatun alueen C.c C-e makro expand E x gdb käynnistä gdb debuggeri (ks. tarkempi ohje alla) koodin merkkaaminen: aja koodille ohjelma etags, esim. $ etags *.c *.h emacs osaa tämän jälkeen hypätä automaattisesti siihen kohtaan missä kukin funktio on määritelty E . tagi mene kohtaan tagi (tagi on esim. funktion nimi) E * palaa takaisin hyppypaikkaan katso ohjeita etags:in käyttöön man-sivulta GDB-debuggerin käyttö emacsista: - HUOM: jotta debuggaus onnistuu, on ohjelma käännettävä optiolla -g: $ gcc ohjelma.c -g - avaa ohjelmatiedosto ja tee komento M-x gdb, eli paina esc X ja kirjoita gdb - tämän jälkeen anna komento gdb a.out (jos ohjelmatiedoston nimi on a.out) - aseta breakpoint sopivalle kohdalle ja aloita debuggaus komennolla run - emacs jakautuu nyt kahteen ikkunaan, joista toinen näyttää sen kohdan missä ohjelma on menossa - breakpointin voi asettaa menemällä koodiriville minne breakpoint halutaan ja painamalla CTRL x ja välilyönti gdb:n tärkeimmät komennot: - list listaa koodia - list n listakoodia rivin n ympäriltä - break n asettaa breakpointin riville n eli debuggeri pysähtyy tähän kohtaan odottamaan ohjeita - break funk asettaa breakpointin funktion funk kutsuun - run käynnistää ohjelman - display x asettaa muuttujan x näytettäväksi muuttujaksi jos muuttuja on pointteri ja halutaan katsoa osoitettavaa kohtaa: display *x jos osoitettava on pointteri n paikkaiseen taulukkoon, koko taulukon sisältö: display *x@n - undisplay poistaa näytettävän muuttujan - print kuten display, mutta muuttujan arvo näytetään vaan kerran - set var x=0 aseta muuttujalle x arvo 0 - where näytä missä mennään - step suorita seuraava koodirivi - next suorita seuraava koodirivi, ei mennä funktioihin - quit lopeta Ohjeita gdb-debuggerin käyttöön: - http://goblin.tkk.fi/c/tutorials/gdb.html - http://liw.iki.fi/liw/texts/ohjelmointityokalut.html - http://www.gnu.org/software/gdb/ - http://www.delorie.com/gnu/docs/gdb/gdb_199.html (gdb emacsin kautta)