Что такое gnu emacs

Emacs для начинающих

Алексей Отт

Введение

Этот документ предназначен для тех пользователей Linux, которые хотят узнать о Emacs и научиться работать с ним.

Что такое Emacs?

Emacs — один из наиболее мощных и широко распространённых редакторов, используемых в мире UNIX. По популярности он соперничает с редактором vi и его клонами.

В зависимости от ситуации, Emacs может быть:

программой для чтения почты и новостей Usenet;

интегрированной средой разработки (IDE);

Всё это разнообразие достигается благодаря архитектуре Emacs, которая позволяет расширять возможности редактора при помощи языка Emacs Lisp. На языке C написаны лишь самые базовые и низкоуровневые части Emacs, включая полнофункциональный интерпретатор языка Lisp. Таким образом, Emacs имеет встроенный язык программирования, который может использоваться для настройки, расширения и изменения поведения редактора. В действительности, большая часть того редактора, с которым пользователи Emacs работают в наши дни, написана на языке Lisp.

Разновидности Emacs

Существует две основных разновидности Emacs — GNU Emacs и XEmacs. GNU Emacs — это развитие оригинальной версии Emacs, написанного Столлманом, а XEmacs — это версия с некоторыми добавлениями к интерфейсу и языку Emacs Lisp. О причинах, по которым образовалось две версии, можно прочесть по этому адресу. В большинстве случаев их поведение похоже друг на друга, но есть и некоторые отличия. Поэтому некоторые пакеты расширений могут работать только с конкретной версией Emacs.

Кроме двух основных версий, существует и множество других редакторов, считающихся вариантами Emacs. Полный их список можно найти на странице Emacs Implementations and Literature.

Основы работы с Emacs

Используемая терминология

В этом разделе описываются термины Emacs, с которыми вы встретитесь при использовании редактора.

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

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

Точка, область и метка

Точка (point) — это место в буфере, в котором происходит вставка или удаление данных. Считается, что точка находится между двумя знаками, а не на каком-то одном из них. Например, если курсор находится на букве « h » в слове « the », то точка находится между « t » и « h ». Курсор терминала показывает положение точки.

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

Окно в Emacs — это область экрана, в которой отображается буфер. Когда Emacs запускается, у вас на экране отображается одно окно. При обращении к некоторым функциям Emacs (таким, как оперативная справка и интерактивная документация) часто (временно) открываются дополнительные окна на экране Emacs.

Фрейм (frame) — это отдельное окно используемой оконной системы, в котором отображаются одно или несколько окон Emacs. При этом несколько фреймов, открытых одновременно, являются частью одного сеанса Emacs.

Источник

Введение в Emacs

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

В 70-х годах XX века парня по имени Ричард Столлман занесло в Standford AI Lab, где он познакомился с чудесным редактором E, умеющим осуществлять редактирование в реальном времени. Будучи под впечатлением, Ричард бросился реализовывать возможности E в другом редакторе — TECO. Собственно, последний и послужил прототипом для создания Emacs.

Вообще, первым из Emacs’ов для UNIX был Gosling Emacs. Сам Gosling написан на языке C, а расширения к нему на одном из диалектов языка Lisp.

Но Gosling был проприетарной программой, и в 1984 Столлман начал разработку его новой, свободной реализации: GNU Emacs. Так появился герой сегодняшнего рассказа, выдержавший уже более двадцати релизов и являющийся одним из старейших текстовых редакторов.

Необыкновенная гибкость Emacs « компенсируется » его сложностью. По-началу сочетания горячих клавиш кажутся неудобными (да что там, попросту варварскими!), но привыкаешь к ним достаточно быстро, а дальше уже просто не представляешь жизнь в каком-то отличном от Emacs редакторе. Даже если изначально вам будет сложно приспособить свои пальцы, переборите искушение вернуться в редкатор, используемый ранее — просто работайте в Emacs и вскоре лёгкий ветер перемен ворвётся в ваше рабочее пространство. Странно признавать это, но пока Emacs лучший из мира свободных редакторов, которых автору довелось увидеть немало.

Начало работы

Кому не следует читать этот пост?

Если вы чувствуете, что не готовы потратить несколько вечеров на освоение и небольшую доводку редактора (Emacs можно доводить до идеального состояния очень много лет, но это под силу лишь опытным пользователям, на которых материал не рассчитан), остановитесь. Emacs « из коробки » не принесёт вам много пользы. Те, кто предпочитает usef-friendly редакторы, могут обратить свой взор на SublimeText. Он не обладает всеми возможностями Emacs, он распространяется не под свободной лицензией, но имеет одно несомненное достоинство (третье НЕ): не требует усилий при доводке под себя.

Если читатель ещё здесь

Пожалуй, лучшее, с чего можно начать, это интерактивный учебник, встроенный в сам Emacs. Последовательно наберите команды C-u + C-h + t для выбора языка учебника.

Здесь будет лишь приведена графическая шпаргалка по использованию наиболее часто употребляющихся команд. Всё остальное вы найдёте в упомянутом интерактивном учебнике, документации по Emacs или иных многочисленных руководствах. Мы остановимся на наиболее интересных моментах, которые должны быть понятны новичку и не займут много времени для описания. Разумеется, такие вещи как знаменитый org-mode не будут влючены в это начальное руководство.

Шпаргалка по командам Emacs, подготовленная специально для этого поста (может, кому пригодится в начале пути):

Что такое gnu emacs. Смотреть фото Что такое gnu emacs. Смотреть картинку Что такое gnu emacs. Картинка про Что такое gnu emacs. Фото Что такое gnu emacs

Настройка Emacs

Переопределение сочетаний клавиш

Вряд ли вам хватит тех команд, что приведены в учебнике Emacs. Возможно, некоторые из них вы захотите переопределить. Например, у автора сочетание команд Alt+Shift по-привычке связано с переключением раскладки клавиатуры, а в Emacs сочетание клавиш Ctrl+Alt+Shift+1 открывает своеобразный shell, куда можно вписать консольную команду, дабы затем её исполнить.

Как пример: вы пишете документ в LaTeX и через какое-то время у вас возникает непреодолимое желание взглянуть на результат своих трудов. Что же, это не проблема. Указанное выше сочетание клавиш позволит вам запустить команду для сборки pdf-документа из tex-файла и насладиться просмотром.

Но как использовать эту команду, если часть её просто совпадает с командой переключения раскладки? Не беда, сейчас мы исправим это.

Дальше идём править init.el :

Управление пакетами

Emacs может включать множество пакетов на все случаи жизни. Для управления пакетами используется менеджер этих самых пакетов: ELPA, позволяющий с лёгкостью находить доступные для загрузки пакеты, инсталлировать и обновлять их.

Для указания репозитория пакетов добавьте в ваш файл init.el следующие строки:

Существует несколько источников, откуда можно невозбранно утащить пакеты для установки. Вот они:

Шрифт

Пользователям Emacs 23 и выше несказанно повезло: все проблемы с юникодом решены в этой версии. Отставить бубен! Просто укажите шрифт, который должен использовать Emacs.

Темы можно установить при помощи пакетного менеджера, но для примера мы установим github вручную.

Смена темы происходит очень быстро, Emacs может спросить вас применить ли тему и использовать ли её без вопросов в будущем. Дабы вручную указать « дефолтную » тему добавьте ещё одну строку:

Что такое gnu emacs. Смотреть фото Что такое gnu emacs. Смотреть картинку Что такое gnu emacs. Картинка про Что такое gnu emacs. Фото Что такое gnu emacs

Кроме того, некоторые настройки поведения удобнее описать всё в том же init.el :

Подобные настройки заставят Emacs отображать дату и время в 24-часовом формате и заряд батареи ноутбука, обновляя данные каждые 10 секунд.

Проверка орфографии

Что такое gnu emacs. Смотреть фото Что такое gnu emacs. Смотреть картинку Что такое gnu emacs. Картинка про Что такое gnu emacs. Фото Что такое gnu emacs

Проблемы могут возникнуть при проверке текста, в котором есть как английские, так и русские слова.

Поддержка синтаксиса языков программирования

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

не забываем загрузить и инициализировать сам пакет

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

Примерно так следует поступать и с остальными языками.

Разные языки программирования имеют разные требования при написании кода. Прежде всего это относится к отступам: их количеству, использованию пробелов или же табуляции. Emacs позволит подстроиться под каждый язык. К примеру, укажем никогда не использовать табуляцию и настроим ширину отступа для нескольких языков.

Разное

Emacs может служить проводником в мире файлов. Рассмотрим несколько часто встречающихся ситуаций:

Или, к примеру, хочется посмотреть сколько строк кода уже написано. Как отобразить количество строк кода слева от основного текста?

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

Но что делать, если этот режим хочется держать включенным всегда? При выходе из Emacs подобные настройки будут сброшены. Что ж, мы снова пойдём править init.el :

Невероятно удобной вещью являются закладки. Если вы часто обращаетесь к какому-то файлу (это может быть ваш todo-лист в org-mode ;), есть возможность добавить его в закладки. Для управления закладками служат команды:

Весьма радует умное расположение буферов/окон. Но об этом нечего говорить, лучше один раз увидеть:

Что такое gnu emacs. Смотреть фото Что такое gnu emacs. Смотреть картинку Что такое gnu emacs. Картинка про Что такое gnu emacs. Фото Что такое gnu emacs

Автор очень любит редактировать markdown-текст, и после SublimeText не хватало такой приятной мелочи как предварительный просмотр этого самого текста в браузере. В частности такой подход относится к тем, кто использует Jekyll, Pelican или иные движки для ведения блога. Не будешь ведь каждый раз запускать веб-сервер для генерации страниц только лишь для того, чтобы явно увидеть результат?

При подключении новых пакетов не нужно ничего выдумывать: все доступные опции и примеры подключения как правило описаны в репозитории пакета. Просто не забудьте дать Emacs’у указание на его (пакета) загрузку:

Вместо заключения

Как было обещано в начале этого небольшого обзора, приводятся ссылки для быстрого приготовления текстового редактора. Автор искренне считает, что товарищам, не сведующим в программировании вообще и Lisp в частности, изначально лучше воспользоваться готовой конфигурацией.

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

Источник

Emacs для начинающих: введение

Ist das Emacs? Sehr gut!

Начну с небольшой истории. Лет так 15 назад ездил я на подработку сисадмином программистом в славный городе Mannheim, West Germany. Когда я приехал на работу и развернул своё рабочее окружение, большинство дойчей вообще не сильно поняли в чём я работаю, а вот директор конторы сразу мне сказал: «Ist das Emacs? Sehr gut!», добавив также что никто кто из текущих программистов не смог его освоить. А по честному, не такой уж я особенный — мне просто повезло: готовый конфиг мне дал один добрый человек, и помог мне разобраться с редактором на первых шагах. Я, в свою очередь хочу поделиться своим опытом с остальными, и решил сделать серию статей для начинающих и не очень, с рассмотрением разных полезных фич emacs.

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

Первое — слабость emacs в его силе. Легкость освоения (learnability) пострадала от простоты переконфигурирования — каждый перестраивает радактор под себя, и часто настолько кардинально, что другой пользователь того же редактора может его не узнать.

Разрабочики Emacs пытаются снизить барьер входа новичков пытаясь выдать что то похожее на общепритяные стандарты (CUA mode: Ctrl+C, Ctrl+V, запись *scratch*, и т п) но этого явно мало для редактора с 20ти летней историей — барьер для освоения держится на высоте, отсекая новичков.

Я решил пойти другим путём и облегчить понимание того, насколько им нужна та или иная фича, сделав демонстрацию каждой. Вместо того, чтобы просто выложить свой конфиг (типа «кто надо тот разберётся») я постараюсь его сам разобрать по кусочкам, объяснив каждый отдельный модуль и настройку.

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

Поэтому, эта статья не будет описывать какую то отдельную фичу — я пройдусь по всем, удобным с моей точки зрения. Это будет [не]большой Tutorial который позволит выбрать то, что нужно каждому по отдельности.

Введение

В введении в emacs показан сам редактор, комбинации клавиш для начального изучения, и объяснения по ходу дела базовой концепции редактирования.

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

После просмотра этого видео также рекомендую пройти английский туториал по emacs, который доступен в самом редакторе по клавише: C-h t.

IDO-mode

Удобный режим для быстрого доступа к файлам, открытым файлам, и другим спискам внутри редактора. В совокупности с активированным uniquify режимом позволяет *очень* быстро найти нужное.Особенности: по клавише C+ начинается ввод новой подстроки. По клавише C-f идёт fallback (возврат) на обычный (не-IDO) ввод.

Работа с файлами удалённо по протоколам SSH, FTP, Samba и т п

Возможно это не самая навороченная фича emacs, т к многие скажут что намного проще
зайти на удалённый сервер консолью и там уже всё отредактировать. Но консоль, увы не так удобна как GUI приложение, также часто файл удобнее и быстрее редактируется локально, и записывается уже результат, а не медленные нажатия клавиш в случае консоли. Открыв несколько файлов удалённо, легко можно перебрасывать куски текста любой длинны и содержания, избегая использования мышового буфера.

В заключение

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

В следующих статьях по этой теме я опишу работу с Dired (файл менеджер), работу с системами контроля версий на примере SVN и Mercurial, работу по поиску текста (rgrep), закладки по тексту, интерактивный показ ошибок, среду разработки для Python и многое другое. Просьба коментировать какие именно дополнительные функции интересны.

Источник

Национальная библиотека им. Н. Э. Баумана
Bauman National Library

Персональные инструменты

GNU Emacs

Содержание

История

В 1976 году Ричард Столлман написал первый Emacs.

Назначение

Платформы

Терминология

Emacs создавался до появления Windows и некоторые его термины непривычны для многих пользователей этой операционной системы. Ниже приведены примерные аналоги некоторых терминов Emacs в Windows.

Использование GNU Emacs

Команды [Источник 17]

В обычном режиме редактирования GNU Emacs ведет себя как и другие текстовые редакторы, т.е. позволяет пользователю вставлять символы с соответствующими клавишами и перемещать точку редактирования с помощью клавиш со стрелками. Последовательность клавиш Escape или нажатие клавиши управления и / или клавиши meta, клавиши alt или суперключей вместе с обычным ключом приводит к изменению нажатий клавиш, которые вызывают функции из среды Emacs Lisp. Команды, такие как save-buffer и save-buffers-kill-emacs, комбинируют несколько модифицированных нажатий клавиш.

Некоторые команды GNU Emacs работают, вызывая внешнюю программу, такую ​​как ispell для проверки орфографии или GNU Compiler Collection для компиляции программы, синтаксический разбор вывода программы и отображение результата в GNU Emacs.

Минибуфер

Минибуфер используется командами Emacs для чтения более сложных, чем простое число, аргументов. Аргументами минибуфера могут быть имена файлов, имена буферов, имена функций Лиспа, имена команд Emacs и много других вещей в зависимости от считывающих аргумент команд. Для редактирования аргументов в минибуфере могут быть использованы обычные команды редактирования [Emacs]].

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

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

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

Основные режимы

Основные режимы подразделяются на три основных группы:

Большинство основных режимов для языков программирования указывают, что только пустые строки разделяют абзацы. Таким образом, команды работы с абзацами остаются удобными. Они так же заставляют режим Auto Fill использовать определение TAB для создания отступа во вновь создаваемых им строках. Это делается, поскольку большинство строк в программе обычно начинаются с отступа.

Второстепенные режимы

Включение или выключение некоторых второстепенных режимов применяется только к текущему буферу; каждый буфер независим от других. Следовательно, вы можете включить режим в одних буферах и выключить в других. К второстепенным режимам, которые могут так работать, относятся режим Abbrev, режим Auto Fill, режим Auto Save, режим Font-Lock, режим Hscroll, режим ISO Accents, второстепенный режим Outline, режим Overwrite и режим Binary Overwrite.

Руководство

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

Источник

Emacs ДМС ОБЮЙОБАЭЙИ

бМЕЛУЕКљпФФ

emacs љ— ПДЙО ЙЪ ОБЙВПМЕЕ НПЭОЩИ Й ЫЙТПЛП ТБУРТПУФТБОЈООЩИ ТЕДБЛФПТПЧ, ЙУРПМШЪХЕНЩИ Ч НЙТЕ UNIX. рП РПРХМСТОПУФЙ ПО УПРЕТОЙЮБЕФ У ТЕДБЛФПТПН vi Й ЕЗП ЛМПОБНЙ.

ч ЪБЧЙУЙНПУФЙ ПФ УЙФХБГЙЙ, emacs НПЦЕФ ВЩФШ:

РТПЗТБННПК ДМС ЮФЕОЙС РПЮФЩ Й ОПЧПУФЕК Usenet;

ЙОФЕЗТЙТПЧБООПК УТЕДПК ТБЪТБВПФЛЙ (IDE);

emacs СЧМСЕФУС ПДОЙН ЙЪ УФБТЕКЫЙИ ТЕДБЛФПТПЧ. пО ЙУРПМШЪПЧБМУС ФЩУСЮБНЙ РТПЗТБННЙУФПЧ ОБ РТПФСЦЕОЙЙ РПУМЕДОЙИ 20 У МЙЫОЙН МЕФ, ДМС ОЕЗП УПЪДБОП НОПЗП ДПРПМОЙФЕМШОЩИ РБЛЕФПЧ ТБУЫЙТЕОЙК. ьФЙ ДПРПМОЕОЙС РПЪЧПМСАФ ДЕМБФШ У РПНПЭША emacs ФБЛЙЕ ЧЕЭЙ, ЛПФПТЩЕ уФПМНБО, ЧЕТПСФОП, ДБЦЕ ОЕ УЮЙФБМ ЧПЪНПЦОЩНЙ Ч ОБЮБМЕ УЧПЕК ТБВПФЩ ОБД ТЕДБЛФПТПН. вПМЕЕ РПДТПВОП С ТБУУЛБЦХ П ОЙИ Ч УМЕДХАЭЙИ ТБЪДЕМБИ.

тБЪОПЧЙДОПУФЙ emacs

пУОПЧЩ ТБВПФЩ У emacs

йУРПМШЪХЕНБС ФЕТНЙОПМПЗЙС

вХЖЕТљ— ЬФП ПУОПЧОБС ЕДЙОЙГБ ТЕДБЛФЙТПЧБОЙС; ПДЙО ВХЖЕТ УППФЧЕФУФЧХЕФ ПДОПНХ ЛХУЛХ ТЕДБЛФЙТХЕНПЗП ФЕЛУФБ. чЩ НПЦЕФЕ ЙНЕФШ ОЕУЛПМШЛП ВХЖЕТПЧ, ОП Ч ЛБЦДЩК ЛПОЛТЕФОЩК НПНЕОФ ЧЩ ТЕДБЛФЙТХЕФЕ ФПМШЛП ПДЙО ЧЩВТБООЩК ВХЖЕТ. рТЙ ЬФПН, ТБЪХНЕЕФУС, ЕУМЙ ЧЩ ЙУРПМШЪХЕФЕ ОЕУЛПМШЛП ПЛПО, ФП ЧЙДЙНЩНЙ НПЗХФ ВЩФШ ОЕУЛПМШЛП ВХЖЕТПЧ. юБЭЕ ЧУЕЗП ВХЖЕТЩ ПВТБЭБАФУС Л ЛБЛПНХ-МЙВП ЖБКМХ, УЮЙФЩЧБС ДБООЩЕ ЙЪ ЖБКМБ Ч ВХЖЕТ, ЙМЙ ЪБРЙУЩЧБС ДБООЩЕ ЙЪ ВХЖЕТБ Ч ЖБКМ.

фПЮЛБ, ПВМБУФШ Й НЕФЛБ

фПЮЛБ (point)љ— ЬФП НЕУФП Ч ВХЖЕТЕ, Ч ЛПФПТПН РТПЙУИПДЙФ ЧУФБЧЛБ ЙМЙ ХДБМЕОЙЕ ДБООЩИ. уЮЙФБЕФУС, ЮФП ФПЮЛБ ОБИПДЙФУС НЕЦДХ ДЧХНС ЪОБЛБНЙ, Б ОЕ ОБ ЛБЛПН-ФП ПДОПН ЙЪ ОЙИ. оБРТЙНЕТ, ЕУМЙ ЛХТУПТ ОБИПДЙФУС ОБ ВХЛЧЕ « h » Ч УМПЧЕ « the », ФП ФПЮЛБ ОБИПДЙФУС НЕЦДХ « t » Й « h ». лХТУПТ ФЕТНЙОБМБ РПЛБЪЩЧБЕФ РПМПЦЕОЙЕ ФПЮЛЙ.

нЕФЛБ ХЛБЪЩЧБЕФ ОБ РПЪЙГЙА Ч ФЕЛУФЕ. пОБ ПРТЕДЕМСЕФ ПДЙО ЛПОЕГ ПВМБУФЙ, Ч ФП ЧТЕНС ЛБЛ ФПЮЛБ ОБИПДЙФУС ОБ ДТХЗПН ЛПОГЕ ПВМБУФЙ. нОПЗЙЕ ЛПНБОДЩ ТБВПФБАФ У ФЕЛУФПН ГЕМЙЛПН ПФ ФПЮЛЙ ДП НЕФЛЙ. лБЦДЩК ВХЖЕТ ЙНЕЕФ УЧПА НЕФЛХ.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *