Mercurial > emacs
view etc/TUTORIAL.bg @ 72940:c2b72b555fc4
(conf-mode-map): Use conf-space-keywords cmd.
(conf-space-mode): Don't handle prefix arg.
Delete conf-space-keywords-override code.
Use add-hook.
(conf-space-keywords): New command.
(conf-space-mode-internal): Be careful with imenu-generic-expression.
Delete conf-space-keywords-override code.
(conf-space-keywords-alist): Doc fix.
(conf-space-font-lock-keywords): Doc fix.
(conf-space-keywords-override): Var deleted.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Sat, 16 Sep 2006 18:43:57 +0000 |
parents | e8a3fb527b77 |
children | f2f6f5193df9 c5406394f567 |
line wrap: on
line source
Въведение в Emacs. Условията за копиране са в края на текста. Командите на Emacs най-често включват клавишите CONTROL (понякога отбелязван с CTRL или CTL) и META (понякога отбелязван с EDIT или ALT). Вместо да се изписват с пълно име всеки път, ние ще използваме следните съкращения: C-<знак> означава задържане на клавиша CONTROL, докато се натиска знака <знак>. Така C-f ще означава: докато се задържа натиснат клавиша CONTROL, се натиска f. M-<знак> означава задържане натиснат на клавиша META (или EDIT, или ALT), докато се натиска <знак>. Ако няма клавиш META, EDIT или ALT, вместо него натиснете и отпуснете клавиша ESC и след това въведете <знак>. Ние записваме <ESC>, за да отбележим клавиша ESC. Важна бележка: в края на Emacs сесията въведете двата знака C-x C-c. Знаците ">>" отляво ви дават указание да изпълните команда. Например: <<Blank lines inserted here by startup of help-with-tutorial>> >> Сега въведете C-v (Покажи следващия екран), за да се придвижите към следващия екран. (Направете го сега, задръжте CONTROL, докато натискате v). Отсега нататък вие ще правите това винаги, когато прочетете екрана. Забележете, че има припокриване на два реда, когато се придвижвате от екран в екран; това осигурява някаква приемственост, така че да можете по-лесно да продължите с четенето на текста. Първото нещо, което трябва да знаете, е как да се придвижвате от едно място на текста към друго. Вие вече знаете как да се придвижвате екран напред, с C-v. За да се придвижите екран назад, въведете M-v (задръжте клавиша META и натиснете v, или въведете <ESC>v, ако нямате клавиш META, EDIT или ALT). >> Опитайте се да въведете M-v и след това C-v няколко пъти. * ОБОБЩЕНИЕ ----------- Следващите команди са полезни при пълноекранно разглеждане: C-v Придвижване напред с един екран M-v Придвижване назад с един екран C-l Изчистване на екрана и пречертаване на целия текст, премествайки текста около курсора в средата на екрана. (Това е CONTROL-L, не CONTROL-1.) >> Намерете курсора и си запомнете какъв е текстът около него. След това въведете 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, когато курсорът е в средата на реда. Всеки ред от текст завършва със знак за нов ред, който служи за отделянето на реда от следващия ред. Последният ред във вашия файл трябва да има знак за нов ред в края (но Emacs не изисква такъв, когато прочита файла). >> Опитайте C-b в началото на ред. Това трябва да ви придвижи в края на предишния ред. Това е така, защото курсорът се придвижва към знака за нов ред на предишния ред. C-f може да придвижва през знак за нов ред точно както C-b. >> Направете няколко C-b придвижвания, така че да добиете усещане къде се намира курсорът. След това няколко C-f, за да се върнете в края на реда. След това още няколко C-f, за да се придвижите до следващия ред. Когато се придвижвате след горния или долния край на екрана, текстът отвъд края се измества към екрана. Това се нарича "скролиране". То позволява на Emacs да придвижва курсора към зададеното място в текста, без да го изкарва извън екрана. >> Опитайте се да придвижите курсора след долния край на екрана с 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 по три причини. Първо, те работят на всички видове терминали. Второ, веднъж след като добиете практика в използването на Emacs, ще откриете, че въвеждането на тези Control-знаци е по-бързо от въвеждането на клавишите стрелки, защото не трябва да премествате ръката си далеч от областта на клавишите с букви. Трето, веднъж след като си оформите навик да използвате тези команди с Control знаци, вие можете също така лесно да научите по-напредналите команди за движение на курсора. Повечето Emacs команди приемат числов аргумент; за повечето от тях той служи като брояч на повторения. Начинът, по който давате числов брояч, е с въвеждане на 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), в лявата страна на прозореца на Emacs. Вие можете да скролирате текста, щракайки с мишката в плъзгача. >> Опитайте да натиснете средния бутон на върха на осветената област вътре в плъзгача. Това би трябвало да скролира текста към положение, определено от това колко високо или ниско сте щракнали. >> Опитайте се да движите мишката нагоре и надолу, докато сте задържали десния бутон натиснат. Ще видите, че текстът се скролира нагоре и надолу, като движите мишката. * КОГАТО EMACS Е БЛОКИРАЛ ------------------------- Ако Emacs спре да отговаря на вашите команди, вие можете да го спрете безопасно, като въведете C-g. Може да използвате C-g, за да спрете команда, която се изпълнява твърде дълго. Също можете да използвате C-g, за да отмените числов аргумент или началото на команда, която не искате да завършите. >> Въведете C-u 100, за да направите числов аргумент 100, и въведете C-g. Сега въведете C-f. Трябва да се придвижите с точно един знак, защото вие прекратихте аргументът с C-g. Ако сте въвели <ESC> по погрешка, можете да се измъкнете с C-g. * ЗАБРАНЕНИ КОМАНДИ ------------------- Някои команди на Emacs са "забранени", така че начинаещите потребители да не могат да ги употребят по погрешка. Ако въведете някоя от забранените команди, Emacs извежда съобщение, казвайки каква е била командата и питайки ви дали искате да продължите напред и да изпълните командата. Ако наистина искате да изпробвате командата, въведете <SPC> (клавиша интервал) в отговор на въпроса. Обикновено ако не искате да изпълните забранената команда, отговаряте на въпроса с "n". >> Въведете C-x C-l (която е забранена команда), и след това въведете "n" в отговор на въпроса. * ПРОЗОРЦИ ---------- Emacs може да управлява няколко прозореца, всеки извеждайки свой собствен текст. Ние ще обясним по-късно как да използвате няколко прозореца. Точно сега ние искаме да обясним как да се отървете от допълнителни прозорци и да се върнете към основното редактиране с един прозорец. Просто е: C-x 1 Един прозорец (т.е. премахни всички други прозорци). Това е CONTROL-x, последван от цифрата 1. C-x 1 разширява прозореца, съдържащ курсора, за да може да запълни целия екран. Тя премахва всички други прозорци. >> Придвижете курсора до този ред и въведете C-u 0 C-l. >> Въведете C-h k C-f. Вижте как този прозорец се свива, докато друг се появява, за да изведе документацията на командата C-f. >> Въведете C-x 1 и вижте как прозорецът с документацията изчезва. Тази команда не е като другите команди, които сте научили, в това отношение, че се състои от два знака. Започва със знака C-x. Има цяла редица от команди, които започват с C-x; много от тях имат нещо общо с прозорци, файлове, буфери и свързаните с тях неща. Тези команди са от два, три или четири знака. * ВМЪКВАНЕ И ИЗТРИВАНЕ ---------------------- Ако искате да вмъкнете текст, просто го въведете. Знаците, които могат да се виждат, като А, 7, * и т.н., се възприемат от Emacs като текст и се вмъкват веднага. Въведете <Return> (клавишът за връщане в началото на реда), за да вмъкнете знак за нов ред. Може да изтриете последния знак, който сте въвели, с въвеждане на <Delback>. <Delback> е клавиш от клавиатурата -- същият, който обикновено използвате извън Emacs, за да изтриете последния въведен от вас знак. Обикновено е голям клавиш, на няколко реда разстояние от клавиша <Return>, и обикновено е отбелязан с "Delete", "Del" или "Backspace". Ако големият клавиш там е с етикет "Backspace", тогава той е този, който ще използвате за <Delback>. Може да има още един клавиш с етикет "Delete" някъде другаде, но той не е <Delback>. По-общо казано, <Delback> изтрива знака точно преди текущото място на курсора. >> Направете това сега -- напишете няколко знака, после ги изтрийте с въвеждане на <Delback> няколко пъти. Не се безпокойте, че този файл ще бъде променен; вие няма да промените първоначалното въведение. Това е ваше лично копие. Когато ред от текста стане твърде дълъг, за да се събере в ред от екрана, редът от текста се "продължава" на следващия ред. Обратна наклонена черта ("\") (или, ако използвате графичен интерфейс, малка изкривена стрелка) в дясната граница отбелязва ред, който е бил продължен. >> Въведете текст, докато стигнете дясната граница, и продължете с вмъкването. Ще видите продължението на реда да се показва. >> Използвайте няколко <Delback>, за да изтриете текста, докато редът се вмести в един екранен ред. Продължението на реда изчезва. Може да изтриете знака за нов ред точно както всеки друг знак. Изтриването на знака за нов ред между два реда ги слива в един ред. Ако полученият комбиниран ред е твърде дълъг, за да се вмести в ширината на екрана, той ще бъде показан като продължен ред. >> Придвижете курсора в началото на ред и въведете <Delback>. Това ще слее този ред с предишния. >> Въведете <Return>, за да вмъкнете наново знака за нов ред, който изтрихте. Запомнете, че на повечето команди на Emacs може да бъде зададен брояч на повторенията; това включва вмъкването на текстови знаци. Повтарянето на текстов знак го вмъква няколко пъти. >> Опитайте това сега -- въведете C-u 8 *, за да вмъкнете ********. Сега вие сте научили най-основните начини за въвеждане на нещо в Emacs и поправяне на грешки. Можете също така да изтривате думи или редове. Ето обобщение на изтриващите действия: <Delback> Изтриване на знака точно преди курсора C-d Изтриване на знака точно след курсора M-<Delback> Изтриване на думата непосредствено преди курсора M-d Изтриване на думата след курсора C-k Изтриване от мястото на курсора до края на реда M-k Изтриване до края на текущото изречение Забележете, че <Delback> и C-d, сравнени с M-<Delback> и M-d, разширяват подобието, започнато от C-f и M-f (добре, <Delback> не е наистина контролиращ знак, но нека не се безпокоим за това). C-k и M-k са подобни на C-e и M-e в смисъл, че едните са за редове, а другите -- за изречения. Можете също да премахнете всяка част от буфера с един универсален начин. Придвижете се до единия край на частта и въведете C-@ или C-<SPC> (което и да е от двете). (<SPC> е клавишът интервал.) Придвижете се до другия край на частта и въведете C-w. Това ще изреже целия текст между тези два края. >> Придвижете курсора до знака "М" в началото на предишния абзац. >> Въведете C-<SPC>. Emacs трябва да изведе съобщение "Mark set" в долния край на екрана. >> Придвижете курсора до буквата "р" в "край" на втория ред от абзаца. >> Въведете C-w. Това ще изреже текста, започващ от "М" и завършващ точно преди "р". Разликата между "изрязване" (kill, cut) и "изтриване" (delete) е, че "изрязаният" текст може да бъде вмъкнат наново, докато "изтритите" неща не могат да се вмъкнат наново. Поставянето наново на изрязан текст се нарича "вмъкване" (yank, paste). Общо казано, командите, които отстраняват много текст, го изрязват (така че той да може да бъде вмъкнат), докато командите, които отстраняват само един знак или изтриват само празни редове и знаци, извършват изтриване (така че не можете да вмъкнете наново този текст). >> Придвижете курсора до началото на ред, който не е празен. Тогава въведете C-k, за да изрежете текста на този ред. >> Въведете C-k втори път. Ще видите, че това изрязва знака за нов ред, който следва реда. Забележете, че единично C-k изрязва съдържанието на реда, а следващото C-k изрязва целия ред и прави другите редове да се придвижат нагоре. C-k обработва числовите аргументи по специален начин: премахват се толкова на брой редове И тяхното съдържание. Това не е просто повторение. C-u 2 C-k изрязва два реда и техните знаци за нов ред; въвеждането на C-k два пъти не прави това. Връщането обратно на текст се нарича "вмъкване". (Мислете за него като за изваждане обратно, или дръпване обратно, на текст, който е бил изрязан.) Можете да вмъквате изрязания текст или на същото място, откъдето е бил премахнат, или на друго място в редактирания текст, даже и в различен файл. Можете да вмъквате един и същ текст няколко пъти; това прави няколко копия от него. Командата за вмъкване е 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-x u. Обикновено C-x u отменя промените, направени от една команда; ако повтаряте C-x u няколко пъти последователно, всяко повторение отменя още една команда. Но има две изключения: командите, които не променят текста, не се броят (това включва придвижването на курсора и скролиращите команди), и самовмъкващите се знаци обикновено се обработват на групи, всяка до 20 знака. (Това намалява броя на C-x u, които трябва да въведете, за да отмените въведен текст.) >> Изрежете този ред с C-k, след това въведете C-x u и той трябва да се появи отново. C-_ е алтернативна отменяща команда; тя работи точно като C-x u, но е по-лесна за въвеждане няколко пъти последователно. Недостатъкът на C_- е, че на някои клавиатури не е очевидно как трябва да се въведе. Затова осигуряваме и C-x u. На някои терминали може да въведете C-_ с въвеждане на /, докато задържате CONTROL. Числов аргумент към C-_ или C-x u действа като брояч на повторенията. Може да отменята изтриване на текст точно както отменяте изрязване на текст. Различието между изрязването на нещо и изтриването му въздейства дали ще може да го извадите с C-y; за отменянето няма разлика между двата вида. * ФАЙЛОВЕ --------- За да направите текста, който редактирате, постоянен, трябва да го сложите във файл. В противен случай той ще изчезне, когато Emacs приключи. За да сложите вашия текст във файл, трябва да "намерите" файла преди да въвеждате текст. (Това също се нарича "посещаване" на файла.) Намиране на файл означава, че виждате съдържанието му в Emacs. В много случаи това е като да редактирате самия файл. Обаче промените, които правите, използвайки Emacs, не остават постоянни, докато не "запишете" файла. Това е така, за да се предотврати оставянето на полупроменен файл в системата, когато не искате това. Дори когато записвате, Emacs оставя началния файл под променено име, в случай, че по-късно решите, че вашите промени са били грешка. Ако погледнете в дъното на екрана, ще видите ред, който започва и завършва с тирета и започва с "-R:-- TUTORIAL.bg" или нещо подобно. Тази част от екрана показва името на файла, който сте посетили. Точно сега вие сте посетили файл, наречен "TUTORIAL.bg", който е вашето лично копие-чернова на Emacs въведението. Когато намерите файл в Emacs, името на този файл ще се появи на същото място. Особеност на командата за намиране на файл е, че трябва да кажете името на файла, който искате. Ние го наричаме "четене на аргумент от терминала" (в този случай аргументът е името на файла). След като въведете командата C-x C-f Намиране на файл Emacs ви подканя да въведете името на файла. Името на файла, което напишете, се появява в дъното на екрана. Редът в дъното на екрана се нарича минибуфер, когато се използва за този вид вход. Можете да използвате обикновените команди за редактиране на Emacs, за да редактирате името на файла. Когато въвеждате името на файла (или какъвто и да е вход в минибуфера), можете да прекратите командата с C-g. >> Въведете C-x C-f и след това C-g. Това прекратява минибуфера, а също и командата C-x C-f, която се е изпълнявала в минибуфера. Така че не намирате файл. Когато приключите с въвеждането на името на файла, въведете <Return>, за да покажете това. Тогава C-x C-f тръгва да работи и намира файла, който сте избрали. Минибуферът изчезва, когато командата C-x C-f свърши. След малко съдържанието на файла се появява на екрана и вие можете да редактирате съдържанието му. Когато пожелаете да запазите вашите промени за постоянно, въведете командата C-x C-s Запазване на файла Това копира текста от Emacs във файла. Първия път, когато това се направи, Emacs преименува началния файл с ново име, така че той да не се изгуби. Новото име се построява с добавяне на "~" в края на името на началния файл. Когато запазването е свършило, Emacs извежда името на файла, който е бил записан. Трябва да записвате достатъчно често, така че да не изгубите много работа, ако системата се срине по някаква причина. >> Въведете C-x C-s, запазвайки вашето копие от въведението. Това трябва да изведе "Wrote ...TUTORIAL.bg" в дъното на екрана. ЗАБЕЛЕЖКА: На някои системи въвеждането на C-x C-s ще замръзи екрана и вие няма да виждате повече изход от Emacs. Това показва, че една "способност" на операционната система, наричана "управление на потока" (flow control), е прихванала C-s и не го пропуска към Emacs. За да размразите екрана, въведете C-q. Тогава вижте секцията "Спонтанно включване на постъпково търсене" (Spontaneous Entry to Incremental Search) в ръководството на Emacs за съвет как да се справите с тази "способност". Може да намерите съществуващ файл, да го разгледате и да го редактирате. Можете също да намерите файл, който не съществува. Това е начинът за създаване на нови файлове в Emacs: намирате файла, който ще бъде в началото празен, и тогава започвате вмъкването на текста за файла. Когато говорите за "записване" на файл, Emacs всъщност ще създаде файла с текста, който сте въвели. Оттам нататък може да считате, че редактирате вече съществуващ файл. * БУФЕРИ -------- Ако намерите втори файл с C-x C-f, първият файл остава в Emacs. Можете да превключите обратно към него, като го намерите пак с C-x C-f. По този начин може да получите доста на брой файлове в Emacs. >> Създайте файл с име "foo", въвеждайки C-x C-f foo <Return>. Вмъкнете малко текст, редактирайте го и запазете "foo" с въвеждане на C-x C-s. Накрая въведете C-x C-f TUTORIAL.bg <Return>, за да се върнете обратно във въведението. Emacs запазва текста на всеки файл в обект, наричан "буфер". Намирането на файл прави нов буфер в Emacs. За да видите списък на буферите, които в момента съществуват във вашия Emacs, въведете C-x C-b Показване на буферите >> Опитайте C-x C-b сега. Вижте как всеки буфер има име, а понякога и име на файл за файла, чието съдържание държи. ВСЕКИ текст, който виждате в Emacs прозорец, е винаги част от някакъв буфер. >> Въведете C-x 1, за да махнете списъка с буферите. Когато имате няколко буфера, само един от тях е "текущ" в даден момент от време. Това е буферът, който редактирате. Ако искате да редактирате друг буфер, се нуждаете от "превключване" към него. Ако искате да се превключите към буфер, който съответства на файл, можете да го направите, като просто посетите файла отново с C-x C-f. Но има и по-лесен начин: използването на командата C-x b. В тази команда трябва да въведете името на буфера. >> Въведете C-x b foo <Return>, за да се върнете към буфера "foo", който държи текста на файла "foo". Тогава въведете C-x b TUTORIAL <Return>, за да се върнете в това въведение. В повечето случаи името на буфера е същото като името на файла (без частта в коя директория се намира). Обаче това не винаги е вярно. Списъкът с буферите, който правите с C-x C-b, винаги ви показва името на всеки буфер. ВСЕКИ текст, който виждате в Emacs прозорец, е винаги част от някакъв буфер. Някои буфери не съответстват на файлове. Например буферът, именуван "*Buffer List*", не съответства на файл. Това е буферът, който съдържа списъка с буферите, които сте направили с C-x C-b. Буферът, именуван "*Messages*", също не съответства на файл; той съдържа съобщенията, които се появяват в дъното на екрана по време на Emacs сесията. >> Въведете C-x b *Messages* <Return>, за да видите буфера със съобщенията. След това въведете C-x C-b TUTORIAL <Return>, за да се върнете към това въведение. Ако направите промени в текста на един файл и тогава намерите друг файл, това няма да запише първия файл. Неговите промени остават вътре в Emacs, в буфера на файла. Създаването или редактирането на буфера на втория файл няма ефект върху буфера на първия файл. Това е много полезно, но също означава, че се нуждаете от удобен начин да запазите буфера на първия файл. Ще е неудобно да превключите обратно с C-x C-f, за да го запазите с C-x C-s. Така че имаме C-x s Запазва някои буфери C-x s пита за всеки буфер, който съдържа промени, които не сте запазили. Въпросът за всеки такъв буфер е дали да бъде запазен. >> Вмъкнете ред в текста, след това въведете C-x s. Трябва да бъдете попитан дали да запазите буфера, именуван "TUTORIAL". Отговорете с "да" на въпроса, като въведете "y". * РАЗШИРЯВАНЕ НА НАБОРА КОМАНДИ ------------------------------- Има много, много повече команди на Emacs, отколкото могат да се сложат на всички контролни и мета знаци. Emacs заобикаля това с X (eXtended) командата. Това става по два начина: C-x Знаково разширяване. Последвано от един знак. M-x Разширяване с именувана команда. Последвано от дълго име. Тези команди са общо взето полезни, но по-малко, отколкото командите, които досега сте научили. Вече видяхте няколко от тях: например командите върху файлове C-x C-f за намиране (Find) и C-x C-s за запазване (Save). Друг пример е командата за край на Emacs сесията -- това е командата C-x C-c. (Не се безпокойте, че може да изгубите всички промени, които сте направили; C-x C-c предлага да запази всеки променен файл, преди да премахне Emacs.) C-z е командата за излизане от Emacs *временно* -- така че да можете да се върнете към същата Emacs сесия по-късно. На системи, които позволяват това, C-z "изоставя" (suspend) Emacs, т.е. връща към обвивката, но не разрушава Emacs. В повечето обвивки можете да продължите Emacs сесията с командата "fg" или с "%emacs". На системи, които не позволяват изоставяне, C-z създава нова подобвивка, която върви под Emacs, за да ви даде шанс да стартирате други програми и да се върнете към Emacs след това; това не е истинско "излизане" от Emacs. В този случай командата на обвивката "exit" е обикновеният начин да се върнете обратно към Emacs от подобвивката. Моментът да използвате C-x C-c е, когато искате да излезете от системата. Това е и правилната команда за излизане, когато Emacs е извикан от пощенска програма или други странични програми, тъй като те може и да не знаят как да се справят с изоставянето на Emacs. При обикновени обстоятелства, обаче, ако не сте тръгнали да излизате от системата, по-добре е да изоставите Emacs с C-z, вместо да излизате от Emacs. Има много команди C-x. Ето списък на тези, които сте научили: C-x C-f Намиране на файл C-x C-s Запазване на файл C-x C-b Списък на буферите C-x C-c Излизане от Emacs C-x 1 Изтриване на всички прозорци, освен един C-x u Отмяна Именуваните разширени команди са команди, които се използват даже още по-рядко, или команди, които се използват само в определени режими. Пример е командата replace-string, която заменя глобално един низ с друг. Когато въведете M-x, Emacs ви подсказва в дъното на екрана с M-x и вие трябва да въведете името на командата, в този случай "replace-string". Просто въведете "repl s<TAB>" и Emacs ще завърши името. (<TAB> е клавишът Tab, обикновено намиращ се над клавиша CapsLock или клавиша Shift близо до левия край на клавиатурата.) Завършете името на командата с <Return>. Командата replace-string изисква два аргумента -- низът, който ще бъде заменян, и низът, който ще го замени. Трябва да завършите въвеждането на всеки аргумент с <Return>. >> Придвижете курсора до празния ред, два реда надолу под този. Тогава въведете M-x repl s<Return>променя<Return>изменя<Return> Забележете как този ред се променя: вие заменихте думата п-р-о-м-е-н-я с "изменя", където и да се намира след началното място на курсора. ЗАБЕЛЕЖКА: Превключването към въвеждане на кирилски буква става с C-\. * АВТОМАТИЧНО ЗАПАЗВАНЕ ----------------------- Когато сте направили промени във файл, но още не сте го запазили, те могат да бъдат загубени, ако компютърът внезапно се изключи. За да ви предпази от такива ситуации, Emacs периодично запазва "автоматично запазван" файл за всеки файл, който редактирате. Името на автоматично запазвания файл има # в началото и в края; например, ако вашият файл е с име "hello.c", името на неговия автоматично запазван файл ще бъде "#hello.c#". Когато запазвате файл по обикновения начин, Emacs изтрива неговия автоматично записван файл. Ако компютърът зависне, може да възстановите вашата автоматично запазвана редакция, като намерите файла както обикновено (файлът, който сте редактирали, не автоматично запазвания) и след това въведете M-x recover file<Return>. Когато командата изиска потвърждение, въведете yes<Return>, за да продължите и да възстановите автоматично запазваните данни. * ЕХО ОБЛАСТТА -------------- Ако Emacs види, че въвеждате многознакови команди бавно, ще ви ги покаже в дъното на екрана, в област, наричана "ехо област". Ехо областта обхваща последния ред от екрана. * РЕД НА РЕЖИМА ---------------- Редът точно над ехо областта се нарича "ред на режима" (mode line). Той показва нещо като: -D:** TUTORIAL.bg 63% L749 (Fundamental)--------------------- Този ред дава полезна информация за състоянието на Emacs и текста, който редактирате. Вече знаете какво означава името на файла -- това е файлът, който сте намерили. NN% показва вашата текуща позиция в текста; това означава, че NN процента от текста е над върха на екрана. Ако началото на файла е на екрана, ще се показва --Top-- (връх) вместо --00%--. Ако краят на файла е на екрана, ще се показва --Bot-- (дъно). Ако гледате текст, който е толкова малък, че се показва изцяло на екрана, редът на режима ще изведе --All--. Знакът L и цифрите показват мястото по друг начин: това е номерът на текущия ред на точката. Звездите близо до началото означават, че сте направили промени в текста. Веднага след като посетите или запазите файл, тази част от реда на режима вече не показва звезди, а само тирета. Частта от реда на режима вътре в скобите е, за да ви покаже в какъв режим на редактиране се намирате. Подразбиращият се режим е Fundamental (Основен), който използвате в момента. Това е пример за "главен режим" (major mode). Emacs има много главни режими. Някои от тях са предвидени за редактиране на различни езици и/или видове текст, като например режим Лисп, режим Текст и други. Във всеки един момент от време точно един главен режим е активен и неговото име може винаги да бъде намерено в реда на режима, точно както "Fundamental" сега. Всеки главен режим прави някои команди да се държат по различен начин. Например, има команди за редактиране на коментари в програми, и тъй като всеки програмен език има различна идея за това как трябва да изглеждат коментарите, всеки главен режим трябва да вмъква коментари по различен начин. Всеки главен режим е име на разширена команда, с която превключвате към този режим. Например, M-x fundamental-mode е команда за превключване към режим Fundamental. Когато редактирате текст на естествен език, като този файл, най-вероятно трябва да използвате режим Текст (text). >> Въведете M-x text mode<Return>. Не се безпокойте, никоя от Emacs командите, които сте научили, няма да се промени по някакъв съществен начин. Но може да забележите, че M-f и M-b сега възприемат апострофите (') като част от думите. Преди това, в основния режим (Fundamental), M-f и M-b се възприемаха като разделители на думи. Главните режими обикновено правят малки промени като тази: повечето команди вършат "същата работа" във всеки главен режим, но работят по малко по-различен начин. За да видите документацията на вашия текущ главен режим, въведете C-h m. >> Употребете C-u C-v веднъж или повече пъти, за да докарате този ред близо до върха на екрана. >> Въведете C-h m, за да видите как текстовият режим се различава от основния режим. >> Въведете C-x 1, за да премахнете документацията от екрана. Главните режими се наричат главни, защото има и малки (второстепенни) режими (minor modes). Малките режими не са алтернативи на главните, а просто малки промени към тях. Всеки малък режим може да бъде включен или изключен сам за себе си, независимо от всички други малки режими и независимо от вашия главен режим. Така че може да не използвате малки режими, да използвате един малък режим, или да използвате някаква комбинация от няколко малки режима. Един главен режим, който е много полезен, особено за редактиране на текст на естествен език, е режимът на автоматично запълване (Auto Fill mode). Когато този режим е включен, Emacs автоматично разделя реда при мястото между думите, когато вмъквате текст и направите ред, който е твърде дълъг. Може да включите режима на автоматично запълване, като изпълните M-x auto fill mode<Return>. Когато режимът е включен, може да го изключите с M-x auto fill mode<Return>. Ако режимът е изключен, тази команда го включва, а ако е включен, го изключва. Казваме, че командата "обръща режима". >> Въведете M-x auto fill mode<Return> сега. След това вмъкнете ред от "asdf " отново и отново, докато не видите, че текстът се разделя на два реда. Трябва да слагате интервали между думите, защото автоматичното запълване разделя редовете само при интервалите. Границата обикновено е зададена на 70 знака, но можете да я промените с командата C-x f. Трябва да задавате тази граница като числов аргумент на командата. >> Въведете C-x f с аргумент 20. (C-u 2 0 C-x f). Сега въведете някакъв текст и вижте как Emacs запълва редовете с по не повече от 20 знака. После върнете обратно границата на 70, използвайки C-x f отново. Ако направите промени в средата на абзац, режимът на автоматично запълване няма да го запълни наново за вас. За да запълните наново абзац, въвеждайте M-q (META-q), докато курсорът е вътре в абзаца. >> Придвижете курсора вътре в предишния абзац и въведете M-q. * ТЪРСЕНЕ --------- Emacs може да извършва търсения на низове (това са последователности от знаци или думи) или напред в текста, или назад в него. Търсенето на низ е придвижваща курсора команда; тя премества курсора на следващото място, където се среща низът. Командата за търсене на Emacs се различава от командата за търсене на повечето редактори по това, че тя е "постъпкова". Това означава, че търсенето се извършва още докато въвеждате текста, който търсите. Командата за започване на търсене е C-s за търсене напред, и C-r за търсене назад. НО ПОЧАКАЙТЕ! Не ги пробвайте сега. Когато въведете C-s, ще забележите, че низът "I-search" се появява като подсказка в ехо областта. Това ви казва, че Emacs е в това, което се нарича постъпково търсене, чакайки ви да въвеждате текста, който искате да търсите. <Return> приключва търсенето. >> Сега въведете C-s, за да започнете търсенето. БАВНО, буква по буква, въведете думата "търсене", изчаквайки след въвеждането на всеки знак, за да може да забележите какво става с курсора. Сега извършихте търсене на "търсене" веднъж. >> Въведете отново C-s, за да търсите друго съвпадение с "търсене". >> Сега въведете <Delback> три пъти и вижте как се придвижва курсора. >> Въведете <Return>, за да прекратите търсенето. Забелязахте ли какво стана? Emacs, когато търси постъпково, се опитва да намери следващото съвпадение на низа, който се въвежда. За да отидете на следващото съвпадение на "търсне", просто отново въведете C-s. Ако няма такова съвпадение, Emacs бибипва и ви казва, че търсенето е "провалено" (failing). C-g също прекратява търсенето. ЗАБЕЛЕЖКА: На някои системи въвеждането на C-s ще замрази екрана и вие няма да може да видите повече реакция от Emacs. Това показва, че "способност" на операционната система, наречена "управление на потока" (flow control), е прихванала C-s и не го пропуска до Emacs. За да размразите екрана, въведете C-q. Тогава вижте секцията "Спонтанно включване на постъпковото търсене" (Spontaneous Entry to Incremental Search) в ръководството на Emacs за съвет как да се справите с тази "способност". Ако сте в средата на постъпково търсене и въведете <Delback>, ще забележите, че последният знак в търсения низ се изтрива и търсенето се връща към последното място на търсене. Например, предположете, че сте въвели "т", за да намерите първото съвпадение с "т". Сега, ако въведете "ъ", курсорът ще се придвижи към първото съвпадение на "тъ". Сега въведете <Delback>. Това изтрива знака "ъ" от низа за търсене и курсорът се премества назад, до първото съвпадение с "т". Ако сте в средата на търсене и въведете контролен или мета знак (с няколко изключения -- знаците, които са специални по време на търсене, като C-s и C-r), търсенето се прекратява. C-s започва търсене, което гледа за съвпадение с низа, даден за търсене СЛЕД текущото място на курсора. Ако искате да търсите нещо по-ранно от текста, вместо това въведете C-r. Всичко, което казахме за C-s, важи и за C-r, освен че посоката на търсене е обърната. * МНОЖЕСТВО ПРОЗОРЦИ -------------------- Една от привлекателните способности на Emacs е тази, че може да гледате повече от един прозорец на екрана в даден момент от време. >> Придвижете курсора до този ред и въведете C-u 0 C-l (това е CONTROL-L, не CONTROL-1). >> Сега въведете 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, може да въвеждате C-M-v, задържайки едновременно CONTROL и META, докато въвеждате v. Няма значение дали CONTROL или META "е натиснат първи", защото и двата клавиша действат, модифицирайки знака, който сте въвели. Ако нямате истински клавиш META и използвате <ESC> вместо това, редът има значение: трябва да въвеждате <ESC>, последван от CONTROL-v, защото CONTROL-<ESC> v няма да работи. Това е така, защото <ESC> е собствен знак, а не модификатор. >> Въведете C-x 1 (в горния прозорец), за да махнете долния прозорец. (Ако сте въвели C-x 1 в долния прозорец, това ще махне горния. Мислете за тази команда като "Задръж точно един прозорец -- този, в който съм сега".) Няма нужда да извеждате един и същи буфер в двата прозореца. Ако използвате C-x C-f, за да намерите файл в единия прозорец, другият прозорец не се променя. Може да намирате файл във всеки прозорец, независимо от това какво има в другите прозорци. Ето още един начин да използвате два прозореца, за да покажете две различни неща: >> Въведете C-x 4 C-f, последвано от името на един от вашите файлове. Завършете с <Return>. Вижте как този файл се появява в долния прозорец. Курсорът също отива там. >> Въведете C-x o, за да се върнете в горния прозорец, и C-x 1, за да изтриете долния. * ВЛОЖЕНИ НИВА НА РЕДАКТИРАНЕ ----------------------------- Понякога ще се озовете в това, което се нарича "вложено ниво на редактиране" (recursive editing level). Това се отбелязва от квадратни скоби в реда на режима, които ограждат скобите около името на главния режим. Например, може да видите [(Fundamental)] вместо (Fundamental). За да се махнете от вложеното ниво на редактиране, въведете <ESC> <ESC> <ESC>. Това е обща команда за "излизане". Може и да я използвате за махане (скриване) на допълнителни прозорци, както и за да се махнете от минибуфера. >> Въведете M-x, за да влезете в минибуфер; тогава въведете <ESC> <ESC> <ESC>, за да излезете. Не можете да използвате C-g, за да излезете от вложено ниво на редактиране. Това е така, защото C-g се използва за прекратяване на команди и аргументи ВЪТРЕ във вложено ниво на редактиране. * ПОЛУЧАВАНЕ НА ДОПЪЛНИТЕЛНА ПОМОЩ ---------------------------------- В това въведение се опитахме да осигурим достатъчно информация, за да започнете да използвате Emacs. Има толкова много още в Emacs, че не е възможно то да бъде обяснено всичкото тук. Обаче може да поискате да научите повече за Emacs, тъй като той притежава още много полезни способности. Emacs има команди за четене на документацията на Emacs командите. Тези "помощни" команди всички започват със знака CONTROL-h, който се нарича "знакът за помощ". За да използвате възможностите на тази помощ, въведете знака C-h и след това знака, казващ какъв вид помощ искате. Ако НАИСТИНА сте се изгубили, въведете C-h ? и Emacs ще ви каже с какво може да ви помогне. Ако сте въвели C-h и решите, че не се нуждаете от помощ, просто въведете C-g, за да я прекратите. (Някои компютри променят значението на знака C-h. Те наистина не трябва да правят това като сляпа мярка за всички потребители, така че имате основание да се оплачете на системния администратор. Между другото, ако C-h не извежда съобщение за помощ в дъното на екрана, опитайте клавиша F1 или M-x help <Return> вместо това.) Най-основното помощно средство е C-h c. Въведете C-h, знака c и команден знак или последователност от знаци, образуващи команда; тогава Emacs ще изведе много кратко описание на командата. >> Type C-h c C-p. Изведеното описание трябва да бъде нещо като C-p runs the command previous-line (C-p изпълнява командата предишен-ред) Това ви казва "името на функцията". Имената на функциите се използват най-вече за настройване и разширяване на Emacs. Но тъй като имената на функциите са избрани така, че да показват какво прави командата, те могат да служат и за много кратка документация -- достатъчна, за да ви припомни команди, които вече сте учили. Многознакови команди, като C-x C-s и (ако нямате клавиш META или EDIT или ALT) <ESC>v, също са позволени след C-h c. За да получите още информация за команда, използвайте C-h k вместо C-h c. >> Въведете C-h k C-p. Това извежда документацията на функцията, както и нейното име, в отделен Emacs прозорец. Когато я прочетете, въведете C-x 1, за да махнете помощния текст. Не е нужно да правите това точно сега. Може да редактирате, докато се обръщате към помощния текст за справка, и след това да въведете C-x 1. Ето още няколко полезни C-h възможности: C-h f Описва функция. Трябва да въведете името на функцията. >> Опитайте с въвеждане на C-h f previous-line<Return>. Това извежда цялата информация, която Emacs знае за функцията, която осъществява командата C-p. Подобна команда, C-h v, извежда документацията на променливите, които може да променяте, за да настройвате поведението на Emacs. Трябва да въведете името на променливата, когато Emacs ви подскаже това. C-h a Команда Апропос. Въведете ключова дума и Emacs ще покаже списък на всички команди, чието име съдържа тази ключова дума. Тези команди могат всички да бъдат извикани чрез META-x. За някои команди командата Апропос ще изведе допълнително еднознакова или двузнакова последователност от клавиши, която пуска същата команда. >> Въведете C-h a file<Return>. Това извежда в друг прозорец списък на всички M-x команди, които съдържат "file" в тяхното име. Ще видите знакови команди като C-x C-f, изброени измежду съответните имена на команди, като find-file. >> Въведете C-M-v, за да скролирате помощния прозорец. Направете го няколко пъти. >> Въведете C-x 1, за да изтриете помощния прозорец. C-h i Четене на ръководства (Info). Тази команда ви праща в специален буфер, наричан "*info*", където може да четете ръководствата на инсталираните във вашата система пакети. Въведете m emacs <Return>, за да четете ръководството на Emacs. Ако никога преди това не сте използвали Info, въведете ? и Emacs ще включи въведение във възможностите на режима Инфо. Веднъж след като сте преминали това въведение, трябва да се консултирате с Emacs Инфо ръководството като ваша основна документация. * ОЩЕ ВЪЗМОЖНОСТИ ----------------- Може да научите повече за Emacs с четене на неговото ръководство, или като книга, или в Инфо (използвайте менюто помощ (Help) или въведете F10 h r). Две възможности, които може да желаете в началото, са довършване (completion), което спестява писане, и dired, който опростява боравенето с файлове. Довършването е начин да избягвате ненужно писане. Например, ако искате да превключите към буфера *Messages*, може да въведете C-x b *M<Tab> и Emacs ще запълни останалата част от името на буфера, доколкото може да се определи от това, което сте въвели. Довършването е описано в Инфо-ръководството на Emacs в страницата "Довършване" ("Completion"). Dired ви позволява да гледате списъка от файлове в директория (и като възможност: нейните поддиректории), да се придвижвате в този списък, да посещавате, преименувате, изтривате и изобщо действате върху файловете. Dired е описан в Инфо-ръководството на Emacs в страницата "Dired". Ръководството на Emacs описва още много други възможности на редактора. * ЗАКЛЮЧЕНИЕ ------------ Запомнете: за да излезете безвъзвратно от Emacs, използвайте C-x C-c. За да излезете временно в обвивка, така че да се върнете в Emacs по-късно, използвайте C-z. Това въведение е предвидено да бъде разбираемо за всички нови потребители, така че ако намирате нещо неясно, не се самообвинявайте -- оплачете се! * КОПИРАНЕ ---------- Това въведение произлиза от дълга поредица въведения в Emacs, започвайки от едно, написано от Стюърт Кракрафт за началния Emacs. Тази версия на въведението, както и GNU Emacs, е защитена с авторски права и идва с разрешение да разпространявате копия при следните условия: 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, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. Permission is granted to anyone to make or distribute verbatim copies of this document as received, in any medium, provided that the copyright notice and permission notice are preserved, and that the distributor grants the recipient permission for further redistribution as permitted by this notice. Permission is granted to distribute modified versions of this document, or of portions of it, under the above conditions, provided also that they carry prominent notices stating who last altered them. Условията за копиране на самия Emacs са по-сложни, но в същия дух. Моля, прочетете файла COPYING и тогава давайте копия на GNU Emacs на свои приятели. Помогнете да спрем затвореността на програмите ("притежанието"), като използваме, пишем и споделяме свободен софтуер! Преводът на български е извършен от Огнян Кулев <ogi@fmi.uni-sofia.bg>. ;;; Local Variables: ;;; coding: windows-1251 ;;; End: ;;; arch-tag: 70cf6ad7-c2e4-41fe-8199-74aa52683b0e