490
Руководство по GNU Emacs

rUKOWODSTWO PO GNU Emacsold-dos.ru/books/a/b/4/emacs-20.7.pdf · rI^ARD sTOLMEN. Permission is granted to make and distribute verbatim copies of this manual provided the copyright

  • Upload
    others

  • View
    27

  • Download
    0

Embed Size (px)

Citation preview

  • Руководство по GNU Emacs

  • Руководство по GNU Emacs

    Тринадцатая редакция, обновлено для Emacs версии 20.7

    Ричард Столмен

  • Permission is granted to make and distribute verbatim copies of this manual provided thecopyright notice and this permission notice are preserved on all copies.Permission is granted to copy and distribute modified versions of this manual under the con-ditions for verbatim copying, provided also that the sections entitled “The GNU Manifesto”,“Distribution” and “GNU General Public License” are included exactly as in the original, andprovided that the entire resulting derived work is distributed under the terms of a permissionnotice identical to this one.Permission is granted to copy and distribute translations of this manual into another language,under the above conditions for modified versions, except that the sections entitled “The GNUManifesto”, “Distribution” and “GNU General Public License” may be included in a translationapproved by the Free Software Foundation instead of in the original English.

    Тринадцатая редакция

    обновлено для Emacs версии 20.7, июль 1999

    c© Free Software Foundation, Inc., 1985-1987, 1993-1999c© Перевод. Н. Ю. Иванова, 1993c© Перевод. А. Я. Отт, О. С. Тихонов, 1999

    ISBN 5-85593-133-1

    Ричард Столмен

    "Руководство по GNU Emacs"

    Издано АНО"ИЛКиРЛ"Лицензия ЛР N 066121 от 22.09.1998г.

    Подписано к печати 25.11.1999г.Формат 70х100 1/16Тираж 1000 экз. Тип.зак.

    ОАО "АСТРА СЕМЬ"Москва, Филипповский пер.,13

  • Предисловие 3

    Предисловие

    Это руководство описывает использование и простую настройку редактора Emacs. Отчитателя не требуется быть программистом; для простой настройки не надо обладатьнавыками в программировании. Те пользователи, которые не интересуются настройкой,могут пропускать рассыпанные по тексту краткие советы по ней.Это, главным образом, справочное руководство, но его также можно использовать в ка-

    честве учебника. Для тех, кто еще совсем не знаком с Emacs, неплохой идеей будет начатьс обучающей диалоговой программы. Чтобы вызвать ее, запустите Emacs и наберите C-ht. Тогда вы сможете изучить Emacs, используя его в специально разработанном файле, ко-торый описывает команды, говорит, когда их использовать, а затем объясняет полученныес помощью этих команд результаты.При первом чтении просто бегло просмотрите первую и вторую главы, в которых опи-

    сана принятая в этом руководстве система обозначений и общий вид экрана в Emacs. Обра-тите внимание, на какие вопросы есть ответы в этих главах, чтобы вы могли вернутьсяк ним позже. После прочтения четвертой главы вы должны попрактиковаться с рассмот-ренными в ней командами. Следующие несколько глав описывают часто используемыефундаментальные методы и понятия. Вам нужно понять их до конца, экспериментируя сними, если это необходимо.Главы с четырнадцатой по девятнадцатую описывают средства среднего уровня, полез-

    ные в любых видах редактирования. Глава 20 и последующие описывают возможности,которые вы можете захотеть использовать, а можете и не захотеть; причитайте эти главы,когда эти возможности вам понадобятся.Если вам кажется, что Emacs работает неправильно, прочтите главу о решении про-

    блем. Она объясняет, как справиться с некоторыми часто возникающими трудностями(см. Раздел 32.2 [Неполадки], с. 372), а также когда и как нужно сообщать об ошибках вEmacs (см. Раздел 32.3 [Ошибки в Emacs], с. 375).Чтобы отыскать документацию на отдельную команду, загляните в именной указатель.

    Ключи (литеральные команды) и имена команд перечислены в отдельных именных указа-телях. Также имеется словарь с перекрестными ссылками на каждый термин.Данное руководство доступно в печатной форме и в виде Info-файла. Info-файл слу-

    жит для диалогового чтения с программой Info; это будет первичным способом просмотраинтерактивной документации в системе GNU. И этот Info-файл, и сама программа Info рас-пространяются вместе с GNU Emacs. Печатная книга и Info-файл содержат по сути одинтот же текст и создаются из общего исходного файла, который также распространяетсявместе с GNU Emacs.

    GNU Emacs — член семейства Emacs-редакторов, насчитывающего большое число ре-дакторов, построенных на общих организационных принципах. Чтобы почитать о филосо-фии, лежащей в основе Emacs, и уроках, полученных из его развития, выпишите копию AImemo 519a "Emacs, the Extensible, customizable Self-Documenting Display Editor", в Publica-tion Department, Artificial Intelligence Lab, 545 Tech Square, Cambridge, MA 02139, USA. Попоследним сообщениям они стоили $2.25 за копию. Другая полезная публикация — это LCSTM-165, "A Cookbook for an Emacs", Craig Finseth, доступная из Publication Department,Laboratory for Computer Seince, 543 Tech Square, Cambridge, MA 02139, USA. Сегодняшняяцена $3.Эта редакция руководства предназначена для использования с GNU Emacs, установлен-

    ном в системах GNU и Unix. GNU Emacs также можно использовать в системах VMS,MS-DOS (иначе называемой MS-DOG), Windows NT и Windows 95. Эти системы придер-живаются другого синтаксиса имен файлов; кроме того, VMS и MS-DOS не поддерживаютвсех возможностей GNU Emacs. В этом руководстве мы не пытаемся описать применениеEmacs в системе VMS. Для получения информации об использовании Emacs в MS-DOSсмотрите Приложение C [MS-DOS], с. 403.

  • 4 Руководство по GNU Emacs

  • Распространение 5

    Распространение

    GNU Emacs — SWOBODNAQ PROGRAMMA; это значит, что всякий может свободно использо-вать и повторно распространять его при соблюдении определенных условий. GNU Emacsне является общественным достоянием; на него действуют авторские права, и на его рас-пространение есть ограничения, но эти ограничения разработаны так, чтобы позволитьвсе, что может захотеть хороший благонамеренный гражданин. Что не разрешается, такэто пытаться мешать другим и далее совместно пользоваться любой версией GNU Emacs,которую они могли бы от вас получить. Точные условия находятся в Универсальной Об-щественной Лицензии GNU, которая поставляется с Emacs и также идет в следующемразделе.Один из способов получить копию GNU Emacs — взять ее кого-то, у кого Emacs уже

    есть. Вам не нужно просить нашего разрешения либо что-то еще, просто скопируйте ее.Если вы имеете доступ к Internet, вы можете получить последнюю версию дистрибутиваGNU Emacs по анонимному FTP; подробности смотрите в файле ‘etc/FTP’ в поставкеEmacs.Вы можете также получить GNU Emacs, когда покупаете компьютер. Производители

    компьютеров могут распространять копии на тех же самых условиях, что и все остальные.Эти условия требуют от них дать вам полные исходные тексты, включая любые измене-ния, сделанные ими, и разрешить вам распространять полученный от них GNU Emacsсогласно обычным условиям Универсальной Общественной Лицензии. Другими словами,эта программа должна быть свободной для вас, когда вы ее получаете, а не только сво-бодной для производителей.Вы также можете заказать копии GNU Emacs у Фонда Свободного ПО на компакт-

    диске. Это удобный и надежный способ получить копию; это также хороший способпомочь средствами нашей работе. (Фонд всегда получал большую часть средств такимспособом.) Форма заказа включена в файл ‘etc/ORDERS’ в поставке Emacs, она есть и нанашем Web-сайте http://www.gnu.org/order/order.html. Для получения дополнитель-ной информации пишите по адресу

    Free Software Foundation59 Temple Place, Suite 330Boston, MA 02111-1307 USAUSA

    Доход от платы за распространение идет на поддержку целей фонда: разработки но-вого свободного программного обеспечения и развития наших существующих программ,включая GNU Emacs.Если вы находите GNU Emacs полезным, пожалуйста PRI[LITE WZNOS в Фонд Свобод-

    ного программного обеспечения, чтобы поддержать нашу работу. Пожертвования в ФондСвободного ПО в США обладают налоговой скидкой. Если вы используете GNU Emacsна работе, пожалуйста, предложите вашей компании сделать взнос. Если политика ком-пании недружелюбно относится к идее пожертвования благотворительной организации, выможете вместо этого предложить время от времени заказывать у Фонда Свободного ПО

    компакт-диски или подписаться на регулярные обновления.В разработке GNU Emacs принимали участие Пер Абрахамсен, Джей К. Адамс, Джо

    Арсено, Боаз Бен-Цви, Джим Блэнди, Дэвид М. Браун, Теренс М. Бренон, Питер Бретон,Фрэнк Брец, Кевин Броди, Винсент Броман, Нейл В. Ван Дайк, Мортен Велиндер, УльрикВиет, Майк Вильямс, Родни Витби, Феликс С. Т. Ву, Стивен А. Вуд, Барри Ворсо, Джо-ан Вроманс, Том Вурглер, Кейт Габриэльски, Кевин Галахер, Кевин Галло, Дуг Гвин,Говард Гейл, Анри Гийом, Дэвид Гиллеспи, Стивен Гильди, Боб Гликстайн, Борис Гол-довски, Микеланджело Григни, Майкл Гшвинд, Матье Девин, Майкл ДеКорте, Гари Делп,Кайл Джонс, Майкл К. Джонсон, Эрик Динг, Карстен Доминик, Скотт Дрейвс, Виктор

    http://www.gnu.org/order/order.html

  • 6 Руководство по GNU Emacs

    Духовни, Джеми Завински, Эли Зарецкий, Нил Зиринг, Вильям Зоммерфельд, Ларс Ин-гебригтсен, Эндрю Иннес, Джон Итон, Томодзи Кагатани, Говард Кайе, Майкл Кайфер,Брюстер Кале, Билл Карпентер, Дуг Катинг, Давид Кауфман, Генри Кауц, Джеф Кёнинг,Ричард Кинг, Джеймс Кларк, Майк Кларксон, Глин Клементс, Дэвид Когедал, Ларри К.Колодни, Роберт Кравиц, Себастиан Кремер, Эндрю Ксилаг, Даниель ЛаЛиберт, АаронЛарсон, Джеймс Р. Ларус, Фредерик Лепье, Ларс Линдберг, Эрик Лудлам, Роланд Мак-Грат, Билл Манн, Кен Манхаймер, Брайан Марик, Бенгт Мартенсон, Чарли Мартин,Саймон Маршалл, Дэвид Меггинсон, Томас Мей, Нейл М. Мейгер, Вейн Месард, РичардМлинарик, Кейт Мур, Эрик Наггум, Юрген Никельсен, Томас Нойман, Джефф Норден,Эндрю Норман, Майк Ньютон, Джефф Пек, Дамон Антон Пермезель, Том Перрин, ЙенсПетерсен, Кристиан Плонт, Франческо Поторти, Майкл Д. Прандж, Дэниел Пфайфер,Фред Пьерестегай, Эшвин Рам, Пол Рейли, Эрик С. Реймонд, Эдвард М. Рейнгольд, РобРипел, Роланд Б. Робертс, Джон Робинсон, Гилермо Х. Розас, Вильям Розенблат, Ден-ни Розендаль, Ивар Руммелхоф, Вольфганг Рупрехт, Масахико Сато, Мануэль Серрано,Эспен Скоглунд, Рик Сладки, Линн Слейтер, Дэвид Смит, Крис Смит, Пол Д. Смит,Майкл Статс, Аке Стенхофф, Питер Стефенсон, Джонатан Стигельман, Стив Страссман,Джеймс Б. Сэлем, Йенс Т. Бергер Тиэльман, Спенсер Томас, Джим Томпсон, Эд Уилкин-сон, Масанобу Умеда, Дейл Р. Уорли, Джозеф Брайан Уэллс, Фредерик Фернбак, ФредФиш, Карл Фогель, Джефри Фолькер, Гари Фостер, Ной Фридмен, Джон Хайдеман, Ке-ничи Ханда, К. Шейн Хартман, Маркус Херич, Манабу Хигасида, Карл Хойер, АндерсХолст, Курт Хорник, Том Хулдер, Крис Хэнсон, Рето Циммерман, Ян Т. Циммерман,Станислав Шалунов, Марк Шапиро, Рэндел Шварц, Вильям Шелтер, Ричард Шерман,Олин Шиверс, Ральф Шлайхер, Грегор Шмид, Майкл Шмидт, Рональд С. Шнель, ФилиппШнобелен, Стефан Шоэф, Сема Штейнгольд, Ганс Чалупски, Боб Чассел, Рольф Эберт,Стивен Эглен, Торбьорн Эйнарсон, Цугутомо Энами, Ганс Генрик Эриксен, Майкл Эрнсти Ата Этемади.

  • GNU GENERAL PUBLIC LICENSE 7

    GNU GENERAL PUBLIC LICENSE

    Version 2, June 1991Copyright c© 1989, 1991 Free Software Foundation, Inc.59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

    Everyone is permitted to copy and distribute verbatim copiesof this license document, but changing it is not allowed.

    Preamble

    The licenses for most software are designed to take away your freedom to share and changeit. By contrast, the GNU General Public License is intended to guarantee your freedom to shareand change free software—to make sure the software is free for all its users. This General PublicLicense applies to most of the Free Software Foundation’s software and to any other programwhose authors commit to using it. (Some other Free Software Foundation software is coveredby the GNU Library General Public License instead.) You can apply it to your programs, too.

    When we speak of free software, we are referring to freedom, not price. Our General PublicLicenses are designed to make sure that you have the freedom to distribute copies of freesoftware (and charge for this service if you wish), that you receive source code or can get it ifyou want it, that you can change the software or use pieces of it in new free programs; and thatyou know you can do these things.

    To protect your rights, we need to make restrictions that forbid anyone to deny you theserights or to ask you to surrender the rights. These restrictions translate to certain responsibili-ties for you if you distribute copies of the software, or if you modify it.

    For example, if you distribute copies of such a program, whether gratis or for a fee, you mustgive the recipients all the rights that you have. You must make sure that they, too, receive orcan get the source code. And you must show them these terms so they know their rights.

    We protect your rights with two steps: (1) copyright the software, and (2) offer you thislicense which gives you legal permission to copy, distribute and/or modify the software.

    Also, for each author’s protection and ours, we want to make certain that everyone under-stands that there is no warranty for this free software. If the software is modified by someoneelse and passed on, we want its recipients to know that what they have is not the original, sothat any problems introduced by others will not reflect on the original authors’ reputations.

    Finally, any free program is threatened constantly by software patents. We wish to avoid thedanger that redistributors of a free program will individually obtain patent licenses, in effectmaking the program proprietary. To prevent this, we have made it clear that any patent mustbe licensed for everyone’s free use or not licensed at all.

    The precise terms and conditions for copying, distribution and modification follow.

    TERMS AND CONDITIONS FOR COPYING,DISTRIBUTION AND MODIFICATION

    0. This License applies to any program or other work which contains a notice placed bythe copyright holder saying it may be distributed under the terms of this General PublicLicense. The “Program”, below, refers to any such program or work, and a “work basedon the Program” means either the Program or any derivative work under copyright law:that is to say, a work containing the Program or a portion of it, either verbatim or withmodifications and/or translated into another language. (Hereinafter, translation is includedwithout limitation in the term “modification”.) Each licensee is addressed as “you”.

  • 8 Руководство по GNU Emacs

    Activities other than copying, distribution and modification are not covered by this License;they are outside its scope. The act of running the Program is not restricted, and the outputfrom the Program is covered only if its contents constitute a work based on the Program(independent of having been made by running the Program). Whether that is true dependson what the Program does.

    1. You may copy and distribute verbatim copies of the Program’s source code as you receiveit, in any medium, provided that you conspicuously and appropriately publish on each copyan appropriate copyright notice and disclaimer of warranty; keep intact all the notices thatrefer to this License and to the absence of any warranty; and give any other recipients ofthe Program a copy of this License along with the Program.You may charge a fee for the physical act of transferring a copy, and you may at youroption offer warranty protection in exchange for a fee.

    2. You may modify your copy or copies of the Program or any portion of it, thus forming awork based on the Program, and copy and distribute such modifications or work under theterms of Section 1 above, provided that you also meet all of these conditions:a. You must cause the modified files to carry prominent notices stating that you changed

    the files and the date of any change.b. You must cause any work that you distribute or publish, that in whole or in part

    contains or is derived from the Program or any part thereof, to be licensed as a wholeat no charge to all third parties under the terms of this License.

    c. If the modified program normally reads commands interactively when run, you mustcause it, when started running for such interactive use in the most ordinary way, toprint or display an announcement including an appropriate copyright notice and anotice that there is no warranty (or else, saying that you provide a warranty) and thatusers may redistribute the program under these conditions, and telling the user howto view a copy of this License. (Exception: if the Program itself is interactive but doesnot normally print such an announcement, your work based on the Program is notrequired to print an announcement.)

    These requirements apply to the modified work as a whole. If identifiable sections of thatwork are not derived from the Program, and can be reasonably considered independentand separate works in themselves, then this License, and its terms, do not apply to thosesections when you distribute them as separate works. But when you distribute the samesections as part of a whole which is a work based on the Program, the distribution of thewhole must be on the terms of this License, whose permissions for other licensees extendto the entire whole, and thus to each and every part regardless of who wrote it.Thus, it is not the intent of this section to claim rights or contest your rights to workwritten entirely by you; rather, the intent is to exercise the right to control the distributionof derivative or collective works based on the Program.In addition, mere aggregation of another work not based on the Program with the Program(or with a work based on the Program) on a volume of a storage or distribution mediumdoes not bring the other work under the scope of this License.

    3. You may copy and distribute the Program (or a work based on it, under Section 2) inobject code or executable form under the terms of Sections 1 and 2 above provided thatyou also do one of the following:a. Accompany it with the complete corresponding machine-readable source code, which

    must be distributed under the terms of Sections 1 and 2 above on a medium custom-arily used for software interchange; or,

    b. Accompany it with a written offer, valid for at least three years, to give any thirdparty, for a charge no more than your cost of physically performing source distribution,a complete machine-readable copy of the corresponding source code, to be distributed

  • GNU GENERAL PUBLIC LICENSE 9

    under the terms of Sections 1 and 2 above on a medium customarily used for softwareinterchange; or,

    c. Accompany it with the information you received as to the offer to distribute corre-sponding source code. (This alternative is allowed only for noncommercial distributionand only if you received the program in object code or executable form with such anoffer, in accord with Subsection b above.)

    The source code for a work means the preferred form of the work for making modificationsto it. For an executable work, complete source code means all the source code for allmodules it contains, plus any associated interface definition files, plus the scripts used tocontrol compilation and installation of the executable. However, as a special exception, thesource code distributed need not include anything that is normally distributed (in eithersource or binary form) with the major components (compiler, kernel, and so on) of theoperating system on which the executable runs, unless that component itself accompaniesthe executable.If distribution of executable or object code is made by offering access to copy from adesignated place, then offering equivalent access to copy the source code from the sameplace counts as distribution of the source code, even though third parties are not compelledto copy the source along with the object code.

    4. You may not copy, modify, sublicense, or distribute the Program except as expressly pro-vided under this License. Any attempt otherwise to copy, modify, sublicense or distributethe Program is void, and will automatically terminate your rights under this License. How-ever, parties who have received copies, or rights, from you under this License will not havetheir licenses terminated so long as such parties remain in full compliance.

    5. You are not required to accept this License, since you have not signed it. However, nothingelse grants you permission to modify or distribute the Program or its derivative works.These actions are prohibited by law if you do not accept this License. Therefore, bymodifying or distributing the Program (or any work based on the Program), you indicateyour acceptance of this License to do so, and all its terms and conditions for copying,distributing or modifying the Program or works based on it.

    6. Each time you redistribute the Program (or any work based on the Program), the recipientautomatically receives a license from the original licensor to copy, distribute or modifythe Program subject to these terms and conditions. You may not impose any furtherrestrictions on the recipients’ exercise of the rights granted herein. You are not responsiblefor enforcing compliance by third parties to this License.

    7. If, as a consequence of a court judgment or allegation of patent infringement or for anyother reason (not limited to patent issues), conditions are imposed on you (whether bycourt order, agreement or otherwise) that contradict the conditions of this License, they donot excuse you from the conditions of this License. If you cannot distribute so as to satisfysimultaneously your obligations under this License and any other pertinent obligations,then as a consequence you may not distribute the Program at all. For example, if a patentlicense would not permit royalty-free redistribution of the Program by all those who receivecopies directly or indirectly through you, then the only way you could satisfy both it andthis License would be to refrain entirely from distribution of the Program.If any portion of this section is held invalid or unenforceable under any particular circum-stance, the balance of the section is intended to apply and the section as a whole is intendedto apply in other circumstances.It is not the purpose of this section to induce you to infringe any patents or other propertyright claims or to contest validity of any such claims; this section has the sole purpose ofprotecting the integrity of the free software distribution system, which is implemented bypublic license practices. Many people have made generous contributions to the wide rangeof software distributed through that system in reliance on consistent application of that

  • 10 Руководство по GNU Emacs

    system; it is up to the author/donor to decide if he or she is willing to distribute softwarethrough any other system and a licensee cannot impose that choice.This section is intended to make thoroughly clear what is believed to be a consequence ofthe rest of this License.

    8. If the distribution and/or use of the Program is restricted in certain countries either bypatents or by copyrighted interfaces, the original copyright holder who places the Programunder this License may add an explicit geographical distribution limitation excluding thosecountries, so that distribution is permitted only in or among countries not thus excluded.In such case, this License incorporates the limitation as if written in the body of thisLicense.

    9. The Free Software Foundation may publish revised and/or new versions of the GeneralPublic License from time to time. Such new versions will be similar in spirit to the presentversion, but may differ in detail to address new problems or concerns.Each version is given a distinguishing version number. If the Program specifies a versionnumber of this License which applies to it and “any later version”, you have the option offollowing the terms and conditions either of that version or of any later version publishedby the Free Software Foundation. If the Program does not specify a version number of thisLicense, you may choose any version ever published by the Free Software Foundation.

    10. If you wish to incorporate parts of the Program into other free programs whose distributionconditions are different, write to the author to ask for permission. For software whichis copyrighted by the Free Software Foundation, write to the Free Software Foundation;we sometimes make exceptions for this. Our decision will be guided by the two goals ofpreserving the free status of all derivatives of our free software and of promoting the sharingand reuse of software generally.

    NO WARRANTY

    11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WAR-RANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLELAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHTHOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM “AS IS” WITH-OUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITYAND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THEQUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THEPROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARYSERVICING, REPAIR OR CORRECTION.

    12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO INWRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAYMODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BELIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCI-DENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR IN-ABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSSOF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINEDBY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATEWITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTYHAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

    END OF TERMS AND CONDITIONS

  • GNU GENERAL PUBLIC LICENSE 11

    How to Apply These Terms to Your New Programs

    If you develop a new program, and you want it to be of the greatest possible use to thepublic, the best way to achieve this is to make it free software which everyone can redistributeand change under these terms.

    To do so, attach the following notices to the program. It is safest to attach them to the startof each source file to most effectively convey the exclusion of warranty; and each file shouldhave at least the “copyright” line and a pointer to where the full notice is found.

    one line to give the program’s name and an idea of what it does.Copyright (C) 19yy name of author

    This program is free software; you can redistribute it and/ormodify it under the terms of the GNU General Public Licenseas published by the Free Software Foundation; either version 2of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See theGNU General Public License for more details.

    You should have received a copy of the GNU General Public License alongwith this program; if not, write to the Free Software Foundation, Inc.,59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.

    Also add information on how to contact you by electronic and paper mail.If the program is interactive, make it output a short notice like this when it starts in an

    interactive mode:Gnomovision version 69, Copyright (C) 19yy name of authorGnomovision comes with ABSOLUTELY NO WARRANTY; for detailstype ‘show w’. This is free software, and you are welcometo redistribute it under certain conditions; type ‘show c’for details.

    The hypothetical commands ‘show w’ and ‘show c’ should show the appropriate parts of theGeneral Public License. Of course, the commands you use may be called something other than‘show w’ and ‘show c’; they could even be mouse-clicks or menu items—whatever suits yourprogram.

    You should also get your employer (if you work as a programmer) or your school, if any, tosign a “copyright disclaimer” for the program, if necessary. Here is a sample; alter the names:

    Yoyodyne, Inc., hereby disclaims all copyrightinterest in the program ‘Gnomovision’(which makes passes at compilers) writtenby James Hacker.

    signature of Ty Coon, 1 April 1989Ty Coon, President of Vice

    This General Public License does not permit incorporating your program into proprietaryprograms. If your program is a subroutine library, you may consider it more useful to permitlinking proprietary applications with the library. If this is what you want to do, use the GNULibrary General Public License instead of this License.

  • 12 Руководство по GNU Emacs

  • УНИВЕРСАЛЬНАЯ ОБЩЕСТВЕННАЯ ЛИЦЕНЗИЯ GNU 13

    УНИВЕРСАЛЬНАЯ ОБЩЕСТВЕННАЯЛИЦЕНЗИЯ GNU

    Версия 2, июнь 1991Copyright c© 1989, 1991 Free Software Foundation, Inc.59 Temple Place, Suite 330, Boston, MA 02111-1307 USAc© Перевод. О.В. Кузина, В.М. Юфа, 1993c© Перевод. О.С. Тихонов, 1998

    Этот документ можно копировать, а также распространять егодословные копии, однако вносить в него изменения запрещено.

    Преамбула

    Лицензии на большую часть программного обеспечения (ПО) составлены так, чтобылишить вас свободы совместно использовать и изменять его. В противоположность этому,предназначение Универсальной Общественной Лицензии GNU состоит в том, чтобы гаран-тировать вашу свободу совместно использовать и изменять свободное ПО, т.е. обеспечитьсвободу ПО для всех его пользователей. Данная Универсальная Общественная Лицензияприменима к большей части ПО Фонда Свободного ПО и ко всем другим программам, чьиавторы принимают на себя обязательство ее использовать. (Для некоторых программ Фон-да Свободного ПО вместо нее применяется Универсальная Общественная Лицензия GNUдля библиотек.) Вы тоже можете применить ее к своим программам.Когда мы говорим о свободном ПО, мы имеем в виду свободу, а не бесплатность. Наши

    Универсальные Общественные Лицензии разрабатывались для того, чтобы гарантировать,что вы пользуетесь свободой распространять копии свободного ПО (и при желании полу-чать за это вознаграждение); что вы получаете исходный код или можете получить его,если захотите; что вы можете изменять ПО или использовать его части в новых свободныхпрограммах; и что вы знаете обо всех этих правах.Чтобы защитить ваши права, нам нужно ввести некоторые ограничения, которые запре-

    тят кому бы то ни было отказывать вам в этих правах или потребовать от вас отказаться

    от этих прав. Эти ограничения накладывают на вас некоторые обязательства, если выраспространяете копии ПО или изменяете его.Например, если вы распространяете копии такой программы бесплатно или за воз-

    награждение, вы должны предоставить получателям все права, которыми обладаете высами. Вы должны гарантировать, что они тоже получат или смогут получить исходныйкод. Наконец, вы должны показать им текст данных условий, чтобы они знали о своихправах.Мы защищаем ваши права в два этапа: (1) сохраняем авторские права на ПО и (2) пред-

    лагаем вам эту лицензию, которая дает вам законное право копировать, распространятьи/или модифицировать ПО.Кроме того, в целях защиты как каждого автора, так и нас, мы хотим удостовериться,

    что каждый понимает, что гарантий на это свободное ПО нет. Если ПО модифицируется ипередается кем-то еще, мы хотим, чтобы получатели ПО знали, что то, что у них есть, —это не оригинал, чтобы любые проблемы, созданные другими, не отразились на репутациипервоначальных авторов.И наконец, каждой свободной программе постоянно угрожают патенты на ПО. Мы

    хотим избежать той опасности, что повторные распространители свободной программысамостоятельно получат патенты, делая программу таким образом частной собственно-стью. Чтобы предотвратить это, мы со всей определенностью заявляем, что любой патентдолжен быть либо предоставлен всем для свободного использования, либо не предоставленникому.

  • 14 Руководство по GNU Emacs

    Ниже следуют точные определения и условия для копирования, распространения и мо-дификации.

    ОПРЕДЕЛЕНИЯ И УСЛОВИЯ ДЛЯ КОПИРОВАНИЯ,РАСПРОСТРАНЕНИЯ И МОДИФИКАЦИИ

    0. Эта Лицензия применима к любой программе или другому произведению, содержаще-му уведомление, помещенное держателем авторских прав и сообщающее о том, чтооно может распространяться при условиях, оговоренных в данной Универсальной Об-щественной Лицензии. В дальнейшем термин “Программа” относится к любой та-кой программе или произведению, а термин “произведение, основанное на Программе”означает Программу или любое произведение, содержащее Программу или ее часть,дословную, или модифицированную, и/или переведенную на другой язык. (Здесь идалее перевод включается без ограничений в понятие “модификация”.) Каждый обла-датель лицензии адресуется как “вы”.Виды деятельности, не являющиеся копированием, распространением или модифика-цией, не охватываются данной Лицензией; они лежат за пределами ее влияния. Ис-пользование Программы по ее функциональному назначению не ограничено, а выход-ные данные Программы охватываются этой Лицензией, только если их содержаниеявляется произведением, основанным на Программе (вне зависимости от того, былили они получены в процессе использования Программы). Являются ли они таковыми,зависит от того, что именно делает Программа.

    1. Вы можете копировать и распространять дословные копии исходного кода Программыпо его получении на любом носителе, при условии что вы соответствующим обра-зом помещаете на видном месте в каждой копии соответствующее уведомление об

    авторских правах и отказ от предоставления гарантий; оставляете нетронутыми всеуведомления, относящиеся к данной Лицензии и к отсутствию каких-либо гарантий;и передаете всем другим получателям Программы копию данной Лицензии вместе с

    Программой.Вы можете назначить плату за физический акт передачи копии и можете по своему

    усмотрению предоставлять гарантии за вознаграждение.2. Вы можете изменять свою копию или копии Программы или любой ее части, создаваятаким образом произведение, основанное на Программе, и копировать и распростра-нять эти модификации или произведение в соответствии с Разделом 1, приведеннымвыше, при условии, что вы выполните все нижеследующие условия:a. Вы обязаны снабдить модифицированные файлы заметными уведомлениями, со-держащими указания на то, что вы изменили файлы, и дату каждого изменения.

    b. Вы обязаны предоставить всем третьим лицам лицензию на бесплатное использо-вание каждого произведения, которое вы распространяете или публикуете, цели-ком, и которое полностью или частично содержит Программу или какую-либо еечасть, на условиях, оговоренных в данной Лицензии.

    c. Если модифицированная программа обычно читает команды в интерактивном ре-жиме работы, вы должны сделать так, чтобы при запуске для работы в такоминтерактивном режиме обычным для нее способом она печатала или выводила на

    экран объявление, содержащее соответствующее уведомление об авторских правахи уведомление о том, что гарантий нет (или, наоборот, сообщающее о том, что выобеспечиваете гарантии), и что пользователи могут повторно распространять про-грамму при этих условиях, и указывающее пользователю, как просмотреть копиюданной Лицензии. (Исключение: если сама Программа работает в интерактив-ном режиме, но обычно не выводит подобных сообщений, то ваше произведение,основанное на Программе, не обязано выводить объявление.)

  • УНИВЕРСАЛЬНАЯ ОБЩЕСТВЕННАЯ ЛИЦЕНЗИЯ GNU 15

    Эти требования применяются к модифицированному произведению в целом. Если из-вестные части этого произведения не были основаны на Программе и могут обоснован-но считаться независимыми и самостоятельными произведениями, то эта Лицензия иее условия не распространяются на эти части, если вы распространяете их как отдель-ные произведения. Но если вы распространяете эти части как часть целого произведе-ния, основанного на Программе, то вы обязаны делать это в соответствии с условиямиданной Лицензии, распространяя права получателей лицензии на все произведение и,таким образом, на каждую часть, вне зависимости от того, кто ее написал.Таким образом, содержание этого раздела не имеет цели претендовать на ваши правана произведение, написанное полностью вами, или оспаривать их; цель скорее в том,чтобы реализовать право управлять распространением производных или коллектив-ных произведений, основанных на Программе.Кроме того, простое нахождение другого произведения, не основанного на этой Про-грамме, совместно с Программой (или с произведением, основанным на этой Програм-ме) на одном носителе для постоянного хранения или распространяемом носителе нераспространяет действие этой Лицензии на другое произведение.

    3. Вы можете копировать и распространять Программу (или произведение, основанноена ней) согласно Разделу 2) в объектном коде или в выполнимом виде в соответствиис Разделами 1 и 2, приведенными выше, при условии, что вы также выполните одноиз следующих требований:a. Сопроводите ее полным соответствующим машиночитаемым исходным кодом, ко-торый должен распространяться в соответствии с Разделами 1 и 2, приведеннымивыше, на носителе, который обычно используется для обмена ПО; или,

    b. Сопроводите ее письменным предложением, действительным по крайней мере втечение трех лет, предоставить любому третьему лицу за вознаграждение, не пре-вышающее стоимость физического акта изготовления копии, полную машиночи-таемую копию соответствующего исходного кода, подлежащую распространениюв соответствии с Разделами 1 и 2, приведенными выше; или

    c. Сопроводите ее информацией, полученной вами в качестве предложения распро-странить соответствующий исходный код. (Эта возможность допустима толькодля некоммерческого распространения, и только если вы получили программу вобъектном коде или в исполняемом виде с предложением в соответствии с Пунктом

    b) выше.)

    Исходный код для произведения означает его вид, предпочтительный для выполненияв нем модификаций. Для исполняемого произведения полный исходный код означа-ет все исходные коды для всех модулей, которые он содержит, плюс любые связан-ные с произведением файлы определения интерфейса, плюс сценарии, используемыедля управления компиляцией и установкой исполняемого произведения. Однако, в ви-де особого исключения распространяемый исходный код не обязан включать то, чтообычно предоставляется (как в объектных, так и в исходных кодах) с основными ком-понентами (компилятор, ядро и так далее) операционной системы, под управлениемкоторой работает исполняемое произведение, за исключением случая, когда сам ком-понент сопровождает исполняемое произведение.Если распространение исполняемого произведения или объектного кода происходит

    путем предоставления доступа для копирования с обозначенного места, то предостав-ление доступа для копирования исходного кода с того же места считается распро-странением исходного кода, даже если третьи лица не принуждаются к копированиюисходного кода вместе с объектным кодом.

    4. Вы не можете копировать, изменять, повторно лицензировать, или распространятьПрограмму никаким иным способом, кроме явно предусмотренных данной Лицензи-ей. Любая попытка копировать, изменять или распространять Программу каким-либо

  • 16 Руководство по GNU Emacs

    другим способом или с измененной лицензией неправомерна и автоматически прекра-щает ваши права, данные вам этой Лицензией. Однако лицензии лиц, получившихот вас копии или права согласно данной Универсальной Общественной Лицензии, непрекращают своего действия, если эти лица полностью соблюдают условия.

    5. Вы не обязаны соглашаться с этой Лицензией, так как вы не подписывали ее. Одна-ко, ничто, кроме этой Лицензии, не дает вам право изменять или распространять этуПрограмму или основанные на ней произведения. Эти действия запрещены законом,если вы не принимаете к соблюдению эту Лицензию. А значит, изменяя или распро-страняя Программу (или произведение, основанное на Программе), вы изъявляете своесогласие с этой Лицензией и всеми ее условиями о копировании, распространении илимодификации Программы или основанных на ней произведений.

    6. Каждый раз, когда вы повторно распространяете Программу (или любое произведе-ние, основанное на Программе), получатель этого произведения автоматически полу-чает от первоначального выдавшего лицензию лица свою лицензию на копирование,распространение или модификацию Программы, обсуждаемую в этих определениях иусловиях. Вы не можете налагать каких-либо дополнительных ограничений на осу-ществление получателем прав, предоставленных данным документом. Вы не несетеответственности за соблюдение третьими лицами условий этой Лицензии.

    7. Если в результате судебного разбирательства, или обвинения в нарушении патентаили по любой другой причине (не обязательно связанной с патентами), вам навязаныусловия, противоречащие данной Лицензии (по постановлению суда, по соглашениюили иным способом), это не освобождает вас от соблюдения Лицензии. Если вы неможете заниматься распространением так, чтобы одновременно удовлетворить требо-ваниям и этой Лицензии, и всем другим требованиям, то вы не должны заниматьсяраспространением Программы. Например, если патент не позволяет безвозмездное по-вторное распространение Программы всем, кто получил копии от вас непосредственноили через посредников, то единственным способом удовлетворить и патенту, и этойЛицензии будет ваш полный отказ от распространения Программы.Если какая-либо часть этого раздела не имеет силы или не может быть исполнена принекоторых конкретных обстоятельствах, то подразумевается, что имеет силу осталь-ная часть раздела, а при других обстоятельствах имеет силу весь Раздел.Цель этого раздела — не побудить вас делать заявления о нарушениях прав на патент,или заявлять о других претензиях на право собственности или оспаривать правиль-ность подобных претензий; единственная цель этого раздела — защита целостностисистемы распространения свободного ПО, которая реализуется использованием обще-ственных лицензий. Многие люди внесли щедрый вклад в широкий спектр ПО, рас-пространяемого по этой системе, полагаясь на ее согласованное применение; толькоавтору принадлежит право решать, хочет ли он или она распространять ПО в этойсистеме или в какой-то другой, и получатель лицензии не может влиять на принятиеэтого решения.Этот раздел предназначен для того, чтобы тщательно прояснить, что полагается след-ствием из остальной части данной Лицензии.

    8. Если распространение и/или применение Программы ограничено в ряде стран либопатентами, либо авторскими правами на интерфейсы, первоначальный обладательавторских прав, выпускающий Программу с этой Лицензией, может добавить явноеограничение на географическое распространение, исключив такие страны, так чтораспространение разрешается только в тех странах, которые не были исключены. Вэтом случае данная Лицензия включает в себя это ограничение, как если бы оно былонаписано в тексте данной Лицензии.

    9. Фонд Свободного ПО может время от времени публиковать пересмотренные и/илиновые версии Универсальной Общественной Лицензии. Такие новые версии будут

  • УНИВЕРСАЛЬНАЯ ОБЩЕСТВЕННАЯ ЛИЦЕНЗИЯ GNU 17

    сходны по духу с настоящей версией, но могут отличаться в деталях, направленныхна новые проблемы или обстоятельства.Каждой версии придается отличительный номер. Если в Программе указывается,что к ней относится некоторый номер версии данной Лицензии и “любая последующаяверсия”, вы можете по выбору следовать определениям и условиям либо данной вер-сии, либо любой последующей версии, опубликованной Фондом Свободного ПО. Еслив Программе не указан номер версии данной Лицензии, вы можете выбрать любуюверсию, когда-либо опубликованную Фондом Свободного ПО.

    10. Если вы хотите встроить части Программы в другие свободные программы с ины-ми условиями распространения, напишите автору с просьбой о разрешении. Для ПО,которое охраняется авторскими правами Фонда Свободного ПО, напишите в ФондСвободного ПО; мы иногда делаем такие исключения. Наше решение будет руковод-ствоваться двумя целями: сохранения свободного статуса всех производных нашегосвободного ПО и содействия совместному и повторному использованию ПО вообще.

    НИКАКИХ ГАРАНТИЙ

    11. ПОСКОЛЬКУ ПРОГРАММА ПРЕДОСТАВЛЯЕТСЯ БЕСПЛАТНО, НА ПРОГРАМ-МУ НЕТ ГАРАНТИЙ В ТОЙ МЕРЕ, КАКАЯ ДОПУСТИМА ПРИМЕНИМЫМ ЗА-КОНОМ. ЗА ИСКЛЮЧЕНИЕМ ТЕХ СЛУЧАЕВ, КОГДА ОБРАТНОЕ ЗАЯВЛЕ-НО В ПИСЬМЕННОЙ ФОРМЕ, ДЕРЖАТЕЛИ АВТОРСКИХ ПРАВ И/ИЛИ ДРУ-ГИЕ СТОРОНЫ ПОСТАВЛЯЮТ ПРОГРАММУ "КАК ОНА ЕСТЬ" БЕЗ КАКОГО-ЛИБО ВИДА ГАРАНТИЙ, ВЫРАЖЕННЫХ ЯВНО ИЛИ ПОДРАЗУМЕВАЕМЫХ,ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ ИМИ, ПОДРАЗУМЕВАЕМЫЕ ГАРАН-ТИИ КОММЕРЧЕСКОЙ ЦЕННОСТИ И ПРИГОДНОСТИ ДЛЯ КОНКРЕТНОЙ ЦЕ-ЛИ. ВЕСЬ РИСК В ОТНОШЕНИИ КАЧЕСТВА И ПРОИЗВОДИТЕЛЬНОСТИ ПРО-ГРАММЫ ОСТАЕТСЯ ПРИ ВАС. ЕСЛИ ПРОГРАММА ОКАЖЕТСЯ ДЕФЕКТ-НОЙ, ВЫ ПРИНИМАЕТЕ НА СЕБЯ СТОИМОСТЬ ВСЕГО НЕОБХОДИМОГО ОБ-СЛУЖИВАНИЯ, ВОССТАНОВЛЕНИЯ ИЛИ ИСПРАВЛЕНИЯ.

    12. НИ В КОЕМ СЛУЧАЕ, ЕСЛИ НЕ ТРЕБУЕТСЯ СООТВЕТСТВУЮЩИМ ЗАКО-НОМ, ИЛИ НЕ УСЛОВЛЕНО В ПИСЬМЕННОЙ ФОРМЕ, НИ ОДИН ДЕРЖАТЕЛЬАВТОРСКИХ ПРАВ И НИ ОДНО ДРУГОЕ ЛИЦО, КОТОРОЕ МОЖЕТ ИЗМЕНЯТЬИ/ИЛИ ПОВТОРНО РАСПРОСТРАНЯТЬ ПРОГРАММУ, КАК БЫЛО РАЗРЕШЕ-НО ВЫШЕ, НЕ ОТВЕТСТВЕННЫ ПЕРЕД ВАМИ ЗА УБЫТКИ, ВКЛЮЧАЯ ЛЮ-БЫЕ ОБЩИЕ, СПЕЦИАЛЬНЫЕ, СЛУЧАЙНЫЕ ИЛИ ПОСЛЕДОВАВШИЕ УБЫТ-КИ, ПРОИСТЕКАЮЩИЕ ИЗ ИСПОЛЬЗОВАНИЯ ИЛИ НЕВОЗМОЖНОСТИ ИС-ПОЛЬЗОВАНИЯ ПРОГРАММЫ (ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ ПОТЕ-РЕЙ ДАННЫХ, ИЛИ ДАННЫМИ, СТАВШИМИ НЕПРАВИЛЬНЫМИ, ИЛИ ПОТЕ-РЯМИ, ПОНЕСЕННЫМИ ИЗ-ЗА ВАС ИЛИ ТРЕТЬИХ ЛИЦ, ИЛИ ОТКАЗОМ ПРО-ГРАММЫ РАБОТАТЬ СОВМЕСТНО С ЛЮБЫМИ ДРУГИМИ ПРОГРАММАМИ),ДАЖЕ ЕСЛИ ТАКОЙ ДЕРЖАТЕЛЬ ИЛИ ДРУГОЕ ЛИЦО БЫЛИ ИЗВЕЩЕНЫ О

    ВОЗМОЖНОСТИ ТАКИХ УБЫТКОВ.

    КОНЕЦ ОПРЕДЕЛЕНИЙ И УСЛОВИЙ

  • 18 Руководство по GNU Emacs

    Как применять эти условия к вашим новым программам

    Если вы разрабатываете новую программу и хотите, чтобы она принесла максимальновозможную пользу обществу, лучший способ достичь этого — включить ее в свободное ПО,которое каждый может повторно распространять и изменять согласно данным условиям.Чтобы сделать это, добавьте в программу следующие уведомления. Надежнее всего

    будет добавить их в начало каждого исходного файла, чтобы наиболее эффективно пе-редать сообщение об отсутствии гарантий; каждый файл должен содержать по меньшеймере строку, содержащую знак охраны авторского права и указание на то, где находитсяполное уведомление.

    ODNA STROKA, SODERVA]AQ NAZWANIE PROGRAMMY I KRATKOEOPISANIE TOGO, ^TO ONA DELAET.(C) NAIMENOWANIE (IMQ) AWTORA 19GG

    |TO SWOBODNAQ PROGRAMMA; WY MOVETE POWTORNO RASPROSTRANQTX EE I/ILIMODIFICIROWATX EE W SOOTWETSTWII S uNIWERSALXNOJ oB]ESTWENNOJlICENZIEJ GNU, OPUBLIKOWANNOJ fONDOM sWOBODNOGO po; LIBO WERSII 2,LIBO (PO WA[EMU WYBORU) L@BOJ BOLEE POZDNEJ WERSII.

    |TA PROGRAMMA RASPROSTRANQETSQ W NADEVDE, ^TO ONA BUDET POLEZNOJ,NO bez kakih-libo garantij; DAVE BEZ PODRAZUMEWAEMYH GARANTIJkommer~eskoj cennosti ILI prigodnosti dlq konkretnoj celi. dLQPOLU^ENIQ PODROBNYH SWEDENIJ SMOTRITE uNIWERSALXNU@ oB]ESTWENNU@lICENZI@ GNU.

    wY DOLVNY BYLI POLU^ITX KOPI@ uNIWERSALXNOJ oB]ESTWENNOJ lICENZIIGNU WMESTE S \TOJ PROGRAMMOJ; ESLI NET, NAPI[ITE PO ADRESU: FreeSoftware Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA02111-1307 USA

    Добавьте также сведения о том, как связаться с вами по электронной и обычной почте.Если программа интерактивная, сделайте так, чтобы при запуске в интерактивном

    режиме она выдавала краткое уведомление вроде следующего:

    gNOMOWIZOR, WERSIQ 69, (C) IMQ AWTORA 19GGgNOMOWIZOR POSTAWLQETSQ absol‘tno bez kakih-libo garantij;DLQ POLU^ENIQ PODROBNOSTEJ NAPE^ATAJTE ’show w’. |TO SWOBODNAQPROGRAMMA, I WY PRIGLA[AETESX POWTORNO RASPROSTRANQTX EE PRIOPREDELENNYH USLOWIQH; DLQ POLU^ENIQ PODROBNOSTEJ WWEDITE ’show c’.

    Гипотетические команды ‘show w’ и ‘show c’ должны показывать соответствующие ча-сти Универсальной Общественной Лицензии. Конечно, используемые вами команды могутназываться как-нибудь иначе, нежели ‘show w’ и ‘show c’; они даже могут выбираться спомощью мыши или быть пунктами меню — как больше подходит для вашей программы.Вы также должны добиться того, чтобы ваш работодатель (если вы работаете програм-

    мистом) или ваше учебное заведение, если таковое имеется, подписали в случае необходи-мости “отказ от имущественных прав” на эту программу. Вот образец; замените фамилии:

    kOMPANIQ bRATXQ >

  • УНИВЕРСАЛЬНАЯ ОБЩЕСТВЕННАЯ ЛИЦЕНЗИЯ GNU 19

    Данная Универсальная Общественная Лицензия не позволяет вам включать вашу про-грамму в программы, являющиеся частной собственностью. Если ваша программа — этобиблиотека процедур, вам стоит подумать, не будет ли лучше разрешить программам, яв-ляющимся частной собственностью, связываться с вашей библиотекой. Если это то, чеговы хотите, используйте вместо этой Лицензии Универсальную Общественную ЛицензиюGNU для библиотек.

  • 20 Руководство по GNU Emacs

  • Введение 21

    Введение

    Вы читаете о GNU Emacs, GNU-инкарнации развитого, самодокументированного, на-страиваемого, расширяемого экранного редактора реального времени Emacs. (‘G’ в ‘GNU’читается.)Мы говорим, что Emacs — это \KRANNYJ редактор, так как редактируемый текст обыч-

    но виден на экране и автоматически обновляется, когда вы вводите команды. См. Глава 1[Экран], с. 23.Мы называем его редактором реального времени, так как экран обновляется очень ча-

    сто, обычно после каждого набранного вами знака или пары знаков. Это уменьшает коли-чество информации, которую вы должны удерживать в памяти, когда редактируете. См.Глава 4 [Основы редактирования], с. 35.Мы называем Emacs развитым, так как он предоставляет средства, которые дают нечто

    большее, чем простая вставка или удаление: управление подпроцессами, автоматическоесоздание отступов в программах, просмотр двух или более файлов сразу, редактирова-ние форматированного текста и действия в терминах символов, слов, строк, предложений,абзацев и страниц, а также выражений и комментариев в нескольких разных языках про-граммирования.

    sAMODOKUMENTIROWANNOSTX означает, что в любое время вы можете набрать специаль-ный символ, Control-h, чтобы узнать, что вы можете сделать. Вы также можете исполь-зовать его, чтобы выяснить, что делает произвольная команда, или найти все команды,имеющие отношение к какой-либо теме. См. Глава 7 [Справка], с. 55.

    nASTRAIWAEMOSTX означает, что вы можете легко изменить определения команд Emacs.Например, если вы используете язык программирования, в котором комментарии начина-ются с ‘’, вы можете велеть командам Emacs для работы с ком-ментариями использовать именно такие строки (см. Раздел 22.7 [Комментарии], с. 219).Другой вид настройки — это перерасположение установленных команд. Например, если выпредпочитаете, чтобы четыре основные команды движения курсора (вверх, вниз, вправо,влево) находились на клавишах, расположенных крестообразно на клавиатуре, вы можетеперепривязать эти клавиши. См. Глава 31 [Настройка], с. 341.

    rAS[IRQEMOSTX означает, что вы можете пойти дальше простой настройки и написатьсовершенно новые команды, программы на языке Лисп, предназначенные для запуска всобственном Лисп-интерпретаторе Emacs. Emacs является “интерактивно расширяемой”системой, что значит, что он делится на много функций, которые вызывают друг дру-га; каждая из них может быть переопределена во время сеанса редактирования. Почтилюбая часть Emacs может быть заменена без копирования всего Emacs. Большинствокоманд редактирования Emacs уже написаны на Лиспе; несколько исключений могли быбыть написаны на Лиспе, но написаны на Си для эффективности. Хотя только програм-мист может написать расширение, любой может использовать его после. Если вы хотитенаучиться программированию на Emacs Lisp, мы рекомендуем вам книгу Introduction toEmacs Lisp, написанную Робертом Дж. Часселом, также опубликованную Фондом Свобод-ного Программного Обеспечения.Когда Emacs запущен под системой X Windows, он предоставляет собственные меню и

    удобные привязки для кнопок мыши. Но Emacs может дать многие преимущества оконнойсистемы и на текстовом терминале. Например, вы можете видеть одновременно несколь-ко файлов, перемещать текст между файлами и редактировать во время работы командоболочки.

  • 22 Руководство по GNU Emacs

  • Глава 1: Организация экрана 23

    1 Организация экрана

    На текстовом терминале Emacs занимает весь экран. В системе X Windows Emacsсоздает для себя свои X-окна. Мы используем термин FREJM для обозначения всего тек-стового экрана или всего X-окна, используемого Emacs. Оба вида фреймов используютсяв Emacs одинаково для отображения вашего текста. Обычно Emacs запускается толькос одним фреймом, но при желании вы можете создать дополнительные. См. Глава 17[Фреймы], с. 147.Когда вы запускаете Emacs, весь фрейм, за исключением первой и последней строки,

    отводится для редактируемого текста. Эта область называется OKNOM. Первая строканазывается POLOSKOJ MEN@, а последняя — это особая \HO-OBLASTX или OKNO MINIBUFERA,где появляются запросы, и куда вы можете ввести ответы. Дальнейшие сведения об этихспециальных строках смотрите ниже.Текстовое окно может быть поделено по горизонтали или вертикали на несколько дру-

    гих окон, каждое из которых может быть использовано для отдельного файла (см. Глава 16[Окна], с. 141). В данном руководстве слово “окно” всегда обозначает часть фрейма внутриEmacs.То окно, в котором находится курсор, называется WYBRANNYM OKNOM; в нем идет редак-

    тирование. Большинство команд Emacs неявно относятся в тексту в выбранном окне (хотякоманды мыши как правило действуют в том окне, в котором вы щелкнули, вне зависи-мости от того, выбрано оно или нет). Остальные окна существуют просто для справки,пока вы не выберете одно из них. Если вы используете несколько фреймов в системе XWindows, то передача фокуса ввода некоторому фрейму выбирает окно в этом фрейме.Последняя строка каждого текстового окна называется STROKOJ REVIMA, которая опи-

    сывает происходящее в этом окне. Она выводится в инверсном виде, если терминалподдерживает это, и содержит текст, который начинается при старте Emacs со строки‘-:- *scratch*’. Строка режима показывает сведения о текущем состоянии, например,какой буфер показан в окне над ней, какие основные и второстепенные режимы в немиспользуются, и содержит ли этот буфер несохраненные изменения.

    1.1 Точка

    Курсор терминала внутри Emacs показывает позицию, в которой будет выполнятьсякоманда редактирования. Это позиция именуется TO^KOJ. Многие команды Emacs переме-щают точку по тексту, так что вы имеете возможность редактировать в любом месте. Вытакже можете установить точку, щелкнув первой кнопкой мыши.Когда курсор указывает NA знак, то следует думать, что точка находится MEVDU двумя

    знаками; она расположена PERED знаком, над которым появляется курсор. Например, есливаш текст выглядит как ‘frob’, а курсор находится над ‘b’, то точка расположена между‘o’ и ‘b’. Если вы вставите в этой позиции знак ‘!’, то получите ‘fro!b’, с точкой между‘!’ и ‘b’. Таким образом, курсор останется над ‘b’, как и раньше.Иногда говорят “курсор”, имея в виду точку, или говорят о командах движения точки

    как о командах “движения курсора”.Терминалы имеют только один курсор, и когда происходит процесс вывода, курсор

    должен находиться там, где идет набор. Это не означает, что точка перемещается. Этозначит лишь то, что Emacs может показать вам позицию точки, только когда терминал неработает.Если вы редактируете в Emacs несколько файлов, каждый в своем буфере, то всякий

    буфер имеет свою собственную позицию точки. Буфер, который не показывается в данноевремя, запоминает, где находится точка, на случай, если вы снова выведете его на экран.

  • 24 Руководство по GNU Emacs

    Когда фрейм разбит на несколько окон, каждое из них имеет свою собственную позициюточки. Курсор же показывает позицию точки в выбранном окне. Этим способом вы такжеможете узнать, которое из окон выбрано. Если один и тот же буфер появляется более чемв одном окне, то каждое из них имеет свою позицию точки.Если есть несколько фреймов, каждый из них может отобразить один курсор. Курсор

    в выбранном фрейме заполнен цветом; курсор в других фреймах — это пустая клетка,которая появляется в том окне, которое было бы выбранным, если бы вы передали фокусввода этому фрейму.Термин ‘точка’ происходит от названия знака ‘.’, который был командой TECO (язык,

    на котором был написан первоначальный Emacs) для получения значения величины, назы-ваемой теперь ‘точкой’.

    1.2 Эхо-область

    Строка внизу фрейма (под строкой режима) называется \HO-OBLASTX@. Она использует-ся для показа небольших фрагментов текста в нескольких целях.

    |HO обозначает отображение набираемых вами знаков. Вне Emacs, операционная систе-ма обычно отображает весь ваш ввод. Emacs управляет эхо иначе.

    Emacs никогда не повторяет команды, состоящие из одиночного знака, а команды, со-стоящие из нескольких, повторяются, только если вы останавливаетесь в процессе их набо-ра. Как только вы останавливаетесь более чем на секунду в середине команды, все знакиэтой команды сразу же отображаются. Это служит PODSKAZKOJ для окончания команды.Как только включается эхо, окончание команды отображается немедленно в процессе на-бора. Такое поведение предназначено для того, чтобы уверенный пользователь получалбыстрый результат, в то же время это позволяет неуверенным пользователям получитьмаксимум обратной связи. Вы можете изменить это поведение, установив особую перемен-ную (см. Раздел 11.7 [Переменные изображения], с. 84).Если команда не может быть выполнена, она в печатает эхо-области SOOB]ENIE OB

    O[IBKE. Сообщение об ошибке сопровождается звуковым сигналом или миганием экрана.Кроме того, когда произошла ошибка, любой набранный перед этим ввод сбрасывается.Некоторые команды печатают в эхо-области информационные сообщения. Они похожи

    на сообщения об ошибках, но без звукового сигнала, и набранная ранее информация несбрасывается. Иногда эти сообщения говорят вам, что команда выполнена, в случае, еслиэто явно не наблюдается при просмотре редактируемого текста. Иногда единственной це-лью команды является печать сообщения, дающего вам специфическую информацию. На-пример, команда s-H = используется, чтобы напечатать сообщение, описывающее позициюточки в тексте и ее текущий столбец в окне. Команды, требующие для своего выполнениядлительное время, часто выводят во время работы сообщения, заканчивающиеся на ‘...’,а в конце, когда они закончились, слово ‘done’.Информативные сообщения из эхо-области сохраняются в буфере, называемом

    ‘*Messages*’. (Мы еще не объяснили, что такое буфер; для получения большейинформации о них смотрите Глава 15 [Буферы], с. 135.) Если вы пропустили сообщение,которое недолго отображалось на экране, вы можете переключиться в буфер ‘*Messages*’и снова посмотреть его. (Последовательные сообщения о промежуточных результатахчасто сворачиваются в этом буфере в одно.)Размер буфера ‘*Messages*’ ограничен определенным числом строк, это число задает

    перемен