joe(1)


Név

joe - Joe's Own Editor

Szintaxis

joe [globális kapcsolók] [ [lokális kapcsolók] fájlnév ]...

Leírás

A JOE egy ASCII szöveg képernyôszerkesztô. Rendelkezik "üzemmód nélküli" felhasználói felülettel is, ami hasonlít számos jól ismert, felhasználóbarát PC-s szerkesztôre. A Micro-Pro WordStar és a Borland "Turbo" nyelvek ismerôi otthon fogják érezni magukat benne. Ezen kívül a JOE egy teljesfunkciós UNIX képernyôszerkesztô, és sok segédeszközt nyújt program- és szövegszerkesztésre.

A JOE ingyenes szoftver, szabadon terjeszthetô és módosítható a Free Software Foundation által kiadott GNU General Public License-ben leírtak szerint. A szerzô nem tervezi kereskedelmi vagy shareware programmá alakítását. Az Internetrôl anonymous FTP-vel letölthetô a következô helyrôl: ftp.std.com, fájl: src/editors/joe*.tar.Z.

Használat


A szerkesztô indításához gépelje be, hogy joe. Ezt követheti igény szerint egy vagy több szerkesztendô fájl neve. Minden egyes fájlnév elé be lehet írni lokális kapcsolókat (lásd az alábbi lokális kapcsolók táblázatot). Az egész szerkesztôre vonatkozó globális kapcsolókat is be lehet írni a parancssorba (lásd az alábbi globális kapcsolók táblázatot). Ha új fájlt szerkeszt, megadhatja annak nevét a szerkesztô betöltésekor is, vagy a szerkesztôben, mentéskor. A fáljnevek módosított megadása is engedélyezett, mely lehetôvé teszi a programkimenet, standard kimenet/bemenet, fájlrészek és eszközök szerkesztését. Részletekért lásd az alábbi Fájlnevek részt.
A szerkesztôben begépelhet szöveget, illetve használhat speciális vezérlôkarakter-sorozatokat más szerkesztési feladatok elvégzésére. A vezérlôkarakter-sorozatok leírását megtalálhatja ezen man-oldal folytatásában, vagy a szerkesztôben, ha beüti a ^K H sorozatot a segítségért.
És most néhány homályos számítógépes lecke:
A ^ azt jelenti, hogy lenyomva kell tartani a Control billentyût, amíg a másik billentyût leüti (ugyanúgy, ahogy a nagybetûknél a Shift billentyû mûködik). Néhány vezérlôkarakter-sorozatra saját billentyû is van, így azokhoz nem kell lenyomni a Control billentyût: a ^[ helyett az ESC, a ^? helyett a Del, a ^H helyett a Backspace, a ^I helyett a Tab, a ^M helyett a Return vagy az Enter, a ^J helyett pedig a Linefeed használható. Néhány billentyûzeten bajos lehet egyes vezérlôbillentyûk használata. A ^_, a ^^ és a ^@ általában begépelhetô a Shift lenyomása nélkül is (azaz próbálja ki a ^-, ^6 és ^2 sorozatokat). Más billentyûzetek esetleg kiosztják ezeket más billentyûkre. Próbálja ki a ^., ^, és ^/ sorozatokat. A ^SPACE általában használható a ^@ helyett. A ^\ és ^] sorozatokat sok kommunikációs program értelmezi, például a telnet és a kermit is. Általában csak le kell ütni kétszer a billentyût ahhoz, hogy átmehessen a kommunikációs programon.
Ha beütötte a ^K H sorozatot, megjelenik a képernyô tetején az elsô segítségablak. Ettôl függetlenül továbbra is gépelhet és szerkesztheti a szöveget. A többi címszó eléréséhez üsse be a ^[< és ^[> sorozatokat (azaz ESC < és ESC >). A segítségablak eltüntetéséhez használja a ^K H sorozatot.
Testreszabhatja a billentyûzetkiosztást, a segítségképernyôket és néhány más beállítást, ha lemásolja a JOE inicializációs fájlját (általában /usr/local/lib/joerc) saját könyvtárába .joerc néven, és módosítja. Lásd az alábbi joerc részt.
A JOE e-mail és News alapértelmezett szerkesztôként való használatáért át kell állítania az EDITOR és VISUAL környezetváltozókat a shell inicializációs fájljában (.cshrc vagy .profile), hogy a JOE-ra mutassanak (a joe általában a /usr/local/bin/joe útvonalon érhetô el).
Lehet, hogy be kell még állítania néhány homályos meghívási paramétert, különösen akkor, ha munkaállomás-képernyôje nem úgy frissít, ahogy kellene. Lásd az alábbi Környezetváltozók részt.

Parancssor opciók


Az alábbi globális opciókat a parancssorban lehet beállítani:

-asis
A 127 feletti kódú karakterek egy az egybe lesznek elküldve, nem pedig mint a a 128 alatti neki megfelelő karakter. Ha ez nem mûködik, ellenőrizd a szervert.

-backpath path
Bekapcsolásakor a backup file-ok a meghatározott könyvtárba lesznek elmentve a mindenkori file eredeti könyvtára helyett.

-baud nnn
Beállítja a baud sebességet a terminál képernyőjének optimalizálásához. A Joe késéseket helyez be 19200 baud alatt, ami figyelmen kívül hagyja a tty buffert, és emiatt az előregépelés megszakítja a kiírást a képernyőre. Gördítőparancsok nem lesznek használhatók 38400 baud-on. Ez X-termináloknál, és egyéb olyan tty-knél hasznos, melyek nem soros vonalon kapcsolódnak.

-beep
Joe sípolni fog rossz parancsadáskor, illetve mikor a kurzor extremális elem mögé akar menni.

-columns nnn
A képernyő oszlopainak számát állítja be.

-csmode
Folytatólagos keresés: egy keresés után azonnal indított keresés megismétli az előző keresést ahelyett, hogy új stringet kérne be a kereséshez. Ez a ^[S és ^[R parancsokhoz hasznosak, illetve akkor amikor a Joe emacs -ként akar mûködni.

-dopadding
A Joe általában feltételezi, hogy van valamilyen áramlási kontroll közte és a tty között. Ha nincsen, akkor e beállítás hatására a joe extra ^@-kat ad a tty-nek a termcap alatt meghatározottak szerint. Az extra ^@-k lehetôvé teszik, hogy a terminál behozza lemaradását hosszú terminálparancsok után.

-exask
Bekapcsolásakor a ^KX ellenőrzi a file nevét amibe írni fog.

-force
Ellenőrzi, hogy a file utolsó sorában van soremelés és csak ekkor ment.

-help
Bekapcsolásakor a szövegszerkesztő a help ablakkal fog indulni

-keepup
Alapesetben az oszlopszám és a státusz sor control-billentyû prefix meői egy másodpercet késnek a CPU fogyasztás csökkenése érdekében. Ha ez a kapcsoló be van kapcsolva, akkor minsen egyes billenyûnyomás után frissülnek.

-lightoff
Blokkmûveletkor a blokk nem lesz kiemelve.

-lines nnn
A sorok számát állítja be.

-marking
A szöveg a ^KB and the cursor is highlighted (use with -lightoff and a modified joerc file to have drop-anchor style block selection).

-mid
Bekapcsolásakor ha a korzor kimozdul az ablakból, az ablak úgy tolódik el, hogy a kurzor a képernyő közepére kerüljön. Ez lassú termináloknál javasolt, melyeknek nincs scroll parancsuk.

-nobackups
Megakadályozza a backup-ok készítését.

-nonotice
Megakadályozza a másolási jog kiírását a szövegszerkesztő indulásakor.

-nosta
Ez ad lehetôséget arra, hogy a legfelsô állapotjelzô vonalat eltüntessük. Jól jön, amikor csak a szöveget szeretnénk látni a képernyôn, vagy ha vt52-est használunk.

-noxon
Ez a ^S/^Q folyamatokat kísérli meg leállítani. Akkor hasznos, amikor a joe WordStar-ként vagy EMACS-ként akar viselkedni.

-orphan
Ha ezt a funkciót használjuk, a parancssor extra fájljai kihasználatlan bufferekben lesznek tárolva extra ablakok helyett. Akkor hasznos, mikor a joe EMACS-ként próbál mûkôdni.

-pg nnn
Ez határozza meg a PgUp/PgDn (^U/^V) után megtartandó sorok számát. -l hozzáadása esetén a fél ablakot megtartja.

-skiptop nnn
Hogy ne használja a képernyô felsô néhány sorát. Ezt akkor tudjuk jól használni, amikor a joe-t BBS szerkesztôként használjuk.

Ezen lehetôségek mindegyikét meghatározhatjuk a joerc fájlban is. Sôt, a NOXTON, BAUD, LINES, COLUMNS és a DOPADDING funkciókat környezetváltozókkal is beállíthatjuk.
A most következô lehetôségeket a parancssor fájlnevei elôtt definiálhatjuk:

+nnn
A kurzor a megadott vonalra ugrik.

-wordwrap
A joe eltünteti az utolsó szót, mikor a jobb margó mögé írsz.

-autoindent
Mikor egy lezárt sorban ütsz RETURN-t, a sorlezáró jel a következô sorba másolódik.

-overwrite
Gépelés közben ráír a már létezô karakterekre, ahelyett, hogy eléjük Tenné a begépelt új karaktereket.

-lmargin nnn
A bal margó állítására.

-rmargin nnn
A jobb margó állítására.

-tab nnn
A tabulátor állítására.

-indentc nnn
Az elválasztó karakter állítására ^K, és ^K leütésére. (32 a SPACE-re, és 9 a TAB-ra.)

-istep nnn
A sortörés méretének állítására ^K, és ^K leütésére.

-linums
Minden sor elé kiírja a sorszámot.

-rdonly
A fájl csak olvasható.

-keymap name
A joerc fájl egy nem rögzített részét használja a billentyûkiosztására.

Ezeket a lehetôségeket akár a joerc fájlban is beállíthatjuk. A fájlok kiterjesztésétôl függôre is beállíthatóak. A progarmok (.c, .h vagy .p kiterjesztéssel) általában lehetôvé teszik az automatikus tördelést. Hasonlóképpen a szóelrejtés is általában lehetsés a fájlokban, de az rc fájlok ezt nem teszik lehetôvé.

Szerkésztesi feladatok

Alapvetô Szerkesztés


Amikor betûket gépelünk be a szövegszerkesztôbe ezeket beleteszi a file-ba amit szerkesztünk ( vagy hozzá írja, ha a kurzor a file végen volt. ). Ez a szövegszerkesztô, normális mûködése. Ha létezô szöveget akarunk kicserélni akkor ezt a helyettesítes elôtt vagy után ki kell törölnünk. A Backspace gombot használhatjuk a szöveg törlésére: mozgassuk a kurzort a törölni kívánt szöveg jobb oldalára majd nyomjunk nehányszor Backspace -t.
Nyomjuk meg az Enter vagy Return gombot, hogy sortörés-t szúrjunk be. Például, ha a kurzor a sor közepén van és Return-t nyomunk, akkor, azt a sort ketté töri, és a kurzor a második elején jelenik meg . Nyomjunk Backspace -t egy sor elején, hogy kiküszöböljük a sortörést.
A nyilakkal tudunk a file-ban mozogni. Ha a billentyûzeten nincsenek nyíl billentyûk (vagy valamilyen okból nem mûködnek), akkor használjuk a ^F -t az elôre (jobbra), ^B -t vissza (ballra), ^P elôzô sorba(föl), és ^N következô sorba (le) mozgásra. A jobb és ball nyilak egyszerûen egy betûvel elôre vagy vissza ugranak a szövegben: ha egy sor elején volt a kurzor, és balra lepünk, akkor az elôzô sor végé jutunk. A le és föl nyilak annyi karaktert lepnek elôre és vissza, hogy a kurzor abban az oszlopban jelenjen meg amelyikben az eredeti sorban volt.
Ha be akarjuk szúrni a szöveget akkor a TAB -t használhatjuk. Ez egy speciális vezérlô karaktert helyez el a szövegben amitôl, az ezt követô karakter a következô TAB STOP -nál kezdôdik. TAB STOP-ok alapértelmezésben 8 oszloponként vannak, de ezt a ^T D -paranccsal meg lehet változtatni. PASCAL és C programozók gyakran használnak 4 oszloponként TAB STOP-okat.
Ha valamilyen okból a terminál képe összezavarodik (pl, levél érkezésrôl kapunk értesítést ), akkor a szövegszerkesztô a ^R -parancsra frissíti a képernyôt.
Sok más billentyûvel törölhetünk szöveget és mozoghatunk a file-ban. Például nyomjunk ^D -t, hogy azt a karaktert töröljük amin állunk, ne a mögöttelévôt, mint a Backspace. ^D is törli a sortörést, ha a kurzor a sor végén volt. A ^Y kitörli a teljes sort amiben a kurzor van, a ^J a kurzor pozíciójától a sor végéig.
A ^A parancsra a kurzor a sor elejére ugrik. A ^E parancsra a kurzor a sor végére ugrik. Nyomjunk ^U vagy ^V -t és a kurzor fél képernyôt föl vagy le ugrik . Ez azt jelenti, hogy a képernyô mozog, de a kurzor egy helyben marad a képernyôn. Nyomjunk ^K U vagy ^K V -t hogy a kurzort a file elejére vagy végére állítsuk. A szövegszerkesztô help -jében mégtöbb parancsot találunk mozgásra és törlésre.
Ha egy hibát követünk el ^_ paranccsal "törölhetjük" azt. A legtöbb billentyûzeten csak lenyomjuk a ^- -t, hogy megkapjuk a ^_ -t de néhányon egyidejûleg a Shift -t és Control -t kell lenyomni, hogy megkapjuk. Ha túl sokat "töröltünk" , akkor visszahozhatjuk az eredeti szöveget a ^^ paranccsal (^6 a legtöbb billentyûzeten).
Ha a file egyik részét szerkesztjük, de ideiglenesen egy másik részét nézzük akkor a ^K - paranccsal juthatunk vissza ez eredeti helyre. Ez a parancs valójában visszavisz az utoljára szerkesztett helyre. A ^K - és ^K =, parancsokkal több ilyen helyre is elugorhatunk, illetve a "törölt" és "visszahozott" szövegek helyére is ugorhatunk.
Ha a file szerkesztését befejeztük, a ^K X paranccsal tudunk kilépni. Ekkor a program rákérdez egy filenév -re, ha eddig nem neveztük el a file-t amit szerkesztettünk.
A file szerkesztésekor valójában a filenak csak egy másolatát szerkesztjük. Így ha úgy döntünk, hogy nem szeretnénk menteni a változásokat, akkor a ^C paranccsal kiléphetünk mentés nélkül.
Ha szerkesztjük a file-t és elmentjük a változásokat, akkor az aktuális könyvtárban keletkezik egy biztonsági másolat egy ~ -vel a filenév végén, ami az eredeti verziót tartalmazza.

Szó kezelés és formázás


Ha egy C vagy PASCAL nyelvû file-ban a képernyô jobb széle mellett gépelünk akkor a képernyô követni fogja a kurzor mozgását. Ha egy hagyományos file-ban (amely neve nem vegzôdik .c, .h, .p -re)gépelünk a képernyô jobb szélén akkor a JOE automatikusan átteszi az utolsó szót a következô sor elejére, hogy ne kellejen Return nyomni. Ezt hívják szó-kezelési módnak. A Szó kezelés ki-be kapcsolható a ^T W paranccsal. A JOE konfigurációs file-ja általában úgy van beállítva, hogy ezt a módot használja a nem-program file-okra. Ezt és egyéb beállításokat a joerc file-ban lehet változtatni.
A szókezelési módon kívûl a JOE nem kezeli automatikusan a bekezdéseket, mint más szövegszerkesztôk. Ehelyett ha, egy bekezdést formázni akarunk akkor használjuk a ^K J parancsot. Ez a parancs az aktuális bekezdést úgy formázza, hogy minden sorba a lehetô legtöbb karakter kerüljön. Ebben az esetben a bekezdés egy olyan egység amit két üres sor határol.
A margókat amiket a JOE a szó kezelésre és formázásra használ a ^T L és ^T R parancsokkal lehet állítani. Ha a baloldali margó nem egyre van beállítva akkor a sor elején történô gépelésnél a kurzor rögtön a bal margóhoz ugrik.
Ha egy sort a margókon belûl középre akarunk tenni, akkor ezt a ^KA paranccsal tehetjük.

Átírás mód


Néha fárasztó lehet a korábbi szöveg törlése, mielôtt, vagy miután új szöveget viszünk be. Ez történik pl. mikor megváltoztatunk egy táblázatot és az oszlopot a táblázatban jobbra akarjuk igazítani. Ha ez elôfordul akkor az editort átírás módba lehet kapcsolni a ^T T billentyûkkel. Amikor az editor ilyen módban van, akkor a begéplet karakterek felváltják a már meglevôket, ahogy ezt egy idealizált írógép is tenné. Tehát, a Backspace billentyû egyszerûen balra lép egyet, balra-törlés helyett, feltéve, hogy a kurzor nem a sor elején áll. Az átírás mód nem kimondottan illik az elektronikus szövegfeldolgozás jellegéhez, ezért javallt visszakapcsolni beszúrás módba, amint lehetséges, a már ismert ^T T kombinációval.
Ha átírás módban mégis be kell szúrni valamit, üssük le a ^@. This billentyût, ami egy szóköz karaktert illeszt a szövegbe.

Vezérlô (kontrol)- és meta karakterek


Minden karaktert egy szám reprezentál. Pl. az 'A' betü kódja 65, míg mondjuk az '1' karakteré 49. Minden látható jel kódja a 32-126 intervallumba esik. (Ez a teljesen önkényes összerendelés a kódok és a jelek között az, amit ASCII karakterkód-tábla néven emlegetnek.) Az ezen az intervallumon kívül esô kódokhoz tartozó jelek csak ritkán jelennek meg a képernyôn, és közülük többnek is speciális jelentése van. Pl. a 10-es kódhoz tartozó jel a soremelést jelenti. Ezeket a speciális ún. kontrol karaktereket is be lehet gépelni úgy, hogy elôször leütjük a ` billentyût, majd egy karaktert ezek közül: @ A B C ... X Y Z [ ^ ] \ _, ahol a @,A,...,_ jelek rendre a 0..31 intervallum pontjait jelentik illetve a ? a 127-et. Pl. a ` J kombináció egy soremelés karaktert visz be a szövegbe, a ` I kombináció pedig egy TAB karaktert. Egy hasznos kontrol karakter a 12-es kódú jelhez: (` L), ami a legtöbb printeren az oldal tetejére ugrást jelenti. Nem szabad szem elôl téveszteni azt a tényt, hogy a JOE ezt a jelet aláhúzott L betüként jeleníti meg. A 127-nél nagyobb kódú karaktereket, az ún. meta karaktereket, a ^\ kombinációval (ez 128-at ad hozzá az utána következô kódhoz), majd egy tetszôleges - akár vezérlô - karakter leütésével lehet bevinni. A JOE a 128-nál nagyobb kódú jeleket inverzben jeleníti meg. Bizonyos idegen nyelvek - amelyeknek több betü szerepel az abc-jükben, mint az angolban - a meta karaktereket használják kiegészítésként. Az editort ASIS (késôbb tárgyalt) módba kell állítani ahhoz, hogy ezek a jelek változatlanul továbbítódjanak a terminál felé.

Promptok

Ha bármely fájlnév-beviteli promptnál leütjük a TAB billentyût, a joe megpróbálja kiegészíteni az addig begépelt szöveget, amennyire csak lehet. Ha nem tudja kiegészíteni teljesen, mert pl. több folytatási lehetôség is van, akkor hangjelzést kapunk. Ha ekkor ismét leütjük a TAB billentyût, akkor a JOE felsorolja a lehetséges folytatásokat, amikbôl a kurzorvezérlô nyilak, illetve a SPACE, vagy az ENTER segítségével választhatjuk ki a megfelelôt. Ha leütjük egy fájl nevének kezdôbetüjét, akkor az kiválasztottá válik, vagy ha több fájl is kezdôdik a leütött karakterrel, akkor a kurzor ezek között fog körbejárni. Ha egy alkönyvtárat választunk ki, akkor annak a neve hozzáadódik a prompthoz, a tartalma pedig betöltôdik a menübe. A Backspace billentyû megnyomásával visszakerülünk az elôzô alkönyvtárba.
A legtöbb prompt megjegyzi a beírt sorokat, amikbôl késôbb a fel-, ill. lenyíl segítségével választhatunk.
A promptok valójában egyszerû egysoros, státuszsor nélküli ablakok, tehát bármely szerkesztô-parancs használható a bennük levô szövegen. Vagyis a "prompt history" tulajdonképpen a "prompt file" (az elôbb említett ablak - a ford.) többi sorát jelenti, amiben akár keresni is lehet visszafelé a megszokott ^KF paranccsal.
Mivel a promptok ablakok, kapcsolgatni is lehet közöttük a ^K P, és a ^K N parancsokkal.

Hol vagyok?


Az aktuális sor-, oszlopkoordináta és karakter lekérdezéséhez üssük le a ^K SPACE kombinációt, ami a képernyô utolsó sorába írja az információkat. A karakter ASCII kódját is megtalálhatjuk itt. Azt is megtehetjük, hogy a sor- és oszlopkoordináta folyamatosan a képernyôn legyen, amihez a megfelelô escape-szekvenciát kell elhelyezni a joerc fájl "status line setup" sorába. Pontosabb információkért lásd a joerc fájlt.

Fájlmûveletek


Az aktuális fájl mentése a ^K D kombinációval lehetséges, akár más néven is, mint ahogy a fájlt beolvastuk. Miután kimentettük, a ^K E kombinációval egy másik fájl betöltése és szerkesztése is lehetséges.
Ha a fájlnak csak egy részét akarjuk menteni, ahhoz lásd a Blokkok bejegyzést!
Az aktuális fájlba egy másik fájl beszúrása is lehetséges a ^K R kombinációval.

Az editor ideiglenes felfüggesztése


Az editor ideiglenes elhagyásához és a shellhez való visszatéréshez üssünk ^K Z-t! Erre akkor lehet szükség, ha pl. egy e-mail-re akarunk válaszolni, vagy man oldalt akarunk olvasni, stb. Az editorba való visszatéréshez géplejünk be: fg, vagy exit. (Hogy melyiket, azt az editor megmondja kilépéskor.)

Szöveg keresése


Szöveg, ill. szövegtöredék keresése (elôre és visszafelé is) a ^K F kombinációval lehetséges. A keresendô szöveget egy promptnál lehet bevinni. A Return lenyomása után a keresési opciókat egy újabb promptnál lehet megadni. Ha itt megint Return-t ütünk, akkor a keresés azonnal megkezdôdik (elôre), vagy választhatunk a következô opciók közül:

b
A keresés visszafelé történjen (és ne elôre).

i
A nagy- és kisbetük között ne legyen különbség keresés közben. Alapállapotban ui. ezek különbözônek minôsülnek.

nnn
(ahol nnn egy szám) Ha megadunk egy számot, akkor a JOE a kérdéses szöveg N. elôfordulását keresi. Ez akkor lehet hasznos, ha egy szabályos szerkezetû fájlban keresünk egy helyet.

r
Szöveg cseréje. Ha megadjuk a r opciót, akkor késôbb meg kell adni egy promptnál az új szöveget. Minden alkalommal, mikor a kerestt szöveg elôfordul, a felhasználó egy promptnál megadhatja, hogy a kérdéses elôfordulást cserélni akarja-e, vagy nem. Az y leütésére a szöveg kicserélôdik, és a keresés folytatódik, n megadásakor viszont csak a keresés folytatódik, de nem történik csere. Az r megadására az összes további találat lecserélôdik anélkül, hogy a program erre külön megerôsítést kérne. (Nézzük meg a korábban tárgyalt nnn opciót), vagy a ^C kombinációt a keresés és csere befelyezésére.

A ^L kombinációra az elôbbi keresés megismétlôdik.

Regular Expressions


A number of special character sequences may be entered as search text:

\*
This finds zero or more characters. For example, if you give A\*B as the search text, JOE will try to find an A followed by any number of characters and then a B.

\?
This finds exactly one character. For example, if you give A\?B as the search text, JOE will find AXB, but not AB or AXXB.

\^ \$
These match the beginning and end of a line. For example, if you give \^test\$, then JOE with find test on a line by itself.

\< \>
These match the beginning and end of a word. For example, if you give \<\*is\*\>, then joe will find whole words which have the sub-string is within them.

\[...]
This matches any single character which appears within the brackets. For example, if \[Tt]his is entered as the search string, then JOE finds both This and this. Ranges of characters can be entered within the brackets. For example, \[A-Z] finds any uppercase letter. If the first character given in the brackets is ^, then JOE tries to find any character not given in the the brackets.

\c
This works like \*, but matches a balanced C-language expression. For example, if you search for malloc(\c), then JOE will find all function calls to malloc, even if there was a ) within the parenthesis.

\+
This finds zero or more of the character which immediately follows the \+. For example, if you give \[ ]\+\[ ], where the characters within the brackets are both SPACE and TAB, then JOE will find whitespace.

\\
Matches a single \.

\n
This finds the special end-of-line or line-break character.

A number of special character sequences may also be given in the replacement string:

\&
This gets replaced by the text which matched the search string. For example, if the search string was \<\*\>, which matches words, and you give "\&", then joe will put quote marks around words.

\0 - \9
These get replaced with the text which matched the Nth \*, \?, \+, \c, \+, or \[...] in the search string.

\\
Use this if you need to put a \ in the replacement string.

\n
Use this if you need to put a line-break in the replacement string.

Some examples:
Suppose you have a list of addresses, each on a separate line, which starts with "Address:" and has each element separated by commas. Like so:
Address: S. Holmes, 221b Baker St., London, England
If you wanted to rearrange the list, to get the country first, then the city, then the person's name, and then the address, you could do this:
Type ^K F to start the search, and type:
Address:\*,\*,\*,\*\$
to match "Address:", the four comma-separated elements, and then the end of the line. When asked for options, you would type r to replace the string, and then type:
Address:\3,\2,\0,\1
To shuffle the information the way you want it. After hitting return, the search would begin, and the sample line would be changed to:
Address: England, London, S. Holmes, 221b Baker St.

Blocks


If you want to move, copy, save or delete a specific section of text, you can do it with highlighted blocks. First, move the cursor to the start of the section of text you want to work on, and press ^K B. Then move the cursor to the character just after the end of the text you want to affect and press ^K K. The text between the ^K B and ^K K should become highlighted. Now you can move your cursor to someplace else in your document and press ^K M to move the highlighted text there. You can press ^K C to make a copy of the highlighted text and insert it to where the cursor is positioned. ^K Y to deletes the highlighted text. ^K W, writes the highlighted text to a file.
A very useful command is ^K /, which filters a block of text through a unix command. For example, if you select a list of words with ^K B and ^K K, and then type ^K / sort, the list of words will be sorted. Another useful unix command for ^K /, is tr. If you type ^K / tr a-z A-Z, then all of the letters in the highlighted block will be converted to uppercase.
After you are finished with some block operations, you can just leave the highlighting on if you don't mind it (of course, if you accidently hit ^K Y without noticing...). If it really bothers you, however, just hit ^K B ^K K, to turn the highlighting off.

Indenting program blocks

Auto-indent mode toggled with the ^T I command. The joerc is normally set up so that files with names ending with .p, .c or .h have auto-indent mode enabled. When auto-indent mode is enabled and you hit Return, the cursor will be placed in the same column that the first non-SPACE/TAB character was in on the original line.
You can use the ^K , and ^K . commands to shift a block of text to the left or right. If no highlighting is set when you give these commands, the program block the cursor is located in will be selected, and will be moved by subsequent ^K , and ^K . commands. The number of columns these commands shift by can be set through a ^T option.

Windows

You can edit more than one file at the same time or edit two or more different places of the same file. To do this, hit ^K O, to split the screen into two windows. Use ^K P or ^K N to move the cursor into the top window or the lower window. Use ^K E to edit a new file in one of the windows. A window will go away when you save the file with ^K X or abort the file with ^C. If you abort a file which exists in two windows, one of the window goes away, not the file.
You can hit ^K O within a window to create even more windows. If you have too many windows on the screen, but you don't want to eliminate them, you can hit ^K I. This will show only the window the cursor is in, or if there was only one window on the screen to begin with, try to fit all hidden windows on the screen. If there are more windows than can fit on the screen, you can hit ^K N on the bottom-most window or ^K P on the top-most window to get to them.
If you gave more than one file name to JOE on the command line, each file will be placed in a different window.
You can change the height of the windows with the ^K G and ^K T commands.

Keyboard macros


Macros allow you to record a series of keystrokes and replay them with the press of two keys. This is useful to automate repetitive tasks. To start a macro recording, hit ^K [ followed by a number from 0 to 9. The status line will display (Macro n recording...). Now, type in the series of keystrokes that you want to be able to repeat. The commands you type will have their usual effect. Hit ^K ] to stop recording the macro. Hit ^K followed by the number you recorded the macro in to execute one iteration of the key-strokes.
For example, if you want to put "**" in front of a number of lines, you can type:
^K [ ^A ** <down arrow> ^K ]
Which starts the macro recording, moves the cursor to the beginning of the line, inserts "**", moves the cursor down one line, and then ends the recording. Since we included the key-strokes needed to position the cursor on the next line, we can repeatedly use this macro without having to move the cursor ourselves, something you should always keep in mind when recording a macro.
If you find that the macro you are recording itself has a repeated set of key-strokes in it, you can record a macro within the macro, as long as you use a different macro number. Also you can execute previously recorded macros from within new macros.

Repeat

You can use the repeat command, ^K \, to repeat a macro, or any other edit command or even a normal character, a specified number of times. Hit ^K \, type in the number of times you want the command repeated and press Return. The next edit command you now give will be repeated that many times.
For example, to delete the next 20 lines of text, type:
^K 20<return>^Y

Rectangle mode

Type ^T X to have ^K B and ^K K select rectangular blocks instead of stream-of-text blocks. This mode is useful for moving, copying, deleting or saving columns of text. You can also filter columns of text with the ^K / command- if you want to sort a column, for example. The insert file command, ^K R is also effected.
When rectangle mode is selected, over-type mode is also useful (^T T). When over-type mode is selected, rectangles will replace existing text instead of getting inserted before it. Also the delete block command (^K Y) will clear the selected rectangle with SPACEs and TABs instead of deleting it. Over-type mode is especially useful for the filter block command (^K /), since it will maintain the original width of the selected column.

Címke keresése

Ha épp egy hosszú, sok forrásfájlból álló C programot írsz, használd a ctags programot tagsfájlok létrehozására. Ez a fájl programozási szimbólumok listáját tartalmazza, illetve azt, hogy melyik szimbólum melyik fájlban hol van definiálva. A ^K ; parancs segítségével lehet ezen szimbólumokat (függvények, konstansok stb.) megtekinteni, betölteni azt a fájlt, amelyben a szimbólum definiálva lett, továbbá odavinni a kurzort a definíció pozíciójára. A ^K ; parancs megkeresi a kivánt szimbólumot, de azt utána alapértelmezésként használja. Mivel a ^K ; parancs az aktuális ablakba tölti be a definíciós fájlt, valószínûleg szükség lehet újabb ablak megnyitására (a ^K O parancs segítségével) azért, hogy az eredeti fájl is betöltve maradjon.

Shell-ablakok

Shell-ablak is nyitható a JOE egy ablakában, mégpedig a ^K ' parancs begépelésével. Ha a kurzor a shell-ablak alján van (üss ^K V-t ha nem), akkor minden begépelt parancs a shell-nek szól. Minden shell-tôl származó vagy a shell-ben végrehajtott parancs outputja a shell-ablakba íródik (ha a kurzor a shell-ablak alján van, akkor folyamatosan követi az outputot). Ez a parancs nagyon hasznos, ha rögzíteni akarjuk a shell-ben végrehajtott parancsok eredményét - például egy make parancs outputját, egy grepping eredményét, vagy egy könyvtár listáját egy FTP session közben. A nyomtatható karaktereken kívül a ^C, Backspace, DEL, Return és ^D billentyûk is a shell-re vonatkoznak. Ha meg akarod szüntetni a shell-output rögzítését gépeld be az exit parancsot. Ha ^C-t nyomsz egy shell-ablakban, és a kurzor nincs az ablak alján, az lelövi shell-t.

Környezeti változók


Ahhoz, hogy helyesen dolgozhass a JOE-val, sok más környezeti beállításnak helyesnek kell lennie. A számítógép és a terminál közötti kapcsolat helyesen kell beállítva legyen ahhoz, hogy a képernyô frissítése simán menjen. Használd a stty nnn parancsot ennek beállítására. A beállitás közelítse meg az átvitel sebességét amennyire csak lehet. Példaul ha te egy 1200 baud-os modemen keresztül vagy csatlakozva, akkor add meg ezt az értéket a stty után. Ha egy 14.4 kbaud-os modemmel vagy csatlakozva, de a terminál csak 9600 baud-ot bír, akkor állítsd a sebességet 9600 baud-ra. A különösen magas 38400-as értéket vagy a extb parancsot a nagyon nagy sebességû kapcsolat jelzésére lehet használni, ilyen a memóriatérképes konzol vagy egy X-window-zos terminál emulátor. Ha nem tudnád hasznalni a stty parancsot az aktuális átviteli sebesség beállítására (talán mert a modem más sebbességgel kommunikál a számítógépeddel mint a telefonvonalon keresztül a másik géppel), megadhatsz egy numerikus értéket a BAUD nevû környezetváltozóba (a következôképpen: setenv BAUD 9600 csh esetén, vagy BAUD=9600; export BAUD sh esetén).
A TERM környezetváltozónak az általad használt termináltípusnak megfelelôen kell beállítva lennie. Ha a terminálod mérete (sorok illetve oszlopok száma) eltér attól ami a TERMCAP-ben vagy a TERMINFO-ban be van állítva, akkor ezeket megváltoztathatod a stty rows nn cols nn paranccsal, vagy a LINES és a COLUMNS környezetváltozók beállításával.
A JOE normálisan ^S/^Q-s módszert feltételez a számítógep es a terminálod közötti folyamatos ellenôrzésre (azaz ha a számítógép túl gyorsan küldi a karaktereket a terminálodra, akkor a terminálod egy ^S-sel jelzi a kimenet várakoztatását a másik gépen és ^Q-val az újraindítást). Ha folyamatos ellenôrzésre out-of-band vagy hardver handshaking használatos, vagy ha a terminálod majdnem mindig fogadni tudja a számítógéprôl jövô karaktereket, akkor a NOXON környezetváltozó beállításával megszüntetheted a JOE számára a ^S/^Q handshaking-et. Ha a terminálod és a számítógép közötti összeköttetés nem handshaking-es, és a terminálod nem elég gyors ahhoz, hogy folyamatosan fogadja a számítógép kimenetét, akkor a DOPADDING környezetváltozó megfelelô beállításával lelassíthatod az outputot a JOE számára úgy, hogy un. PAD karakterek kerülnek beszúrásra amikor a terminál képernyôjének a frissitése történik.

Fájlnevek

Ha a JOE bárhol egy fájlnev megadását várja, akár a parancssorban akár egy editoron belüli promptnál, akkor a következôket lehet begépelni:

!parancs
Egy shell-parancs részére adatot küld, vagy egy shell-parancstól adatot fogad. Például a joe '!ls' hatására a könyvtár listáját mint szövegfájlt betölti az editorba, vagy az editoron belüli ^K D !mail jhallen@world.std.com paranccsal elküldi a megadott címre az aktuálisan szerkesztett fájlt.

>>fajlnev
Így a szerkesztett szöveget hozzáfûzi a "fajlnev." nevû fájlhoz.

fajlnev,KEZD,MERET
Íly módon közvetlenül hozzáférhetünk egy fájlhoz vagy egy eszközhöz. A KEZD és a MERET decimálisan (pl.: 123), oktálisan (pl.: 0777) vagy hexadecimálisan (pl.: 0xFF) adható meg. Például, írd be a joe /dev/fd0,508,2 parancsot, ha az elsôdleges floppy meghajtó 508. illetve 509. bájtját akarod módositani Linux alatt.

-
Használd ezt, ha a standard inputról akarsz olvasni vagy a standard outputra akarsz írni. Például a JOE elhelyezhetô egy több parancsból álló pipe-ban is, pl: quota -v | joe - | mail root, ha az alacsony kvótád miatt akarnál panaszkodni.

A joerc fájl

A ^T opciói, a help képernyôi, stb. mind a JOE inicializációs fájljában vannak definiálva. Ha errôl a fájlról (amely általában a /usr/local/lib/joerc útvonalon található) készítesz egy másolatot a $HOME/.joerc-ba, akkor a paramétereket beállíthatod saját ízlésed szerint. Az inicializációs fájl szintaktikája majdhogynem magától értetôdô, de tartalmaz további instrukciókat is.

Köszönetnyilvánítások

A JOE-t Joseph H. Allen írta. Ha kérdésed van, vagy hibát találtál írj a következô címre: jhallen@world.std.com. Larry Foard (entropy@world.std.com) és Gary Gray (ggray@world.std.com) sokat segített a JOE készítésében.


Fordították:
Vajda Kristófkitto@valerie.inf.elte.hu
Ébner Lászlólebner@ludens.elte.hu
Ivicsics Mátyásmathiasrex@ludens.elte.hu
Kiss Tiborpatrick@valerie.inf.elte.hu
Kozman Bálintqzy@ludens.elte.hu
Török Róbertkubek@valerie.inf.elte.hu