Въведение в Емакс. Условията за копиране са в края на текста. Командите на Емакс най-често включват клавишите CONTROL (понякога отбелязван с CTRL или CTL) и META (понякога отбелязван с EDIT или ALT). Вместо да се изписват с пълно име всеки път, ние ще използваме следните съкращения: C-<знак> означава задържане на клавиша CONTROL, докато се натиска знака <знак>. Така C-f ще означава: докато се задържа натиснат клавиша CONTROL, се натиска f. M-<знак> означава задържане натиснат на клавиша META (или EDIT, или ALT), докато се натиска <знак>. Ако няма клавиш META, EDIT или ALT, вместо него натиснете и отпуснете клавиша ESC и след това въведете <знак>. Ние записваме , за да отбележим клавиша ESC. Важна бележка: в края на Емакс сесията въведете C-x C-c. (Два знака.) За да прекъснете частично въведена команда, използвайте C-g. Знаците „>>“ отляво ви дават указание да изпълните команда. Например: <> >> Сега въведете C-v (Показване на следващия екран), за да се придвижите към следващия екран. (Направете го сега, задръжте CONTROL, докато натискате „v“). Отсега нататък вие ще правите това винаги, когато прочетете екрана. Забележете, че има припокриване на два реда, когато се придвижвате от екран в екран; това осигурява някаква приемственост, така че да можете по-лесно да продължите с четенето на текста. Първото нещо, което трябва да знаете, е как да се придвижвате от едно място на текста към друго. Вие вече знаете как да се придвижвате екран напред, с C-v. За да се придвижите екран назад, въведете M-v (задръжте клавиша META и натиснете „v“, или въведете и после „v“, ако нямате клавиш META, EDIT или ALT). >> Опитайте се да въведете M-v и след това C-v няколко пъти. * ОБОБЩЕНИЕ ----------- Следващите команди са полезни при пълноекранно разглеждане: C-v Придвижване напред с един екран M-v Придвижване назад с един екран C-l Изчистване на екрана и пречертаване на целия текст, премествайки текста около курсора в средата на екрана. (Това е CONTROL-L, не CONTROL-1.) >> Намерете курсора и си запомнете какъв е текстът около него. След това въведете C-l. Намерете пак курсора и вижте, че същият текст е пак около курсора, но сега вече в средата на екрана. Ако пак натиснете C-l, тази част от текста ще се придвижи в горния край на екрана. Натиснете отново C-l и този текст ще отиде в долния край на екрана. Може също да използвате клавишите PageUp и PageDown за придвижване по екрани, ако вашият терминал ги притежава, но вие можете да редактирате по-ефективно, ако използвате C-v и M-v. * ОСНОВИ НА УПРАВЛЕНИЕТО НА КУРСОРА ----------------------------------- Придвижването от екран на екран е полезно, но как да се придвижите до определено място вътре в текста на екрана? Има няколко начина да го направите. Може да използвате клавишите стрелки, но е по-ефективно да държите ръцете си в стандартно положение и да използвате командите C-p, C-b, C-f и C-n. Тези знаци са еквивалентни на четирите клавиши стрелки по следния начин: Предишен ред (Previous), C-p : : Назад, C-b .... Текуща позиция на курсора .... Напред, C-f (Backward) : (Forward) : Следващ ред (Next), C-n >> Придвижете курсора до реда в средата на тази диаграма, използвайки C-n и C-p. След това натиснете C-l и ще видите цялата диаграма, центрирана на екрана. Ще намерите, че запомнянето на тези букви по думите на английски на действията, които извършват, е лесно: „P“ за Previous (предишен), „N“ за Next (следващ), „B“ за Backward (назад) и „F“ за Forward (напред). Вие ще използвате тези основни команди за придвижване на курсора през цялото време. >> Въведете няколко пъти C-n, за да доведете курсора до този ред. >> Придвижете се вътре в реда с няколко C-f и след това с няколко C-p. Вижте какво прави C-p, когато курсорът е в средата на реда. Всеки ред от текст завършва със знак за нов ред, който служи за отделянето на реда от следващия ред. (Последният ред във вашия файл трябва да има знак за нов ред в края, но Емакс не изисква такъв.) >> Опитайте C-b в началото на ред. Това трябва да ви придвижи в края на предишния ред. Това е така, защото курсорът се придвижва към знака за нов ред на предишния ред. C-f може да придвижва през знак за нов ред, точно както C-b. >> Направете няколко придвижвания с C-b, така че да добиете усещане къде се намира курсорът. След това няколко C-f, докато се върнете в края на реда. След това още няколко C-f, за да се придвижите до следващия ред. Когато се придвижвате след горния или долния край на екрана, текстът отвъд края се измества към екрана. Това се нарича „скролиране“. То позволява на Емакс да придвижва курсора към зададеното място в текста, без да го изкарва извън екрана. >> Опитайте се да придвижите курсора след долния край на екрана с C-n и вижте какво се случва. Ако придвижването по знаци е твърде бавно, може да пробвате придвижване по думи. M-f (META-f) придвижва курсора дума напред, а M-b придвижва дума назад. >> Въведете няколко M-f и M-b. Когато сте в средата на дума, M-f придвижва в края на думата. Когато сте в празно място между думи, M-f придвижва в края на следващата дума. M-b работи по подобен начин в противоположната посока. >> Въведете M-f и M-b няколко пъти, размесени с C-f и C-b, така че да можете да наблюдавате действието на M-f и M-b в различни места вътре и между думите. Забележете приликата между C-f и C-b, от една страна, и M-f и M-b, от друга. Много често Meta-знаците са използвани за действия върху единици, дефинирани от езика (думи, изречения, абзаци), докато Control-знаците действат върху основни единици, които са независими от това, какво редактирате (знаци, редове и други). Тази прилика се прилага върху редове и изречения: C-a и C-e придвижват до началото или края на ред, а M-a и M-e придвижват до началото и края на изречение. >> Опитайте няколко C-a, а след това няколко C-e. Опитайте няколко M-a, а след това няколко M-e. Вижте как повтарянето на C-a не прави нищо, докато повтарянето на M-a продължава придвижването с още едно изречение. Въпреки че тези клавишни комбинации не са точно аналогични, всяка една от тях изглежда естествена. Положението на курсора в текста се нарича „точка“. Перефразирано, курсорът показва на екрана къде е разположена точката в текста. Ето обобщение на простите действия, движещи курсора, включително придвижващите по дума и изречение: C-f Придвижва напред с един знак C-b Придвижва назад с един знак M-f Придвижва напред с една дума M-b придвижва назад с една дума C-n Придвижва до следващия ред C-p Придвижва до предишния ред C-a Придвижва до началото на ред C-e Придвижва до края на ред M-a Придвижва до началото на изречение M-e Придвижва до края на изречение >> Сега опитайте всички тези команди няколко пъти за практика. Тези са най-често използваните команди. Две други важни команди за движение на курсора са M-< (Meta по-малко), която придвижва до началото на целия текст, и M-> (Meta по-голямо), която премества до края на целия текст. При повечето терминали знакът „<“ е отбелязан над запетаята, така че трябва да използвате клавиша Shift, за да го напишете. На тези терминали трябва да използвате Shift, за да въведете и M-<; без клавиша Shift бихте въвели M-запетая. >> Опитайте M-< сега, за да се придвижите до началото на въведението. След това използвайте C-v колкото е нужно пъти, за да се придвижите до тук. >> Опитайте M-> сега, за да се придвижите до края на въведението. След това използвайте M-v колкото е нужно пъти, за да се придвижите до тук. Вие можете също да се придвижвате с клавишите-стрелки, ако вашият терминал има такива. Ние препоръчваме да научите C-b, C-f, C-n и C-p по три причини. Първо, те работят на всички видове терминали. Второ, веднъж след като добиете практика в използването на Емакс, ще откриете, че въвеждането на тези Control-знаци е по-бързо от въвеждането на клавишите стрелки, защото не трябва да премествате ръката си далеч от областта на клавишите с букви. Трето, веднъж след като си оформите навик да използвате тези команди с Control знаци, вие можете също така лесно да научите по-напредналите команди за движение на курсора. Повечето Емакс команди приемат числов аргумент; за повечето от тях той служи като брояч на повторения. Начинът, по който давате числов брояч, е с въвеждане на C-u, последвано от въвеждане на цифрите, и всичко това преди въвеждане на самата команда. Ако имате клавиш META (или EDIT или ALT), има друг, алтернативен начин да въведете числов аргумент: въведете цифрите, докато задържате клавиша META. Ние препоръчваме да научите начина с C-u, защото той работи на който и да е терминал. Числовият аргумент се нарича също „префиксен аргумент“, защото го въвеждате преди командата, за която е предназначен. Например C-u 8 C-f придвижва осем знака напред. >> Опитайте използването на C-n или C-p с числов аргумент, за да придвижите курсора до ред, близък до този, само с една команда. Повечето команди използват числовия аргумент като брояч на повторенията, но някои го използват за други цели. Няколко команди (но никоя от тези, които сте научили досега) го използват като флаг – присъствието на числов аргумент, независимо от стойноста му, кара командата да върши нещо различно. C-v и M-v са друг вид изключение. Когато им е даден аргумент, те скролират екрана нагоре или надолу със зададения брой редове, вместо с екрани. Например, C-u 8 C-v скролира екрана с 8 реда. >> Сега опитайте C-u 8 C-v. Това би трябвало да скролира екрана с 8 реда. Ако искате да скролирате отново надолу, може да дадете аргумент на M-v. Ако използвате графичен интерфейс, като X11 или MS-Windows, би трябвало да има тънка правоъгълна област, наречена плъзгач (scroll bar), в лявата страна на прозореца на Емакс. Вие можете да скролирате текста, щракайки с мишката в плъзгача. Ако вашата мишка има търкалце, можете и него да използвате за скролиране. * КОГАТО ЕМАКС Е БЛОКИРАЛ ------------------------- Ако Емакс спре да отговаря на вашите команди, вие можете да го спрете безопасно, като въведете C-g. Може да използвате C-g, за да спрете команда, която се изпълнява твърде дълго. Също можете да използвате C-g, за да отмените числов аргумент или началото на команда, която не искате да завършите. >> Въведете C-u 100, за да направите числов аргумент 100, и въведете C-g. Сега въведете C-f. Трябва да се придвижите с точно един знак, защото вие прекратихте аргументът с C-g. Ако сте въвели по погрешка, можете да се измъкнете с C-g. * ЗАБРАНЕНИ КОМАНДИ ------------------- Някои команди на Емакс са „забранени“, така че начинаещите потребители да не могат да ги употребят по погрешка. Ако въведете някоя от забранените команди, Емакс извежда съобщение, казвайки каква е била командата и питайки ви дали искате да продължите напред и да изпълните командата. Ако наистина искате да изпробвате командата, въведете клавиша интервал в отговор на въпроса. Обикновено ако не искате да изпълните забранената команда, отговаряте на въпроса с „n“. >> Въведете C-x C-l (която е забранена команда), и след това въведете „n“ в отговор на въпроса. * ПРОЗОРЦИ ---------- Емакс може да управлява няколко „прозореца“, всеки извеждайки свой собствен текст. Ние ще обясним по-късно как да използвате няколко прозореца. Точно сега ние искаме да обясним как да се отървете от допълнителни прозорци и да се върнете към основното редактиране с един прозорец. Просто е: C-x 1 Един прозорец (т.е. премахни всички други прозорци). Това е CONTROL-x, последван от цифрата 1. C-x 1 разширява прозореца, съдържащ курсора, за да може да запълни целия екран. Тя премахва всички други прозорци. >> Придвижете курсора до този ред и въведете C-u 0 C-l. >> Въведете C-h k C-f. Вижте как този прозорец се свива, докато друг се появява, за да изведе документацията на командата C-f. >> Въведете C-x 1 и вижте как прозорецът с документацията изчезва. Тази команда не е като другите команди, които сте научили, в това отношение, че се състои от два знака. Започва със знака CONTROL-x. Има цяла редица от команди, които започват с CONTROL-x; много от тях имат нещо общо с прозорци, файлове, буфери и свързаните с тях неща. Тези команди са от два, три или четири знака. * ВМЪКВАНЕ И ИЗТРИВАНЕ ---------------------- Ако искате да вмъкнете текст, просто го въведете. Знаците, които могат да се виждат, като А, 7, * и т.н., се вмъкват веднага. За да вмъкнете знак за нов ред, натиснете (това е клавишът, който понякога е отбелязван като „Enter“). За да изтриете знака непосредствено преди текущото положение на курсора, въведете . Обикновено това е клавишът, отбелязван като „Backspace“ – нормалният за това действие и извън Емакс. Може да има още един клавиш с етикет някъде другаде, но той не е , за който става въпрос тук. >> Направете това сега – напишете няколко знака, после ги изтрийте с въвеждане на няколко пъти. Не се безпокойте, че този файл ще бъде променен; вие няма да промените първоначалното въведение. Това е ваше лично копие. Когато ред от текста стане твърде дълъг, за да се събере в ред от екрана, редът от текста се „продължава“ на следващия ред. Ако използвате графичен дисплей, в малкото пространство отстрани на текста (левият и десният „ръб“) ще се появят малки извити стрелки за отбелязване къде редът продължава. Ако използвате текстов терминал, продължените редове се отбелязват с обратна наклонена черта („\“) в най-дясната колона на прозореца. >> Въведете текст, докато стигнете дясната граница, и продължете с вмъкването. Ще видите продължението на реда да се показва. >> Използвайте няколко , за да изтриете текста, докато редът се вмести в един екранен ред. Продължението на реда изчезва. Може да изтриете знака за нов ред точно както всеки друг знак. Изтриването на знака за нов ред между два реда ги слива в един ред. Ако полученият комбиниран ред е твърде дълъг, за да се вмести в ширината на екрана, той ще бъде показан като продължен ред. >> Придвижете курсора в началото на ред и въведете . Това ще слее този ред с предишния. >> Въведете , за да вмъкнете наново знака за нов ред, който изтрихте. Запомнете, че на повечето команди на Емакс може да бъде зададен брояч на повторенията; това включва вмъкването на текстови знаци. Повтарянето на текстов знак го вмъква няколко пъти. >> Опитайте това сега – въведете C-u 8 *, за да вмъкнете ********. Сега вие сте научили най-основните начини за въвеждане на нещо в Емакс и поправяне на грешки. Можете също така да изтривате думи или редове. Ето обобщение на изтриващите действия: Изтриване на знака точно преди курсора C-d Изтриване на знака точно след курсора M- Изтриване на думата непосредствено преди курсора M-d Изтриване на думата след курсора C-k Изтриване от мястото на курсора до края на реда M-k Изтриване до края на текущото изречение Забележете, че и C-d, сравнени с M- и M-d, разширяват подобието, започнато от C-f и M-f (добре, не е наистина контролиращ знак, но нека не се безпокоим за това). C-k и M-k са подобни на C-e и M-e в смисъл, че едните са за редове, а другите – за изречения. Можете също да премахнете всяка част от текста по един универсален начин. Придвижете се до единия край и въведете C- ( е интервалът).. Придвижете се до другия край на текста, който искате да изтриете. Докато го правите, Емакс осветява текстът между курсора и мястото, където се въвели C-. Накрая въведете C-w. Това ще изреже целия текст между тези два края. >> Придвижете курсора до знака „М“ в началото на предишния абзац. >> Въведете C-. Емакс трябва да изведе съобщение „Mark set“ в долния край на екрана. >> Придвижете курсора до буквата „р“ в „край“ на втория ред от абзаца. >> Въведете C-w. Това ще изреже текста, започващ от „М“ и завършващ точно преди „р“. Разликата между „изрязване“ (kill, cut) и „изтриване“ (delete) е, че „изрязаният“ текст може да бъде вмъкнат наново, докато „изтритите“ неща не могат да се вмъкнат наново (обаче можете да отмените изтриването – вж. по-долу). Поставянето наново на изрязан текст се нарича „вмъкване“ (yank, paste). Общо казано, командите, които отстраняват много текст, го изрязват (така че той да може да бъде вмъкнат), докато командите, които отстраняват само един знак или изтриват само празни редове и знаци, извършват изтриване (така че не можете да вмъкнете наново този текст). и C-d изтриват в обикновения случай, когато няма префиксен аргумент. При наличие на аргумент те отрязват. >> Придвижете курсора до началото на ред, който не е празен. Тогава въведете C-k, за да изрежете текста на този ред. >> Въведете C-k втори път. Ще видите, че това изрязва знака за нов ред, който следва реда. Забележете, че единично C-k изрязва съдържанието на реда, а следващото C-k изрязва целия ред и прави другите редове да се придвижат нагоре. C-k обработва числовите аргументи по специален начин: премахват се толкова на брой редове И тяхното съдържание. Това не е просто повторение. C-u 2 C-k изрязва два реда и техните знаци за нов ред; въвеждането два пъти на C-k не прави това. Връщането обратно на текст се нарича „вмъкване“. (Мислете за него като за изваждане обратно, или дръпване обратно, на текст, който е бил изрязан.) Можете да вмъквате изрязания текст или на същото място, откъдето е бил премахнат, или на друго място в буфера, или даже в различен файл. Можете да вмъквате един и същ текст няколко пъти; това прави няколко копия от него. Някои други редактори наричат изрязването (kill) и вмъкването (yank) съответно изрязване (cut) и поставяне (paste) (вж. Речника на Ръководството на Емакс). Командата за вмъкване е C-y. Тя вмъква наново последния изрязан текст в текущото място на курсора. >> Опитайте го: въведете C-y, за да изведете текста обратно. Ако направите няколко C-k в ред, всичко от изрязания текст се запазва заедно, така че едно C-y ще извади всички редове наведнъж. >> Направете това сега, въведете C-k няколко пъти. Сега, за да изкарате изрязания текст: >> Въведете C-y. След това придвижете курсора надолу няколко реда и въведете C-y отново. Сега виждате как да копирате някакъв текст. Какво да правите, ако имате някакъв текст, който искате да вмъкнете обратно, и след това изрежете нещо друго? C-y ще извади последното изрязване. Но предишният текст не е загубен. Можете да го върнете обратно, използвайки командата M-y. След като изпълните C-y, за да вземете последното изрязване, въвеждането на M-y заменя този изваден текст с предишното изрязване. Въвеждането на M-y отново и отново връща по-ранни и по-ранни изрязвания. Когато стигнете текста, който търсите, не е нужно да правите нищо повече, за да го задържите. Просто продължете с редактирането, оставяйки извадения текст, където си е. Ако въведете M-y достатъчен брой пъти, ще се върнете в началното положение (последното изрязване). >> Изрежете ред, придвижете се някъде, изрежете друг ред. Изпълнете C-y, за да върнете обратно втория изрязан ред. Изпълнете M-y и този върнат текст ще бъде заменен с първия изрязан ред. Изпълнете няколко M-y и вижте какво се получава. Изпълнявайте това, докато вторият изрязан ред се върне, и след това още няколко пъти. Ако искате, може да пробвате да дадете на M-y положителни и отрицателни числови аргументи. * ОТМЯНА -------- Ако направите промяна в текста и след това решите, че това е било грешка, вие можете да отмените промяната с командата за отменяне, C-/. Обикновено C-/ отменя промените, направени от една команда; ако повтаряте C-/ няколко пъти последователно, всяко повторение отменя още една команда. Но има две изключения: командите, които не променят текста, не се броят (това включва придвижването на курсора и скролиращите команди), и самовмъкващите се знаци обикновено се обработват на групи, всяка до 20 знака. (Това намалява броя на C-/, които трябва да въведете, за да отмените въведен текст.) >> Изрежете този ред с C-k, след това въведете C-/ и той трябва да се появи отново. C-_ е алтернативна отменяща команда; тя работи точно като C-/. На някои терминали въвеждането на C-/ всъщност изпраща C-_ на Емакс. Като алтернатива, C-x u работи точно като C-/, но е по-неудобна за въвеждане. Числов аргумент към C-/, C-_ или C-x u действа като брояч на повторения. Може да отменяте изтриване на текст точно както отменяте изрязване на текст. Различието между изрязването на нещо и изтриването му въздейства дали ще може да го извадите с C-y; за отменянето няма разлика между двата вида. * ФАЙЛОВЕ --------- За да направите текста, който редактирате, постоянен, трябва да го сложите във файл. В противен случай той ще изчезне, когато Емакс приключи. За да сложите вашия текст във файл, трябва да „намерите“ (find) файла преди да въвеждате текст. (Това също се нарича „посещаване“ (visit) на файл.) Намиране на файл означава, че виждате съдържанието му в Емакс. В много случаи това е като да редактирате самия файл. Обаче промените, които правите, използвайки Емакс, не остават постоянни, докато не „запишете“ (save) файла. Това е така, за да се предотврати оставянето на полупроменен файл в системата, когато не искате това. Дори когато записвате, Емакс оставя началния файл под променено име, в случай, че по-късно решите, че вашите промени са били грешка. Ако погледнете в дъното на екрана, ще видите ред, който започва с тирета – „ b:--- TUTORIAL.bg“ или нещо подобно. Тази част от екрана показва името на файла, който сте посетили. Точно сега вие сте посетили файл, наречен „TUTORIAL.bg“, който е вашето лично копие-чернова на Емакс въведението. Когато намерите файл в Емакс, името на този файл ще се появи на това място. Особеност на командата за намиране на файл е, че трябва да кажете името на файла, който искате. Казваме, че командата „чете на аргумент“ (в този случай аргументът е името на файла). След като въведете командата C-x C-f Намиране на файл Емакс ви подканя да въведете името на файла. Името на файла, което напишете, се появява в дъното на екрана. Редът в дъното на екрана се нарича минибуфер, когато се използва за този вид въвеждане. Можете да използвате обикновените команди за редактиране на Емакс, за да редактирате името на файла. Когато въвеждате името на файла (или какъвто и да е вход в минибуфера), можете да прекратите командата с C-g. >> Въведете C-x C-f и след това C-g. Това прекратява минибуфера, а също и командата C-x C-f, която се е изпълнявала в минибуфера. Така че не намирате файл. Когато приключите с въвеждането на името на файла, въведете , за да завършите. Минибуферът изчезва и командата C-x C-f тръгва да работи и намира файла, който сте избрали. След малко съдържанието на файла се появява на екрана и вие можете да редактирате съдържанието му. Когато пожелаете да запазите вашите промени за постоянно, въведете командата C-x C-s Запис (save) на файла Това копира текста от Емакс във файла. Първия път, когато това се направи, Емакс преименува началния файл с ново име, така че той да не се изгуби. Новото име се построява с добавяне на „~“ в края на името на началния файл. Когато запазването е свършило, Емакс извежда името на файла, който е бил записан. Трябва да записвате достатъчно често, така че да не изгубите много работа, ако системата се срине по някаква причина (вж. раздела „Автоматичен запис“ по-долу). >> Въведете C-x C-s TUTORIAL.bg . Това ще запише въведението във файл с име TUTORIAL.bg и ще покаже „Wrote ...TUTORIAL.bg“ в дъното на екрана. Може да намерите съществуващ файл, да го разгледате и да го редактирате. Можете също да намерите файл, който не съществува. Това е начинът за създаване на нови файлове в Емакс: намирате файла, който ще бъде в началото празен, и тогава започвате вмъкването на текста за файла. Когато искате „запис“ на файл, Емакс всъщност ще създаде файла с текста, който сте въвели. Оттам нататък може да считате, че редактирате вече съществуващ файл. * БУФЕРИ -------- Ако намерите втори файл с C-x C-f, първият файл остава в Емакс. Можете да превключите обратно към него, като го намерите пак с C-x C-f. По този начин може да получите доста на брой файлове в Емакс. Емакс съхранява текста на всеки файла в обект, наричан „буфер“. Намирането на файл създава нов буфер вътре в Емакс. За да видите списък с всички съществуващи буфери, въведете C-x C-b Списък на буферите >> Опитайте C-x C-b още сега. Забележете, че всеки буфер има име, а също може да има и име на файл, чието съдържание се пази в буфера. ВСЕКИ текст, който виждате в прозорец на Емакс, винаги е част от някой буфер. >> Въведете C-x 1, за да махнете списъка на буфери. Когато имате няколко буфера, само един от тях е „текущ“ в даден момент от време. Това е буферът, който редактирате. Ако искате да редактирате друг буфер, се нуждаете от „превключване“ към него. Ако искате да се превключите към буфер, който съответства на файл, можете да го направите, като просто посетите файла отново с C-x C-f. Но има и по-лесен начин: използването на командата C-x b. В тази команда трябва да въведете името на буфера. >> Суздайте файл с име „foo“ чрез въвеждане на C-x C-f foo . Тогава въведете C-x b TUTORIAL.bg , за да се върнете в това въведение. В повечето случаи името на буфера е същото като името на файла (без частта в коя директория се намира). Обаче това не винаги е вярно. Списъкът с буферите, който правите с C-x C-b, винаги ви показва и името на буфера, и името на файла. ВСЕКИ текст, който виждате в Емакс прозорец, е винаги част от някакъв буфер. Някои буфери не съответстват на файлове. Буферът, именуван „*Buffer List*“, които сте направили с C-x C-b, не съответства на файл. Това е буферът, който съдържа списъка с буферите. Този буфер TUTORIAL.bg отначало не е бил към файл, но вече е, защото в предишния раздел въведохте C-x C-s и го записахте във файл. Буферът, именуван „*Messages*“, също не съответства на файл; той съдържа съобщенията, които се появяват в дъното на екрана по време на Емакс сесията. >> Въведете C-x b *Messages* , за да видите буфера със съобщенията. След това въведете C-x b TUTORIAL.bg , за да се върнете към това въведение. Ако направите промени в текста на един файл и тогава намерите друг файл, това няма да запише първия файл. Неговите промени остават вътре в Емакс, в буфера на файла. Създаването или редактирането на буфера на втория файл няма ефект върху буфера на първия файл. Това е много полезно, но също означава, че се нуждаете от удобен начин да запазите буфера на първия файл. Ще е неудобно да превключите обратно с C-x C-f, за да го запазите с C-x C-s. Така че имаме C-x s Запис на някои (some) буфери C-x s пита за всеки буфер, който съдържа промени, които не сте запазили. Командата задава въпрос за всеки такъв буфер дали да бъде запазен. >> Вмъкнете ред с текст, след това въведете C-x s. Трябва да бъдете попитан дали да запазите буфера, именуван „TUTORIAL.bg“. Отговорете с „да“ на въпроса, като въведете „y“ (yes). * РАЗШИРЯВАНЕ НА НАБОРА КОМАНДИ ------------------------------- Има много, много повече команди на Емакс, отколкото могат да се сложат на всички контролни и мета знаци. Емакс заобикаля това с X (eXtended) командата. Това става по два начина: C-x Знаково разширяване. Последвано от един знак. M-x Разширяване с именувана команда. Последвано от дълго име. Тези команди са общо взето полезни, но по-малко, отколкото командите, които досега сте научили. Вече видяхте две от тях: командите върху файлове C-x C-f за намиране (Find) и C-x C-s за запис (Save). Друг пример е командата за край на Емакс сесията -- това е командата C-x C-c. (Не се безпокойте, че може да изгубите всички промени, които сте направили; C-x C-c предлага да запази всеки променен файл, преди да премахне Емакс.) Ако сте на графичен дисплей, не е нужна специална команда за придвижване от Емакс към друго работещо приложение. Можете да извършите това с мишката или с команди към управлението на прозорци. Но ако сте на текстов терминал, който може да показва само едно приложение в даден момент, се нуждаете от начин за „изоставяне“ (suspend) на Емакс и придвижване към други програми. C-z е командата за излизане от Емакс *временно* – така че да можете да се върнете към същата Емакс сесия по-късно. Когато Емакс върви на текстов терминал, C-z „изоставя“ Емакс, т.е. връща се към обвивката, но не унищожава задачата (job) на Емакс. В повечето популярни обвивки можете да продължите Емакс с командата „fg“ или с „%emacs“. Има много команди C-x. Ето списък на тези, които сте научили: C-x C-f Намиране на файл C-x C-s Запис на файл C-x s Запис на някои буфери C-x C-b Списък на буферите C-x b Превключване към буфер C-x C-c Излизане от Емакс C-x 1 Изтриване на всички прозорци освен един C-x u Отмяна Именуваните разширени (X) команди са команди, които се използват даже още по-рядко, или команди, които се използват само в определени режими. Пример е командата replace-string, която заменя глобално един низ с друг. Когато въведете M-x, Емакс ви подсказва в дъното на екрана с M-x и вие трябва да въведете името на командата, в този случай „replace-string“. Просто въведете „repl s“ и Емакс ще завърши името. ( е клавишът Tab, обикновено намиращ се над клавиша CapsLock или клавиша Shift близо до левия край на клавиатурата.) Завършете името на командата с . Командата replace-string изисква два аргумента – низът, който ще бъде заменян, и низът, който ще го замени. Трябва да завършите въвеждането на всеки аргумент с . >> Придвижете курсора до празния ред, два реда надолу под този. Тогава въведете M-x repl sпроменяизменя Забележете как този ред се променя: вие заменихте думата п-р-о-м-е-н-я с „изменя“, където и да се намира след началното място на курсора. * АВТОМАТИЧНО ЗАПАЗВАНЕ ----------------------- Когато сте направили промени във файл, но още не сте го запазили, те могат да бъдат загубени, ако компютърът внезапно се изключи. За да ви предпази от такива ситуации, Емакс периодично запазва „автоматично запазван“ файл за всеки файл, който редактирате. Името на автоматично запазвания файл има # в началото и в края; например, ако вашият файл е с име „hello.c“, името на неговия автоматично запазван файл ще бъде "#hello.c#". Когато запазвате файл по обикновения начин, Емакс изтрива неговия автоматично записван файл. Ако компютърът зависне, може да възстановите вашата автоматично запазвана редакция, като намерите файла както обикновено (файлът, който сте редактирали, не автоматично запазвания) и след това въведете M-x recover-file . Когато командата изиска потвърждение, въведете yes, за да продължите и да възстановите автоматично запазваните данни. * ЕХО ОБЛАСТТА -------------- Ако Емакс види, че въвеждате многознакови команди бавно, ще ви ги покаже в дъното на екрана, в област, наричана „ехо област“. Ехо областта обхваща последния ред от екрана. * РЕД НА РЕЖИМА ---------------- Редът точно над ехо областта се нарича „ред на режима“ (mode line). Той показва нещо като: b:**- TUTORIAL.bg 63% L744 (Fundamental) Този ред дава полезна информация за състоянието на Емакс и текста, който редактирате. Вече знаете какво означава името на файла – това е файлът, който сте намерили. NN% показва вашата текуща позиция в текста; това означава, че NN процента от текста е над върха на екрана. Ако началото на файла е на екрана, ще се показва „Top“ (връх) вместо „ 0%“. Ако края на файла е на екрана, ще се показва „Bot“ (bottom – дъно). Ако гледате текст, който е толкова малък, че се показва изцяло на екрана, редът на режима ще изведе „All“ (всичко). Знакът L и цифрите показват мястото по друг начин: това е номерът на текущия ред на точката. Звездите близо до началото означават, че сте направили промени в текста. Веднага след като посетите или запазите файл, тази част от реда на режима вече не показва звезди, а само тирета. Частта от реда на режима вътре в скобите е, за да ви покаже в какъв режим на редактиране се намирате. Подразбиращият се режим е Fundamental (Основен), който използвате в момента. Това е пример за „главен режим“ (major mode). Емакс има много главни режими. Някои от тях са предвидени за редактиране на различни езици и/или видове текст, като например режим Lisp (Лисп), режим Text (текст) и други. Във всеки един момент от време точно един главен режим е активен и неговото име може винаги да бъде намерено в реда на режима, точно както „Fundamental“ сега. Всеки главен режим прави някои команди да се държат по различен начин. Например, има команди за редактиране на коментари в програми, и тъй като всеки програмен език има различна идея за това как трябва да изглеждат коментарите, всеки главен режим трябва да вмъква коментари по различен начин. Всеки главен режим е име на разширена команда, с която превключвате към този режим. Например, M-x fundamental-mode е команда за превключване към режим Fundamental. Когато редактирате текст на естествен език, като този файл, най-вероятно трябва да използвате режим Text (текст). >> Въведете M-x text-mode . Не се безпокойте, никоя от Емакс командите, които сте научили, няма да се промени по някакъв съществен начин. Но може да забележите, че M-f и M-b сега възприемат апострофите (') като част от думите. Преди това, в основния режим (Fundamental), M-f и M-b се възприемаха като разделители на думи. Главните режими обикновено правят малки промени като тази: повечето команди вършат „същата работа“ във всеки главен режим, но работят по малко по-различен начин. За да видите документацията на вашия текущ главен режим, въведете C-h m. >> Употребете C-l C-l веднъж или повече пъти, за да докарате този ред близо до върха на екрана. >> Въведете C-h m, за да видите как текстовият режим се различава от основния режим. >> Въведете C-x 1, за да премахнете документацията от екрана. Главните режими се наричат главни, защото има и малки (второстепенни) режими (minor modes). Малките режими не са алтернативи на главните, а просто малки промени към тях. Всеки малък режим може да бъде включен или изключен сам за себе си, независимо от всички други малки режими и независимо от вашия главен режим. Така че може да не използвате малки режими, да използвате един малък режим, или да използвате някаква комбинация от няколко малки режима. Един малък режим, който е много полезен, особено за редактиране на текст на естествен език, е режимът на автоматично запълване (Auto Fill mode). Когато този режим е включен, Емакс автоматично разделя реда при мястото между думите, когато вмъквате текст и направите ред, който е твърде дълъг. Може да включите режима на автоматично запълване, като изпълните M-x auto-fill-mode . Когато режимът е включен, може да го изключите с M-x auto-fill-mode. Ако режимът е изключен, тази команда го включва, а ако е включен, го изключва. Казваме, че командата „превключва (toggle) режима“. >> Въведете M-x auto-fill-mode сега. След това вмъкнете ред от „asdf “ отново и отново, докато не видите, че текстът се разделя на два реда. Трябва да слагате интервали между думите, защото автоматичното запълване разделя редовете само при интервалите. Границата обикновено е зададена на 70 знака, но можете да я промените с командата C-x f. Трябва да задавате тази граница като числов аргумент на командата. >> Въведете C-x f с аргумент 20. (C-u 2 0 C-x f). Сега въведете някакъв текст и вижте как Емакс запълва редовете с по не повече от 20 знака. После върнете обратно границата на 70, използвайки C-x f отново. Ако направите промени в средата на абзац, режимът на автоматично запълване няма да го запълни наново за вас. За да запълните наново абзац, въвеждайте M-q (META-q), докато курсорът е вътре в абзаца. >> Придвижете курсора вътре в предишния абзац и въведете M-q. * ТЪРСЕНЕ --------- Емакс може да извършва търсения на низове (това са последователности от знаци или думи) или напред в текста, или назад в него. Търсенето на низ е придвижваща курсора команда; тя премества курсора на следващото място, където се среща низът. Командата за търсене на Емакс е „постъпкова“. Това означава, че търсенето се извършва още докато въвеждате текста, който търсите. Командата за започване на търсене е C-s за търсене напред, и C-r за търсене назад. НО ПОЧАКАЙТЕ! Не ги пробвайте сега. Когато въведете C-s, ще забележите, че низът „I-search“ се появява като подсказка в ехо областта. Това ви казва, че Емакс е в това, което се нарича постъпково търсене, чакайки ви да въвеждате текста, който искате да търсите. приключва търсенето. >> Сега въведете C-s, за да започнете търсенето. БАВНО, буква по буква, въведете думата „курсор“, изчаквайки след въвеждането на всеки знак, за да може да забележите какво става с курсора. Сега извършихте търсене на „курсор“ веднъж. >> Въведете отново C-s, за да търсите друго съвпадение с „курсор“. >> Сега въведете четири пъти и вижте как се придвижва курсора. >> Въведете , за да прекратите търсенето. Забелязахте ли какво стана? Емакс, когато търси постъпково, се опитва да намери следващото съвпадение на низа, който се въвежда. За да отидете на следващото съвпадение на „курсор“, просто отново въведете C-s. Ако няма такова съвпадение, Емакс бибипва и ви казва, че търсенето е „провалено“ (failing). C-g също така прекратява търсенето. Ако сте в средата на постъпково търсене и въведете , ще забележите, че последният знак в търсения низ се изтрива и търсенето се връща към последното място на търсене. Например, предположете, че сте въвели „к“, за да намерите първото съвпадение с „к“. Сега, ако въведете „у“, курсорът ще се придвижи към първото съвпадение на „ку“. Сега въведете . Това изтрива знака „у“ от низа за търсене и курсорът се премества назад, до първото съвпадение с „к“. Ако сте в средата на търсене и въведете контролен или мета знак (с няколко изключения – знаците, които са специални по време на търсене, като C-s и C-r), търсенето се прекратява. C-s започва търсене, което гледа за съвпадение с низа, даден за търсене СЛЕД текущото място на курсора. Ако искате да търсите нещо по-ранно от текста, вместо това въведете C-r. Всичко, което казахме за C-s, важи и за C-r, освен че посоката на търсене е обърната. * МНОЖЕСТВО ПРОЗОРЦИ ---------------- Една от привлекателните способности на Емакс е тази, че може да гледате повече от един прозорец на екрана в даден момент от време. (Обърнете внимание, че Емакс използва думата „рамки“, описана в следващия раздел, за това, което други приложения наричат „прозорец“. Ръководството на Емак съдържа речника на термините на Емакс.) >> Придвижете курсора до този ред и въведете C-l C-l. >> Сега въведете C-x 2, което ще раздели екрана на два отделни прозореца. Двата прозореца показват това въведение. Курсорът остава на по-горния прозорец. >> Въведете C-M-v, за да скролирате долния прозорец. (Ако нямате истински клавиш META, въведете ESC C-v.) >> Въведете C-x o („o“ от „other“ – „друг“), за да придвижите курсора в долния прозорец. >> Използвайте C-v и M-v в долния прозорец, за да го скролирате. Продължете четенето на тези насоки от въведението в горния прозорец. >> Въведете C-x o отново, за да придвижите курсора отново в горния прозорец. Курсорът в горния прозорец е точно там, където е бил преди. Може да продължите да използвате C-x o, за да превключвате между прозорците. „Текущият прозорец“, където се извършва редактирането, е този с явен курсор, който мига, когато не въвеждате. Другите прозорци имат собствени положения на курсора. Ако Емакс е на графичен дисплей, тези курсори ще са изчертани като немигащи празни кутии. Командата C-M-v е много полезна, когато редактирате текст в един прозорец и използвате другия прозорец просто за справка. Може да държите курсора винаги в прозореца, където редактирате, и да напредвате последователно в другия прозорец чрез C-M-v. C-M-v е пример за знак CONTROL-META. Ако имате истински клавиш META (или Alt), може да въвеждате C-M-v, задържайки едновременно CONTROL и META, докато въвеждате „v“. Няма значение дали CONTROL или META „е натиснат първи“, защото и двата клавиша действат, модифицирайки знака, който натискате. Ако нямате истински клавиш META и използвате вместо това, редът вече има значение: трябва да въвеждате , последван от CONTROL-v, защото CONTROL- v няма да работи. Това е така, защото е собствен знак, а не модификатор. >> Въведете C-x 1 (в горния прозорец), за да махнете долния прозорец. (Ако сте въвели C-x 1 в долния прозорец, това ще махне горния. Мислете за тази команда като „Задръж точно един прозорец – този, в който съм сега“.) Няма нужда да извеждате един и същи буфер в двата прозореца. Ако използвате C-x C-f, за да намерите файл в единия прозорец, другият прозорец не се променя. Може да намирате файл във всеки прозорец, независимо от това какво има в другите прозорци. Ето още един начин да използвате два прозореца, за да покажете две различни неща: >> Въведете C-x 4 C-f, последвано от името на един от вашите файлове. Завършете с . Вижте как този файл се появява в долния прозорец. Курсорът също отива там. >> Въведете C-x o, за да се върнете в горния прозорец, и C-x 1, за да изтриете долния. * МНОЖЕСТВО РАМКИ ----------------- Емакс може да създава и „рамки“. Рамката (frame) е това, което наричаме един набор от прозорци, заедно с техните менюта, плъзгачи, ехо области и т.н. В графичен дисплей Емакс нарича „рамка“ това, което повечето други приложения наричат „прозорец“. На екрана могат да бъдат показвани няколко графични рамки едновременно. В текстов терминал може да се показва само една рамка в даден момент от време. >> Въведете M-x make-frame . Вижте как се появява нова рамка на екрана. В новата рамка можете да правите всичко, което правите и в оригиналната рамка. Няма нищо специално в първата рамка. >> Въведете M-x delete-frame Избраната рамка се премахва. Можете да премахвате рамки и по нормалния за това начин в графичната система, най-често с натискане на бутона, отбелязан като „X“ в горен ъгъл на рамката. Ако премахнете и последната рамка на работещ Емакс, това ще излезе от Емакс. * ВЛОЖЕНИ НИВА НА РЕДАКТИРАНЕ ----------------------------- Понякога ще се озовете в това, което се нарича „вложено ниво на редактиране“ (recursive editing level). Това се отбелязва от квадратни скоби в реда на режима, които ограждат скобите около името на главния режим. Например, може да видите [(Fundamental)] вместо (Fundamental). За да се махнете от вложеното ниво на редактиране, въведете . Това е обща команда за „излизане“. Може и да я използвате за махане (скриване) на допълнителни прозорци, както и за да се махнете от минибуфера. >> Въведете M-x, за да влезете в минибуфер; тогава въведете , за да излезете. Не можете да използвате C-g, за да излезете от вложено ниво на редактиране. Това е така, защото C-g се използва за прекратяване на команди и аргументи ВЪТРЕ във вложено ниво на редактиране. * ПОЛУЧАВАНЕ НА ДОПЪЛНИТЕЛНА ПОМОЩ ---------------------------------- В това въведение се опитахме да осигурим достатъчно информация, за да започнете да използвате Емакс. Има толкова много още в Емакс, че не е възможно то да бъде обяснено всичкото тук. Обаче може да поискате да научите повече за Емакс, тъй като той притежава още много полезни способности. Емакс има команди за четене на документацията на Емакс командите. Тези "помощни" команди всички започват със знака CONTROL-h, който се нарича "знакът за помощ". За да използвате възможностите на тази помощ, въведете знака C-h и след това знака, казващ какъв вид помощ искате. Ако НАИСТИНА сте се изгубили, въведете C-h ? и Емакс ще ви каже с какво може да ви помогне. Ако сте въвели C-h и решите, че не се нуждаете от помощ, просто въведете C-g, за да я прекратите. (Ако C-h не извежда съобщение за помощ в дъното на екрана, опитайте клавиша F1 или M-x help вместо това.) Най-основното помощно средство е C-h c. Въведете C-h, знака „c“ и команден знак или последователност от знаци, образуващи команда; тогава Емакс ще изведе много кратко описание на командата. >> Type C-h c C-p. Изведеното описание трябва да бъде нещо като C-p runs the command previous-line (C-p изпълнява командата предишен-ред) Това ви казва „името на функцията“. Имената на функциите се използват най-вече за настройване и разширяване на Емакс. Но тъй като имената на функциите са избрани така, че да показват какво прави командата, те могат да служат и за много кратка документация – достатъчна, за да ви припомни команди, които вече сте учили. Многознакови команди, като C-x C-s и (ако нямате клавиш META или EDIT или ALT) v, също са позволени след C-h c. За да получите още информация за команда, използвайте C-h k вместо C-h c. >> Въведете C-h k C-p. Това извежда документацията на функцията, както и нейното име, в отделен Емакс прозорец. Когато я прочетете, въведете C-x 1, за да махнете помощния текст. Не е нужно да правите това точно сега. Може да редактирате, докато се обръщате към помощния текст за справка, и след това да въведете C-x 1. Ето още няколко полезни C-h възможности: C-h f Описва функция. Трябва да въведете името на функцията. >> Опитайте с въвеждане на C-h f previous-line . Това извежда цялата информация, която Емакс знае за функцията, която осъществява командата C-p. Подобна команда, C-h v, извежда документацията на променливите, които може да променяте, за да настройвате поведението на Емакс. Трябва да въведете името на променливата, когато Емакс ви подскаже това. C-h a Команда Апропос. Въведете ключова дума и Емакс ще покаже списък на всички команди, чието име съдържа тази ключова дума. Тези команди могат всички да бъдат извикани чрез META-x. За някои команди командата Апропос ще изведе допълнително еднознакова или двузнакова последователност от клавиши, която пуска същата команда. >> Въведете C-h a file . Това извежда в друг прозорец списък на всички M-x команди, които съдържат „file“ (файл) в тяхното име. Ще видите знакови команди като C-x C-f, изброени измежду съответните имена на команди, като find-file. >> Въведете C-M-v, за да скролирате помощния прозорец. Направете го няколко пъти. >> Въведете C-x 1, за да изтриете помощния прозорец. C-h i Четене на ръководства (Info). Тази команда ви праща в специален буфер, наричан „*info*“, където може да четете ръководствата на инсталираните във вашата система пакети. Въведете m emacs , за да четете ръководството на Емакс. Ако никога преди това не сте използвали Info, въведете ? и Емакс ще включи въведение във възможностите на режима Инфо. Веднъж след като сте преминали това въведение, трябва да се консултирате с Емакс Инфо ръководството като ваша основна документация. * ОЩЕ ВЪЗМОЖНОСТИ ----------------- Може да научите повече за Емакс с четене на неговото ръководство, или като книга, или в Инфо (използвайте менюто Помощ (Help) или въведете C-h r). Две възможности, които може да желаете в началото, са довършване (completion), което спестява писане, и dired, който опростява боравенето с файлове. Довършването е начин да избягвате ненужно писане. Например, ако искате да превключите към буфера *Messages*, може да въведете C-x b *M и Емакс ще запълни останалата част от името на буфера, доколкото може да се определи от това, което сте въвели. Довършването е описано в Инфо-ръководството на Емакс в страницата „Довършване“ („Completion“). Dired ви позволява да гледате списъка от файлове в директория (и като възможност: нейните поддиректории), да се придвижвате в този списък, да посещавате, преименувате, изтривате и изобщо действате върху файловете. Dired е описан в Инфо-ръководството на Емакс в страницата "Dired". Ръководството на Емакс описва още много други възможности на редактора. * ЗАКЛЮЧЕНИЕ ------------ За да излезете безвъзвратно от Емакс, използвайте C-x C-c. Това въведение е предвидено да бъде разбираемо за всички нови потребители, така че ако намирате нещо неясно, не се самообвинявайте – оплачете се! * КОПИРАНЕ ---------- Това въведение произлиза от дълга поредица въведения в Емакс, започвайки от едно, написано от Стюърт Кракрафт за началния Емакс. Тази версия на въведението, както и ГНУ Емакс, е защитена с авторски права и идва с разрешение да разпространявате копия при следните условия: This version of the tutorial, like GNU Emacs, is copyrighted, and comes with permission to distribute copies on certain conditions: Copyright (C) 1985, 1996, 1998, 2001-2024 Free Software Foundation, Inc. This file is part of GNU Emacs. GNU Emacs is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. GNU Emacs is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with GNU Emacs. If not, see . Моля, прочетете файла COPYING и тогава давайте копия на ГНУ Емакс на свои приятели. Помогнете да спрем затвореността на програмите („притежанието“), като използваме, пишем и споделяме свободен софтуер! Преводът на български е извършен от Огнян Кулев . ;;; Local Variables: ;;; coding: utf-8 ;;; End: