MED(1) MED(1) BBEEZZEEIICCHHNNUUNNGG med - bildschirmorientierter Editor UU``BBEERRSSIICCHHTT mmeedd [--nn] [--rr] [--tt] [--TT_t_a_b_d_a_t_e_i] _d_a_t_e_i [_s_t_a_r_t_z_e_i_l_e] [_s_u_c_h_b_e_g_r_i_f_f] mmeedd -- mmeedd BBEESSCCHHRREEIIBBUUNNGG Der _m_e_d ist ein bildschirmorientierter Editor, der dazu dient, Textdateien zu erstellen, zu durchsuchen und zu a`ndern. Seine Sta`rken liegen u.a. in der leichten Erlernbarkeit, in der Fenstertechnik und in der Zweidimen- sionalita`t. Nach dem Aufruf mmeedd _d_a_t_e_i, werden die ersten Zeilen der Datei auf dem Bildschirm angezeigt. Wenn die Datei nicht vorhanden ist wird sie geo`ffnet und ein leeres Fenster angezeigt. Der Aufruf mmeedd _d_a_t_e_i (ohne Parameter) veranlas`t den MED, die letzte Sitzung weitgehend wiederherzustellen. Mit dem Parameter -- kann das neuerliche Aufsetzen auf das vergan- gene _a_k_t_u_e_l_l_e Fenster begrenzt werden. --nn Die Option -n (_noediting) verhindert ein U`berschreiben der aufgerufenen Datei; sie kann nur gelesen werden. --rr Bei Angabe der Option -r werden alle Zeichensequen- zen, die per Tastatur eingegeben werden, in der Datei _$_S_A_V_E_/_M_E_K_* gespeichert. Diese Datei erlaubt eine automatische Wiederholung einer Editier- sitzung. Dabei ist zu beachten, das` die zu edi- tierende Datei nicht von der urspru`nglichen Datei abweichen darf. --tt Die Option -t unterdru`ckt die Komprimierung von Leerzeichen nach Tabulatorzeichen am Anfang von editierten Zeilen. --TT Die Option -T _t_a_b_d_a_t_e_i setzt dort Tabulatoren wo ein Zeichen in der _e_r_s_t_e_n Zeile von _t_a_b_d_a_t_e_i ver- schieden vom vorhergehenden Zeichen ist. Der Rahmen eines Fenster begrenzt den sichtbaren Teil einer Textdatei. Dieses Fenster kann in beliebige Rich- tungen bewegt werden. Innerhalb des Fensters gibt die Schreibmarke die Position der Textvera`nderungen an. ___ ___ ____ D_i_e__ Schreibmar_k_e___w_i_r_d m_i_t___d_en Pfe_i_l_t_a_sten |_|^_|_ |_|v_|_ |_<_-_|_ |_-_>_|_ oder mit |_r_e_t_u_r_n_|_ , |_h_o_m_e_|_ und |_t_a_b_|_ positioniert. 1 MED(1) MED(1) Wenn die Schreibmarke vor bereits editiertem Text posi- tioniert ist, wird dieser Text u`berschrieben (_R_e_p_l_a_c_e_- _m_o_d_u_s). Im _I_n_s_e_r_t_m_o_d_u_s werden die Zeichen vor der Schreibmarke eingefu`gt und die nachfolgenden Zeich_e_n__n_a_c_h_ rechts verschoben. Der Insertmodus wird__m_i_t___|__i_n_s_e_r_t_|_ eingestellt. Eine nochmalige Eingabe von |_i_n_s_e_r_t_|_ stellt den Ins_e_r_t_m_o_d_us wieder aus und den _R_e_p_l_a_c_e_m_o_d_u_s wieder ein. |_d_e_l_c_h_|_ lo`scht das aktuelle Zeichen. Funktionstasten sind spezielle Tasten, die sich oben oder rechts auf der Tastatur befinden. U`blicherweise werden die Funktionen des MED (z.B. Zeile lo`schen, Fenster ero`ffnen) durch Dru`cken von Funktionstasten ausgelo`st. Manche Funktionen verwenden Parameter wie z.B. eine Zahl, einen Suchbegriff, einen Dateinamen. Diese Parameter wer- den wie_f_o_l_g_t__eingegeben: __________ |_e_n_t_e_r_|_ zahl oder__z_e_i_c_h_enkette |_F_u_n_k_t_i_o_n_|_ . Nach der Eingabe von |_e_n_t_e_r_|_ wird die Schreibmarke durch das Zeichen @ ersetzt, so das` ihre urspru`ngliche Posi- tion markiert ist. Die Schreibmarke springt in die letzte Zeile des Bildschirms und es ko`nnen Parameter eingegeben werden. Diese unterste Zeile dient auch dazu, Fehlermeldungen anzuzeigen. WWEEIITTEERREESS Die Zeichen an den Ra`ndern des Fensters haben folgende Bedeutung: I Rahmen fu`r eine Textzeile. \\ Ende des Textes ist u`berschritten worden. Das Edi- tieren in diesem Bereich ist weiterhin mo`glich. Die Randzeichen a`ndern sich, sobald die Zeile in einen internen Puffer u`bernommen worden ist. < Links vom Fenster ist Text vorhanden (mo`glicherweise Leerzeichen). > Rechts vom Fenster ist Text vorhanden (Leerzeichen werden nicht angezeigt). Bei Dateien, fu`r die keine Schreibberechtigung besteht, werden die Editier-Funktionen des MED nicht ausgefu`hrt. AAUUTTOOMMAATTIISSCCHHEE SSIICCHHEERRHHEEIITTSSKKOOPPIIEENN Der MED legt bei Abschlus` jeder Sitzung unter dem Namen _*_._b_a_k Sicherheitskopien der bearbeiteten Dateien an, so das` A`nderungen wieder ru`ckga`ngig gemacht werden ko`nnen: Mit dem UNIX Kommando mv foo.bak foo kann die urspru`ngliche Datei _f_o_o wiederhergestellt wer- den. 2 MED(1) MED(1) Da sich im Laufe der Zeit etliche _*_._b_a_k Dateien ansammeln ko`nnen, ist es empfehlenswert, diese in regelma`s`igen Absta`nden zu lo`schen. BBEEMMEERRKKUUNN_GG_____ ______ ______ ______ |_e_o_l_n_|_ |_s_o_l_n_|_ |_s_k_i_p__|___u_nd |_b_a__c__k__|__ ko`nnen u`berall dort ver- wendet werden, wo |_<_-_|_ und |_-_>_|_ eingesetzt werden ko`nnen. 3 MED(1) MED(1) FFUUNNKKTTIIOONNSSTTAASSTTEENN UUNNDD IIHHRREE BBEEDDEEUUTTUUNNGG Schreibmarke steuern: box tab(#); lbw(1.8c) lw(5.2c). |^ |v <- ->#wie u`blich eoln#Ende der Zeile soln#Anfang der Zeile skip#Ende+1 des Nachfolgewortes back#Anfang des Vorga`ngerwortes return#Anfang der na`chsten Zeile +-tab#Tabulatorsprung +-page#ganzseitiges Bla`ttern +-line#drittelseitiges Bla`ttern +-search#Suchen von Zeichenkette goto#Sprung auf Zeile left#Fenster nach links bewegen right#Fenster nach rechts bewegen Datei- und Fensterfunktionen: box tab(#); lbw(1.8c) lw(5.2c). use#andere Datei edi- tieren window#Fenster o`ffnen/schlies`en chwin#Fensterwechsel Kopieren, Lo`schen und Einfu`gen: box tab(#); lbw(1.8c) lw(5.2c). backspace#wie u`blich close#Zeilen lo`schen (CLOSE-Puffer) delch#Zeichen lo`schen open#Leere Zeilen einfu`gen pick#Kopie von Text in PICK-Puffer put#PICK-Puffer in Text einfu`gen restore#CLOSE-Puffer in Text einfu`gen Weitere: box tab(#); lbw(1.8c) lw(5.2c). do#UNIX Kommando ausfu`hren enter#Parameteru`bernahme exit#Editier-Ende mit Zuru`ckschreiben insert#Insertmodus ein/ausschalten con- trol#Eingabe von Steuerzeichen refresh#Bildschirm neu aus- geben save#Text zuru`ckschreiben settab#Tabulator setzen _______macr_o_#_Z_e_i_c_h_ensequenz speichern |_e_n_t_e_r_|_ _n |_|^_|v_<_-_S-_c>_h|_reibmarke _n Zeilen/Spalten in Richtung des Pfeiles bewegen. ___________ |_b_a_c_k_s_p_a_c_e_|_ Lo`schen von Zeic_h_e_n__l_i_n_k_s__ von der Schreibmarke. Beispiel: E R X |_b_a_c_k_s_p_a_c_e_|_ R ist identisch mit E R R. _______ |_c_h_w_i_n_|_ Das na`chste Fenster wird das aktuelle Fenster. _______ _______ |_e_n_t_e_r_|_ _n |_c_h_w_i_Fn_e|_nster _n wird aktuell. (Die Fenster werden vom MED in der Reihenfolge ihres Aufrufs nummeriert.) _______ _______ |_e_n_t_e_r_|_ <--> |_c_Fh_ew_ni_sn_t|_ernummer wird dem Text entnommen. _______ |_c_l_o_s_e_|_ Die aktuelle Zeile wird in den CLOSE-Puffer geschrieben und gelo`scht. 4 MED(1) MED(1) _______ _______ |_e_n_t_e_r_|_ |_c_l_o_s_e_|_Die Zeichen von der Schreibmarke bis zum Ende der Zeile werden gelo`scht und im CLOSE-Puffer gespei- chert. Die nachfolgende Zeile ru`ckt auf. _______ _______ |_e_n_t_e_r_|_ _n |_c_l_o_s_Le_o|_`schen von _n Zeilen. Gelo`schte Zeilen werden im CLOSE-Puffer gespeichert. _______ _______ |_e_n_t_e_r_|_ |^|v<-->D|_ac_sl_o_s_de_u|_rch Anfang- und Endposition der Schreibmarke definierte Text-Rechteck wird gelo`scht und im CLOSE-Puffer gespeichert. _________ |_c_o_n_t_r_o_l_|_ Leitet _d_i_e___E_i_n_gabe von nicht-druckbaren Zeichen ein. |_c_o_n_t_r_o_l_|_ wird als @@ angezeigt und repra`sentiert _a_u_f _d_e_m _B_i_l_d_s_c_h_i_r_m zusammen mit dem folgenden Zeichen ein nicht-druckbares Zeichen im _T_e_x_t. Eine A`nderung der Marke hebt diese Son- dereingabe auf. _______ |_d_e_l_c_h_|_ Zeichen bei der Schreibmarke lo`schen. Nachfol- gende Zeichen werden um eine Spalte nach links ver- schoben. ____ ____ |_d_o_|_ Vorheriges |_d_o_|_ Kommando wiederholen. _______ ____ ____ |_e_n_t_e_r_|_ |_d_o_|_ Aktuelle Zeile als |_d_o_|_ Kommando ausfu`hren. _______ ____ |_e_n_t_e_r_|_ _c_m_d |_d_o__c|__m_d ist ein UNIX Kommando im Format [[nn[[ll]]]] pprrgg [[aarrgg......]] _n Paragraphen (bzw. _n Zeilen, wenn _l verwendet wird) werden dem Filter _p_r_g mit den Parametern _a_r_g_s u`bergeben. Bei erfolgreichem Ablauf wird das Ergebnis in das aktuelle Fenster eingetragen. Ohne Angabe von _n oder _n_l wird der Text ab Schreib- markenposition u`berschrieben und der ersetzte Text im CLOSE-Puffer gespeichert. ______ |_e_x_i_t_|_ Beenden des MED. Alle Dateien mit gea`nderten Tex- ten werden zuru`ckgeschrieben. Der urspru`ngliche Text wird in einer _*_._b_a_k Datei gerettet. _______ ______ |_e_n_t_e_r_|_ |_e_x_i_t_|_Alle Dateien mit gea`nderten Texten werden zuru`ck- geschrieben. Der MED wird nicht beendet. _______ ______ |_e_n_t_e_r_|_ aa |_e_x_i_t_B|_eenden des MED ohne zuru`ckzuschreiben (abort). _______ ______ |_e_n_t_e_r_|_ aadd |_e_x_i_Bt_e|_enden des MED mit Speicherauszug und ohne zuru`ckzuschreiben (abort und dump). ______ |_g_o_t_o_|_ Schreibmarke auf erste Zeile und Spalte der Text- datei setzen. 5 MED(1) MED(1) _______ ______ |_e_n_t_e_r_|_ |_g_o_t_o_|_Schreibmarke an das Ende des Textes setzen. _______ ______ |_e_n_t_e_r_|_ _n |_g_o_t_o_S|_chreibmarke auf die _nte Zeile setzen. _______ ______ |_e_n_t_e_r_|_ <--> |_g_Zo_et_io_l|_ennummer wird dem Text entnommen. ________ |_i_n_s_e_r_t_|_ Einfu`gemodus setzen. Jedes eingegebene Zeichen wird vor der Schreibmarke eingefu`gt. Alle nach- folgenden Zeichen werden um eine Spalte nach__r_e_c_h_t_s_ verschoben. Ein erneutes Dru`cken von |_i_n_s_e_r_t_|_ hebt den Einfu`gemodus wieder auf. ______ |_l_e_f_t_|_ Fenster um ein Drittel nach links verschieben. _______ ______ |_e_n_t_e_r_|_ |_l_e_f_t_|_Fenster nach links verschieben, bis aktuelle Spalte letzte Spalte ist. _______ ______ |_e_n_t_e_r_|_ _n |_l_e_f_t_F|_enster um _n Spalten nach links verschieben. _______ |_+_l_i_n_e_|_ Um eine Drittelseite vorwa`rts bla`ttern. _______ _______ |_e_n_t_e_r_|_ |_+_l_i_n_e_|_Verschiebe Fenster, bis die aktuelle Zeile die erste Zeile ist. _______ _______ |_e_n_t_e_r_|_ _n |_+_l_i_n_Ue_m|__n Zeilen vorwa`rts bla`ttern. _______ |_-_l_i_n_e_|_ Um eine Drittelseite ru`ckwa`rts bla`ttern. _______ _______ |_e_n_t_e_r_|_ |_-_l_i_n_e_|_Verschiebe Fenster, bis die aktuelle Zeile die let- zte Zeile ist. _______ _______ |_e_n_t_e_r_|_ _n |_-_l_i_n_Ue_m|__n Zeilen ru`ckwa`rts bla`ttern. ______ |_o_p_e_n_|_ Leere Zeile einfu`gen. _______ ______ |_e_n_t_e_r_|_ |_o_p_e_n_|_Zeile vor Schreibmarke aufspalten. Der Text von der Schreibmarke bis zum Zeilenende wird in die neu eingerichtete na`chste Zeile verschoben. _______ ______ |_e_n_t_e_r_|_ _n |_o_p_e_n__n|_leere Zeilen einfu`gen. _______ ______ |_e_n_t_e_r_|_ |^|v<-->W|_io_rp_de_n_d|_ie Schreibmarke um n Zeilen _h_i_n_a_u_f- oder _h_i_n_- _u_n_t_e_r bewegt, werden n _Z_e_i_l_e_n eingefu`gt. Wird die Schreibmarke nach _l_i_n_k_s bzw. _r_e_c_h_t_s und ggf. hin- auf- oder hinunter bewegt, wird ein leeres Rechteck (_b_l_a_n_k_s) in den Text eingefu`gt, dessen linke obere Ecke durch die Ausgangsposition der Schreibmarke und dessen rechte untere Ecke durch die Endposition der Schreibmarke definiert wird. 6 MED(1) MED(1) _______ |_+_p_a_g_e_|_ Um eine ganze Seite vorwa`rts bla`ttern. _______ _______ |_e_n_t_e_r_|_ _n |_+_p_a_g_Ue_m|__n ganze Seiten vorwa`rts bla`ttern. _______ |_-_p_a_g_e_|_ Um eine ganze Seite ru`ckwa`rts bla`ttern. _______ _______ |_e_n_t_e_r_|_ _n |_-_p_a_g_Ue_m|__n ganze Seiten ru`ckwa`rts bla`ttern. ______ |_p_i_c_k_|_ Die aktuelle Zeile wird im PICK-Puffer gespeichert. _______ ______ |_e_n_t_e_r_|_ _n |_p_i_c_k__n|_Zeilen werden im PICK-Puffer gespeichert. _______ ______ |_e_n_t_e_r_|_ |^|v<-->D|_ap_si_c_dk_u|_rch die Bewegung der Schreibmarke definierte Textrechteck wird im PICK-Puffer gespeichert. _____ |_p_u_t_|_ Der Inhalt des PICK-Puffers wird vor der Schreib- marke eingefu`gt. _______ _____ |_e_n_t_e_r_|_ _n |_p_u_t_|_Der Inhalt des PICK-Puffers wird _n Mal vor der Schreibmarke eingefu`gt. _______ _____ |_e_n_t_e_r_|_ <--> |_p_Du_it_e|_Anzahl der Kopien wird dem Text entnommen. _________ |_r_e_f_r_e_s_h_|_ Der Bildschirm wird gelo`scht und der Text neu angezeigt. _________ |_r_e_s_t_o_r_e_|_ Der Inhalt des CLOSE-Puffers wird vor der Schreib- marke eingefu`gt. _______ _________ |_e_n_t_e_r_|_ i_n |_r_e_s_Dt_eo_rr_e_|_Inhalt des CLOSE-Puffers wird _n Mal vor der Schreibmarke eingefu`gt. _______ _________ |_e_n_t_e_r_|_ <--> |_r_De_is_et_o_Ar_ne_z|_ahl der Kopien wird dem Text entnommen. _______ |_r_i_g_h_t_|_ Fenster um ein Drittel nach rechts verschieben. _______ _______ |_e_n_t_e_r_|_ |_r_i_g_h_t_|_Fenster nach rechts verschieben bis aktuelle Spalte erste Spalte ist. _______ _______ |_e_n_t_e_r_|_ _n |_r_i_g_h_Ft_e|_nster um _n Spalten nach rechts verschieben. ______ |_s_a_v_e_|_ Text des aktuellen Fensters wird in die Datei zuru`ckgeschrieben. _______ ______ |_e_n_t_e_r_|_ _n_a_m_e |_s_Ta_ev_xe_t|_des aktuellen Fenster wird in die Datei _n_a_m_e geschrieben. _______ ______ |_e_n_t_e_r_|_ <--> |_s_Da_ev_re_|_Dateiname wird dem Text entnommen. _________ |_+_s_e_a_r_c_h_|_ Suche vorwa`rts (zum Dateiende) mit zuletzt verwen- detem Suchbegriff. 7 MED(1) MED(1) _______ _________ |_e_n_t_e_r_|_ |_+_s_e_a_r_c_Sh_u|_chbegriff sind die Zeichen von der Schreibmarke bis zum na`chsten Leerzeichen. _______ _________ |_e_n_t_e_r_|_ _b_e_g_r_i_f_fSu|_c+_hs_ee_a_vr_oc_rh_w|_a`rts nach _b_e_g_r_i_f_f. _______ _________ |_e_n_t_e_r_|_ <--> |_+_Ss_ue_ca_hr_bc_eh_g|_riff wird aus dem Text entnommen. _________ |_-_s_e_a_r_c_h_|_ Suche ru`ckwa`rts (zum Dateianfang) mit zuletzt verwendetem Suchbegriff. _______ _________ |_e_n_t_e_r_|_ |_-_s_e_a_r_c_Sh_u|_chbegriff sind die Zeichen von der Schreibmarke bis zum na`chsten Leerzeichen. _______ _________ |_e_n_t_e_r_|_ _b_e_g_r_i_f_fSu|_c-_hs_ee_a_rr_uc_`h_c|_kwa`rts nach _b_e_g_r_i_f_f. _______ _________ |_e_n_t_e_r_|_ <--> |_-_Ss_ue_ca_hr_bc_eh_g|_riff wird aus dem Text entnommen. ________ |_s_e_t_t_a_b_|_ Ein Tabulator wird in die aktuelle Spalte gesetzt. _______ ________ |_e_n_t_e_r_|_ |_s_e_t_t_a_b_T|_abulator in der aktuellen Spalte wird, falls vorhanden, gelo`scht. _______ ________ |_e_n_t_e_r_|_ _t_a_b_f_i_l_eTa|_bs_ue_lt_at_ta_ob_r|_en setzen (siehe Option --TT bei Aufruf des MED). _____ |_u_s_e_|_ Die alternative Datei des aktuellen Fensters wird angezeigt. _______ _____ _____ |_e_n_t_e_r_|_ |_u_s_e_|_ Dateiname fu`r |_u_s_e_|_ sind die Zeichen von der Schreibmarke bis zum na`chsten Leerzeichen. _______ _____ |__e__n__t__e__r_|_ _d_a_t_e_i_n_aD_me_er |_au_ks_te_u|_elle Text wird zur alternativen Datei. Die genannte Datei ersetzt den Fensterinhalt. Zeilen- nummer und/oder Suchbegriff ko`nnen wie beim Aufruf des MED angegeben werden. Ein Editieren der Datei kann durch Eingabe von --nn vor dem Dateinamen ver- hindert werden. _______ _____ |_e_n_t_e_r_|_ <--> |_u_Ps_ae_r|_ameter werden dem Text entnommen. ________ |_w_i_n_d_o_w_|_ Je nach Schreibmarkenpositionierung wird der Bild- schirm horizontal oder vertikal geteilt. Bei Posi- tion der Schreibmarke in der ersten oder letzten _S_p_a_l_t_e des Bildschirms bestimmt die Zeilenposition der Schreibmarke die horizontale Teilung des Fen- sters. Bei Position der Schreibmarke in der ersten oder letzten _Z_e_i_l_e des Bildschirms bestimmt die Spaltenposition der Schreibmarke die vertikale Teilung des Fensters. Dem Benutzer stehen nun zwei oder mehr Fenster zur Verfu`gung. Da_s__n_e_ue Fenster zeigt eine Standard-Datei an. Mit |_u_s_e_|_ kann jed- erzeit eine andere Datei angezeigt und editiert werden. Innerhalb des neuen Fensters sind alle MED-Funktionen weiterhin anwendbar. 8 MED(1) MED(1) _______ ________ |_e_n_t_e_r_|_ |_w_i_n_d_o_w_D|_as zuletzt eingerichtete Fenster wird geschlossen. _______ ________ |_e_n_t_e_r_|_ _n_a_m_e |_w_Ei_in_nd_o_nw_e|_ues Fenster wird ero`ffnet und die Datei _n_a_m_e wird angezeigt. MMAAKKRROOSS Nach Einga_b_e__v_o_n_ _______ |_m_a_c_r_o_|_ _T_a_s_t_e_n_a_n_s_c_h_l_a_`_g_e |_m_a_c_r_o_|_ _T_a_s_t_e wird die Zeicheneingabe unter _T_a_s_t_e gespeichert. Das Beta`tigen dieser Taste ist nun a`quivalent zur Eingabe der gesamten Anschlagsequenz. Es ko`nnen nur Tasten fu`r druckbare Zeichen mit Makros belegt werden. Mit _______ _______ |_m_a_c_r_o_|_ |_m_a_c_r_o_|_ TTaassttee wird die urspru`ngliche Funktion der Taste wieder- hergestellt. DDAATTEEIIEENN tab(#); l l. /tmp/MED* #tempora`re Arbeitsdatei (PICK- und CLOSE-Puffer) $SAVE/MED* #nimmt Zustand des MED beim Beenden auf $SAVE/MEK* #zum Speichern der gedru`ckten Tasten /usr/lib/med/default#bei fehlender Datei wird auf diese ausgewichen *.bak #Kopie der editierten Datei SSIIEEHHEE AAUUCCHH terminfo(5), curses(3X), med_keycap(5). _M_E_D _T_u_t_o_r_i_a_l. FFEEHHLLEERR Der Absturz des Editors kann den Zustand ihres_T_e_r_m_i_n_a_l_s_ vera`ndern. Wenn das Terminal noch auf |_l_i_n_e_f_e_e_d_|_ reagiert, kann der alte Zustand wiederhergestellt werden, indem das UNIX Kommando stty sane __________ eingegeben und mit |_l_i_n_e_f_e_e_d_|_ abgeschlossen wird. 9