<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>http://lorwiki.zhbert.ru/index.php?action=history&amp;feed=atom&amp;title=Emacs_Intro</id>
	<title>Emacs Intro - История изменений</title>
	<link rel="self" type="application/atom+xml" href="http://lorwiki.zhbert.ru/index.php?action=history&amp;feed=atom&amp;title=Emacs_Intro"/>
	<link rel="alternate" type="text/html" href="http://lorwiki.zhbert.ru/index.php?title=Emacs_Intro&amp;action=history"/>
	<updated>2026-10-13T00:43:34Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.39.0</generator>
	<entry>
		<id>http://lorwiki.zhbert.ru/index.php?title=Emacs_Intro&amp;diff=53&amp;oldid=prev</id>
		<title>Admin: 1 версия импортирована</title>
		<link rel="alternate" type="text/html" href="http://lorwiki.zhbert.ru/index.php?title=Emacs_Intro&amp;diff=53&amp;oldid=prev"/>
		<updated>2023-02-27T18:39:14Z</updated>

		<summary type="html">&lt;p&gt;1 версия импортирована&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая версия&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия от 21:39, 27 февраля 2023&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://lorwiki.zhbert.ru/index.php?title=Emacs_Intro&amp;diff=52&amp;oldid=prev</id>
		<title>lor&gt;Cetjs2: /* Как начать жить с Emacs. */</title>
		<link rel="alternate" type="text/html" href="http://lorwiki.zhbert.ru/index.php?title=Emacs_Intro&amp;diff=52&amp;oldid=prev"/>
		<updated>2018-07-28T15:21:44Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Как начать жить с Emacs.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;=Как начать жить с Emacs.=&lt;br /&gt;
&lt;br /&gt;
[http://edward.oconnor.cx/2009/07/learn-emacs-in-ten-years Изучаем Emacs за 10 лет.] (шутка, хе-хе, но с долей правды)&lt;br /&gt;
&lt;br /&gt;
Эта статья из категории 'быстрый старт', если вы хотите основательно узнать про Emacs всё, возможно вам следует начать со [http://www.gnu.org/software/emacs/manual/ списка официальной документации](для GNU Emacs manual есть [https://www.linux.org.ru/books/GNU/emacs/emacs_toc.html перевод на русский язык]).&lt;br /&gt;
&lt;br /&gt;
[http://emacs.sexy/img/How-to-Learn-Emacs-v2-Large.png Одной картинкой].&lt;br /&gt;
&lt;br /&gt;
Сейчас (03.02.2015) стабильной версией Emacs'a является 24.4, которая доступна для скачивания в интернете (например с [http://www.gnu.org/software/emacs/#Obtaining официального сайта]) и является основной в большинстве дистрибутивов.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Получаем и устанавливаем Emacs.==&lt;br /&gt;
&lt;br /&gt;
;debian/ubuntu&lt;br /&gt;
:apt-get install emacs&lt;br /&gt;
&lt;br /&gt;
;archlinux&lt;br /&gt;
:pacman -S emacs&lt;br /&gt;
&lt;br /&gt;
;fedora&lt;br /&gt;
:yum install emacs&lt;br /&gt;
&lt;br /&gt;
;Сборка последней версии исходников(рекомендую этот путь)&lt;br /&gt;
:Клонируем trunk&lt;br /&gt;
 cd ~/projects; #Ну или где у вас место для сбора программ.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* bzr&lt;br /&gt;
 bzr branch bzr://bzr.savannah.gnu.org/emacs/trunk emacs&lt;br /&gt;
* git&lt;br /&gt;
 git clone git://git.savannah.gnu.org/emacs.git emacs&lt;br /&gt;
&lt;br /&gt;
:Собираем/пересобираем и устанавливаем:&lt;br /&gt;
 cd emacs;&lt;br /&gt;
 # bzr pull; или git pull;&lt;br /&gt;
 ./configure # --enable-link-time-optimization --with-x-toolkit=lucid --without-makeinfo --prefix=~/bin/emacs_dir --bindir=~/bin;&lt;br /&gt;
 make;&lt;br /&gt;
 make install;&lt;br /&gt;
==Введение.==&lt;br /&gt;
&lt;br /&gt;
Emacs -- легендарный текстовый редактор.&lt;br /&gt;
&lt;br /&gt;
===Основные понятия.===&lt;br /&gt;
&lt;br /&gt;
;frame&lt;br /&gt;
:'фрэйм' -- оно же 'окно' в терминологии WM. У одного процесса Emacs может быть несколько фреймов.&lt;br /&gt;
&lt;br /&gt;
;window&lt;br /&gt;
:'окно' -- область фрейма, в которой непосредственно происходит отображение и редактирование текста буфера. В одном фрэйме может быть несколько окон.&lt;br /&gt;
&lt;br /&gt;
;buffer&lt;br /&gt;
:'буфер' -- объект, содержащий текст. Может быть привязан к файлу и его содержимому или вводу/выводу процесса или просто содержать текст, сгенерированный или введённый пользователем.&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;nowiki&amp;gt;*Messages*&amp;lt;/nowiki&amp;gt; buffer&lt;br /&gt;
:специальный буфер, что-то вроде stdout и stderr, Emacs выводит туда различные сообщения. Последнее сообщение также отображается в echo area.&lt;br /&gt;
&lt;br /&gt;
;echo area&lt;br /&gt;
:область внизу фрейма, в которой отображаются сообщения.&lt;br /&gt;
&lt;br /&gt;
;minibuffer&lt;br /&gt;
:область внизу фрейма(там же где echo area), используется когда интерактивной команде нужен ввод от пользователя.&lt;br /&gt;
&lt;br /&gt;
;point&lt;br /&gt;
:'точка ввода', точка в буфере, в которой находится 'текстовый курсор'('каретка'), позиция в буфере, в которую производится ввод текста.&lt;br /&gt;
&lt;br /&gt;
;mark&lt;br /&gt;
:'метка', может использоваться как 'закладка' для быстрого перемещения на позицию в буфере, используется некоторыми командами(например копирование текста производится между mark и point).&lt;br /&gt;
&lt;br /&gt;
;region&lt;br /&gt;
:область буфера между двумя 'позициями'(зачастую между mark и point).&lt;br /&gt;
&lt;br /&gt;
;major-mode&lt;br /&gt;
:'основной режим', задаёт подсветку синтаксиса/специфические команды для определённых типов файлов/языков программирования, может быть активирован как автоматически, так и вручную. Для буфера может быть активен лишь один и всегда есть хотя бы один активный major-mode. Для каждого буфера может быть свой major-mode.&lt;br /&gt;
&lt;br /&gt;
;minor-mode&lt;br /&gt;
:'минорный режим', задаёт дополнительные функции, может быть активно несколько (или ни одного) minor-mode. Для каждого буфера может быть активирован свой набор 'минорных режимов', минорные режимы могут быть 'глобальными'(активными для всех буферов).&lt;br /&gt;
&lt;br /&gt;
;mode-line&lt;br /&gt;
:'строка режимов' -- строка внизу окна, отображающая различную информацию(активные режимы, размер буфера и т.д.)&lt;br /&gt;
&lt;br /&gt;
;header-line&lt;br /&gt;
:строка вверху окна. По умолчанию ничего не отображает и используется редко(например tabbar-mode использует header-line).&lt;br /&gt;
&lt;br /&gt;
;load-path&lt;br /&gt;
:путь в котором Emacs ищет *.el и *.elc файлы с elisp кодом.&lt;br /&gt;
&lt;br /&gt;
;kill-ring&lt;br /&gt;
:список или 'история', куда помещается скопированный/вырезанный текст.&lt;br /&gt;
&lt;br /&gt;
;command&lt;br /&gt;
:'команда', 'интерактивная функция'(interactive command) -- elisp функция, предназначенная для вызова пользователем(например для привязки к клавишам), которая содержит специальную elisp форму (interactive) и может принимать ввод от пользователя как аргумент. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Некоторые полезные ключи запуска===&lt;br /&gt;
&lt;br /&gt;
;-Q&lt;br /&gt;
:запустить Emacs без загрузки файлов конфигурации ~/.emacs(и некоторых других файлов).&lt;br /&gt;
;--debug-init&lt;br /&gt;
:запустить Emacs в режиме отладки.&lt;br /&gt;
;--eval EXPR&lt;br /&gt;
:выполнить EXPR, как выражение Emacs Lisp.&lt;br /&gt;
;-nw&lt;br /&gt;
:запустить в режиме текстового терминала.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Обозначения клавиш/сочетаний в Emacs.===&lt;br /&gt;
&lt;br /&gt;
;C&lt;br /&gt;
:Ctrl&lt;br /&gt;
;M&lt;br /&gt;
:Meta(левый альт, обычно. Что считать альтом можно поменять с помощью (setq x-alt-keysym 'meta))&lt;br /&gt;
;S&lt;br /&gt;
:Shift&lt;br /&gt;
;SPC&lt;br /&gt;
:Space&lt;br /&gt;
;ESC&lt;br /&gt;
:Escape&lt;br /&gt;
;RET&lt;br /&gt;
:Return(оно же Enter)&lt;br /&gt;
;tab&lt;br /&gt;
:Tab&lt;br /&gt;
;&amp;lt;f7&amp;gt;&lt;br /&gt;
:F7&lt;br /&gt;
&lt;br /&gt;
;C-h&lt;br /&gt;
:Ctrl+h (удерживая Ctrl нажать h)&lt;br /&gt;
;C-x x l&lt;br /&gt;
:значит нажать последовательно сначала 'Ctrl+x', затем раздельно 'x' и затем 'l'.&lt;br /&gt;
;C-x C-x l&lt;br /&gt;
:2 раза C-x и затем l.&lt;br /&gt;
;M-x revert-buffer RET&lt;br /&gt;
:значит нажать Alt+x, напечатать revert-buffer и нажать Enter.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Запускаем и используем Emacs первый раз.(с дефолтными настройками)===&lt;br /&gt;
&lt;br /&gt;
Вот примерный скриншот, того что мы видим при первом запуске с дефолтными настройками:&lt;br /&gt;
http://yadi.sk/d/Rc3GcV_iJmYrX&lt;br /&gt;
&lt;br /&gt;
ASCII версия скриншота:&lt;br /&gt;
&lt;br /&gt;
    Emacs frame&lt;br /&gt;
 .______________________________________________________________________________.&lt;br /&gt;
 |File Edit Options Buffers Tools Lisp-Interaction Help                         |&amp;lt;-- menu-bar&lt;br /&gt;
 |------------------------------------------------------------------------------|&lt;br /&gt;
 | button | button | button | . . . |                                           |&amp;lt;-- tool-bar&lt;br /&gt;
 |______________________________________________________________________________|&lt;br /&gt;
 |;; This buffer is for notes you don't want to save, and for Lisp evaluation.  |\&lt;br /&gt;
 |;; If you want to create a file, visit that file with C-x C-f,                | \&lt;br /&gt;
 |;; then enter the text in that file's own buffer.                             |  \ __ window&lt;br /&gt;
 |                                                                              |  /&lt;br /&gt;
 |                                                                              | /&lt;br /&gt;
 |______________________________________________________________________________|/&lt;br /&gt;
 |-UUU:----F1  *scratch*      All L5     (Lisp Interaction) --------------------|&amp;lt;-- mode-line&lt;br /&gt;
 |------------------------------------------------------------------------------|&lt;br /&gt;
 |For information about GNU Emacs and the GNU system, type C-h C-a.             |&amp;lt;-- echo-area&lt;br /&gt;
 '------------------------------------------------------------------------------'&lt;br /&gt;
&lt;br /&gt;
Далее нажимаем C-h (Ctrl+h), примерно через 1-2 секунды, внизу(в echo-area) появится надпись: &amp;quot;C-h (Type ? for further options) -&amp;quot;, нажимаем '?', будет показан список вариантов.&lt;br /&gt;
Нажимайте 't' чтобы пройти tutorial. Он не сложный и не длинный, но полезный.&lt;br /&gt;
&lt;br /&gt;
menu-bar и tool-bar чаще всего отключают за ненадобностью:&lt;br /&gt;
  (tool-bar-mode 0)&lt;br /&gt;
  (menu-bar-mode 0)&lt;br /&gt;
Скроллы тоже отключают:&lt;br /&gt;
  (scroll-bar-mode 0)&lt;br /&gt;
А так же отрубают назойливый 'стартовый экран' и всякие ненужные сообщения:&lt;br /&gt;
  (setq inhibit-startup-message t&lt;br /&gt;
        inhibit-startup-echo-area-message t)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Частоиспользуемые сочетания клавиш.===&lt;br /&gt;
&lt;br /&gt;
;C-x C-c&lt;br /&gt;
:выйти из Emacs.&lt;br /&gt;
;M-x [имя команды]&lt;br /&gt;
:execute-extended-command -- Будет предложено ввести имя интерактивной функции для исполнения.&lt;br /&gt;
;C-g&lt;br /&gt;
:выход/отмена текущей команды/операции(или если вы начали вводить сочетание клавиш, но передумали или ошиблись и Emacs ждёт от вас продолжения или ввода).&lt;br /&gt;
;C-q [любая кнопка]&lt;br /&gt;
:вводит тот символ который по умолчанию вводится [любой кнопкой] даже если она переназначена.&lt;br /&gt;
;C-u&lt;br /&gt;
:Задаёт universal prefix argument -- это такой специальный аргумент, который могут принимать команды и менять своё поведение. Может быть дополнен знаком '-' или числом, например C-u - или С-u 3 или C-u 300. Например C-u 3 M-x next-line RET -- перейдёт на следующую строку 3 раза, т.е. перейдёт на 3ю строку от курсора(текущего положения point).&lt;br /&gt;
;C-j&lt;br /&gt;
:Вставляет перевод строки. В общем если у вас где-нибудь не работает Enter(перевод строки или запуск команды или вам нужно вставить перевод строки без нажатия Enter), пробуем C-j, если не работает -- С-q RET, если и это не помогает -- C-q C-j.&lt;br /&gt;
&lt;br /&gt;
====Работа со встроенной документацией.====&lt;br /&gt;
;C-h ?&lt;br /&gt;
:посмотреть все варианты справки&lt;br /&gt;
;C-h f [имя функции]&lt;br /&gt;
:посмотреть документацию о функции.(так же там есть ссылка на исходник, если доступен)&lt;br /&gt;
;C-h k [сочетание клавиш]&lt;br /&gt;
:посмотреть какая функция привязана к сочетанию клавиш.&lt;br /&gt;
;C-h v [имя переменной]&lt;br /&gt;
:посмотреть информацию о переменной.&lt;br /&gt;
&lt;br /&gt;
====Операции с файлами:====&lt;br /&gt;
;С-x C-f&lt;br /&gt;
:открыть файл.(будет создан новый буфер, связанный с файлом и отображающий его содержимое в текущем окне)&lt;br /&gt;
;C-x C-s&lt;br /&gt;
:сохранить файл.(сохраняет содержимое буфера в связанный файл)&lt;br /&gt;
;C-x C-w&lt;br /&gt;
:сохранить как.(сохранить текущий буфер в файл с именем)&lt;br /&gt;
Для 'закрытия' файла нужно убить связанный с ним буфер.&lt;br /&gt;
====Операции с буферами:====&lt;br /&gt;
;C-x b&lt;br /&gt;
:переключить текущий буфер окна на другой.&lt;br /&gt;
;C-x k&lt;br /&gt;
:убить буфер.&lt;br /&gt;
&lt;br /&gt;
====Операции над окнами:====&lt;br /&gt;
;C-x 0&lt;br /&gt;
:удалить текущее окно&lt;br /&gt;
;C-x 1&lt;br /&gt;
:удалить все окна, кроме текущего&lt;br /&gt;
;C-x 2&lt;br /&gt;
:разделить текущее окно по горизонтали(получается два окна, одно сверху, другое -- снизу)&lt;br /&gt;
;C-x 3&lt;br /&gt;
:разделить текущее окно по вертикали(-- одно слева, другое справа)&lt;br /&gt;
;C-x o&lt;br /&gt;
:перейти к следующему окну.&lt;br /&gt;
Для большего удобства можно использовать&lt;br /&gt;
  (windmove-default-keybindings 'super)&lt;br /&gt;
  (setq windmove-wrap-around t)&lt;br /&gt;
Тогда из окна в окно можно перемещаться с помощью стрелочек(некоторые пользователи считают это и любые манипуляции стрелочками и с отрывом руки от буквенной клавиатуры не труЪ), зажав соответствующую клавишу-модификатор, указанную как аргумент к windmove-default-keybindings ('meta, 'shift(по умолчанию, если запустить функцию без аргумента считается 'shift)).&lt;br /&gt;
&lt;br /&gt;
====Операции с точкой ввода/меткой:====&lt;br /&gt;
;C-a&lt;br /&gt;
:переместиться в начало строки.&lt;br /&gt;
;C-e&lt;br /&gt;
:переместиться в конец строки.&lt;br /&gt;
;C-M-n или С-M-f или C-M-&amp;lt;right&amp;gt;&lt;br /&gt;
:перескочить в конец выражения в скобках.&lt;br /&gt;
;C-M-p или C-M-b или C-M-&amp;lt;left&amp;gt;&lt;br /&gt;
:перескочить в начало выражения в скобках.&lt;br /&gt;
;C-M-u или C-M-&amp;lt;up&amp;gt;&lt;br /&gt;
:подняться на уровень вверх по вложенным скобкам&lt;br /&gt;
;C-M-d или C-M-&amp;lt;down&amp;gt;&lt;br /&gt;
:спуститься на уровень вложенности вниз&lt;br /&gt;
;M-&amp;lt;&lt;br /&gt;
:перейти в начало буфера.&lt;br /&gt;
;M-&amp;gt;&lt;br /&gt;
:перейти в конец буфера.&lt;br /&gt;
&lt;br /&gt;
;С-SPC&lt;br /&gt;
:установить 'метку'.&lt;br /&gt;
;C-x C-x&lt;br /&gt;
:поменять местами point и mark&lt;br /&gt;
;M-w&lt;br /&gt;
:копировать текст между меткой и точкой ввода (или выделенный в transient-mark-mode).&lt;br /&gt;
;C-w&lt;br /&gt;
:вырезать текст вежду меткой и точкой ввода.&lt;br /&gt;
;C-y&lt;br /&gt;
:вставить вырезанный/копированный текст.&lt;br /&gt;
;M-y&lt;br /&gt;
:Используется после 'вставки' (C-y) циклически заменяет вставляемый текст из 'истории' копированного/вырезанного текста (kill-ring).&lt;br /&gt;
&lt;br /&gt;
;C-x u&lt;br /&gt;
:undo&lt;br /&gt;
&lt;br /&gt;
Виндузятники (и не только) почувствуют себя как дома после&lt;br /&gt;
  (cua-mode 1)&lt;br /&gt;
Этот режим включает некоторые привычные сочетания клавиш, как C-x (вырезать), C-v (вставить), C-z (отмена) и некоторые другие.&lt;br /&gt;
&lt;br /&gt;
;C-s&lt;br /&gt;
:инкрементный поиск по буферу. Рекомендуется ознакомиться с C-h k C-s, т.к. во время поиска доступно множество вспомогательных сочетаний.&lt;br /&gt;
&lt;br /&gt;
====Дополнение кода/завершение введённого слова:====&lt;br /&gt;
;M-/&lt;br /&gt;
:dabbrev-expand -- дополняет из ранее встречавшегося.&lt;br /&gt;
;M-tab&lt;br /&gt;
:completion-at-point -- пытается дополнить что-то осмысленное разными методами, пользователь или режим(minor-, major- mode) может предоставлять свои функции для дополнения.&lt;br /&gt;
;M-;&lt;br /&gt;
:Закомментировать/раскомментировать строку/регион.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Полезные команды/режимы.===&lt;br /&gt;
Напомним, что команды Emacs можно выполнять через сочетание M-x (Alt+x).&lt;br /&gt;
;eval-region&lt;br /&gt;
:выполняет регион, выделенную область буфера между mark и point, как Emacs Lisp код.&lt;br /&gt;
;rgrep&lt;br /&gt;
:рекурсивный grep по файлам.&lt;br /&gt;
;redo&lt;br /&gt;
:противоположность undo.&lt;br /&gt;
;ielm&lt;br /&gt;
:Emacs Lisp REPL.&lt;br /&gt;
;load-file&lt;br /&gt;
:Выполнить файл, как код Emacs Lisp.&lt;br /&gt;
;show-paren-mode&lt;br /&gt;
:Подсвечивание парных скобок.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Конфигурация.==&lt;br /&gt;
&lt;br /&gt;
Рекомендуется ознакомится с [http://www.linux.org.ru/wiki/en/Emacs_Lisp Emacs Lisp].&lt;br /&gt;
&lt;br /&gt;
По умолчанию Emacs при запуске исполняет файл ~/.emacs (а сейчас и ~/.emacs.d/init.el или другой, указанный в переменной user-init-file во время запуска), который может содержать любой elisp код(смотри C-h r i init file).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Customize===&lt;br /&gt;
&lt;br /&gt;
В Emacs есть специальный интерфейс для изменения настроек.&lt;br /&gt;
'''''M-x customize RET''''' и дальше переходите по ссылкам и настраивайте.&lt;br /&gt;
Если вы знаете что вам нужно конкретно настраивать, то&lt;br /&gt;
'''''M-x customize-group RET имя-группы RET''''', имя-группы обычно совпадает с названием режима или elisp библиотеки/файла которые вы хотите настроить. Впрочем, не всегда и не всё можно настроить через этот интерфейс.&lt;br /&gt;
Настройки сделанные через этот интерфейс по умолчанию сохраняются в специальном блоке вашего файла инициализации (который ~/.emacs по умолчанию), но этого поведение может быть изменено(см. переменную custom-file).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Пакетная Система Emacs===&lt;br /&gt;
&lt;br /&gt;
В Emacs 24.3 появился встроенный 'менеджер 'пакетов'(сторонних модулей)', что достаточно упростило установку, удаление, компиляцию, загрузку стороннего elisp кода.&lt;br /&gt;
Для того чтобы загружать пакеты при запуске Emacs, нужно добавить в файл инициализации следующие строки:&lt;br /&gt;
 (require 'package)&lt;br /&gt;
 ;; Задаём список репозиториев.&lt;br /&gt;
 (setq package-archives '(;; (&amp;quot;ELPA&amp;quot; . &amp;quot;http://tromey.com/elpa/&amp;quot;) &lt;br /&gt;
                          ;; (&amp;quot;gnu&amp;quot; . &amp;quot;http://elpa.gnu.org/packages/&amp;quot;)&lt;br /&gt;
                          ;; (&amp;quot;marmalade&amp;quot; . &amp;quot;http://marmalade-repo.org/packages/&amp;quot;)&lt;br /&gt;
                          (&amp;quot;MELPA&amp;quot; . &amp;quot;http://melpa.milkbox.net/packages/&amp;quot;)))&lt;br /&gt;
 (package-initialize)&lt;br /&gt;
Рекомендую использовать только MELPA, т.к. он содержит большое количество популярных пакетов и автоматически обновляет их из github и других репозиториев.&lt;br /&gt;
&lt;br /&gt;
Для просмотра списка доступных пакетов есть команда:&lt;br /&gt;
;M-x package-list-packages RET&lt;br /&gt;
:скачивает и выводит список пакетов доступных на сервере.&lt;br /&gt;
В буфере со списком переназначены следующие клавиши:&lt;br /&gt;
;r&lt;br /&gt;
:обновляет список доступных пакетов.&lt;br /&gt;
;U&lt;br /&gt;
:'update'(обновить), отмечает для установки новые версии установленных пакетов(а устаревшие отмечает для удаления)&lt;br /&gt;
;I&lt;br /&gt;
:отметить пакет, на строке которого стоит курсор, для установки&lt;br /&gt;
;d&lt;br /&gt;
:отметить для удаления&lt;br /&gt;
;u&lt;br /&gt;
:снять отметку&lt;br /&gt;
;x&lt;br /&gt;
:начать установку/удаление отмеченных пакетов.&lt;br /&gt;
;q&lt;br /&gt;
:выход.&lt;br /&gt;
&lt;br /&gt;
Если вы точно знаете название пакета, можно сделать проще: '''''M-x package-install [имя пакета] RET'''''.&lt;br /&gt;
&lt;br /&gt;
Можно установить elisp модуль и в 'оффлайне', с вашего жёсткого диска/карты памяти, для этого тоже есть команда:&lt;br /&gt;
'''''M-x package-install-file [путь к файлу] RET'''''.&lt;br /&gt;
&lt;br /&gt;
Список полезных 'плагинов' и их настройки см [http://www.linux.org.ru/wiki/en/Emacs/Packages Emacs Packages].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Авто -дополнение, -завершение кода, автокомплит===&lt;br /&gt;
&lt;br /&gt;
[http://www.linux.org.ru/wiki/en/Emacs/Packages#company-mode company-mode]&lt;br /&gt;
&lt;br /&gt;
[http://www.linux.org.ru/wiki/en/Emacs/Packages#auto-complete-mode auto-complete-mode]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Использование сторонних elisp модулей без пакетной системы===&lt;br /&gt;
&lt;br /&gt;
[http://www.linux.org.ru/wiki/en/Emacs_Lisp#Модули Emacs Lisp и модули].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Привязка функций к клавишам===&lt;br /&gt;
&lt;br /&gt;
 (global-set-key &amp;quot;\C-xl&amp;quot; #'make-symbolic-link)&lt;br /&gt;
Привязали make-symbolic-link к '''''C-x l''''' глобально.&lt;br /&gt;
 (define-key lisp-mode-map &amp;quot;\C-xl&amp;quot; #'make-symbolic-link)&lt;br /&gt;
То же самое, но только для режима lisp-mode.&lt;br /&gt;
 (global-unset-key &amp;quot;\C-x\C-v&amp;quot;)&lt;br /&gt;
Разбиндиваем сочетание '''''C-x C-v'''''.(есть также local-unset-key)&lt;br /&gt;
&lt;br /&gt;
Также для простоты написания сочетаний клавиш есть функция kbd:&lt;br /&gt;
 (global-set-key (kbd &amp;quot;C-x l&amp;quot;) #'make-symbolic-link)&lt;br /&gt;
 (global-unset-key (kbd &amp;quot;C-x C-v&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
Привязать к клавише можно только интерактивную команду, т.е. функцию, первым выражением которой явлется&lt;br /&gt;
 (interactive)&lt;br /&gt;
с параметрами или без.&lt;br /&gt;
&lt;br /&gt;
Например для лямбд:&lt;br /&gt;
  (global-set-key [tab] #'(lambda () (interactive) (insert &amp;quot;    &amp;quot;)))&lt;br /&gt;
&lt;br /&gt;
Также по историческим причинам в емакс есть два способа для обозначения клавиши табуляции:&lt;br /&gt;
# с помощью '''''[tab]''''' -- означает табуляцию в графическом режиме.(в иксах)&lt;br /&gt;
# с помощью '''''(kbd &amp;quot;TAB&amp;quot;)''''' -- для режима текстового терминала&lt;br /&gt;
(источник https://github.com/company-mode/company-mode/issues/75#issuecomment-37341730)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Если что-то не работает или Debug===&lt;br /&gt;
&lt;br /&gt;
[http://www.linux.org.ru/wiki/en/Emacs_Lisp#Debug Emacs Lisp и Debug].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Примеры готовых конфигураций===&lt;br /&gt;
&lt;br /&gt;
https://github.com/Bad-ptr/.emacs.d&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Emacs daemon==&lt;br /&gt;
&lt;br /&gt;
Emacs может быть запущен в режиме демона. Например, чтобы каждый раз не запускать Emacs заново, особенно когда в вашем конфигурационном файле накапливается много кода и Emacs стартует довольно медленно, ну или для совместного редактирования файла по сети или ещё для чего.&lt;br /&gt;
Делается это так:&lt;br /&gt;
emacs --daemon&lt;br /&gt;
Дальше для редактирования файлов следует использовать клиент:&lt;br /&gt;
emacsclient /path_to/file&lt;br /&gt;
или emacsclient -c для создания графического фрейма или emacsclient -nw для фрейма в текстовом терминале.&lt;br /&gt;
emacsclient также имеет параметр '''''-a''''', задающий команду, которая будет запущена если сервер не найден, если параметр не задан или равен &amp;lt;nowiki&amp;gt;''&amp;lt;/nowiki&amp;gt;(пустая строка), то сначала будет запущен сервер.&lt;br /&gt;
&lt;br /&gt;
Это упрощённый сценарий. На самом деле можно запустить несколько демонов для этого нужно задать им имена, делается это так:&lt;br /&gt;
 emacs --daemon=test&lt;br /&gt;
Этой командой мы запустили демон емакса с именем тест. Кстати по умолчанию, если имя через = не задавать, оно считается =server, т.е.:&lt;br /&gt;
 emacs --daemon&lt;br /&gt;
тоже самое, что&lt;br /&gt;
 emacs --daemon=server&lt;br /&gt;
Теперь подключаемся к серверу test:&lt;br /&gt;
 emacsclient --socket-name=test -c&lt;br /&gt;
(вместо --socket-name можно -s)&lt;br /&gt;
&lt;br /&gt;
По умолчанию Emacs использует unix сокет для коммуникации между сервером и клиентом. Однако возможно наладить связь через TCP соединение, для этого демон запускаем так:&lt;br /&gt;
 emacs --daemon=test --eval '(setq server-use-tcp t)'&lt;br /&gt;
(в этом случае появляется файл с именем сервера в ~/.emacs.d/server/test, а (setq server-use-tcp t) можно конечно же поместить в ~/.emacs, вместо передачи через --eval)&lt;br /&gt;
Теперь демон будет ждать клиентов на tcp порту, который тоже можно задать с помощью:&lt;br /&gt;
 (setq server-port 40444);;например&lt;br /&gt;
И подключаться клиентом так:&lt;br /&gt;
 emacsclient --server-file=test -c&lt;br /&gt;
(вместо --server-file можно -f)&lt;br /&gt;
&lt;br /&gt;
Всё это можно оформить в виде bash скрипта:&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 # https://gist.github.com/Bad-ptr/7628186&lt;br /&gt;
 &lt;br /&gt;
 DAEMON='server';&lt;br /&gt;
 &lt;br /&gt;
 if [ -n &amp;quot;$1&amp;quot; ];&lt;br /&gt;
 then&lt;br /&gt;
     DAEMON=&amp;quot;$1&amp;quot;&lt;br /&gt;
 fi&lt;br /&gt;
 &lt;br /&gt;
 emacsclient -f &amp;quot;$DAEMON&amp;quot; -a false -e 't';&lt;br /&gt;
 &lt;br /&gt;
 if [ &amp;quot;$?&amp;quot; -eq 1 ];&lt;br /&gt;
 then&lt;br /&gt;
     #rm ~/.emacs.desktop.lock&lt;br /&gt;
     rm &amp;quot;~/.emacs.d/server/$DAEMON&amp;quot;&lt;br /&gt;
     emacs --daemon=&amp;quot;$DAEMON&amp;quot; --eval '(setq server-use-tcp t)' &amp;quot;${@:2}&amp;quot; &amp;lt;/dev/null&lt;br /&gt;
 else&lt;br /&gt;
     emacsclient -f &amp;quot;$DAEMON&amp;quot; -a false -e '(kill-emacs)' &amp;lt;/dev/null &lt;br /&gt;
 fi&lt;br /&gt;
Использовать так:&lt;br /&gt;
 ./startkillemacsd test&lt;br /&gt;
Запустит Emacs демон test, если он ещё не запущен, если уже запущен -- то завершит его.&lt;br /&gt;
&lt;br /&gt;
Подключится к серверу test можно так: '''''emacsclient -f test -c''''' .&lt;br /&gt;
&lt;br /&gt;
==Полезные ссылки==&lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/user/dbushenko/videos видеоуроки на русском от некоего Дмитрия Бушенко]&lt;br /&gt;
&lt;br /&gt;
[http://emacslife.com/ emacslife.com]&lt;br /&gt;
&lt;br /&gt;
[http://emacs.sexy/ emacs.sexy]&lt;br /&gt;
&lt;br /&gt;
[http://www.emacswiki.org/ emacswiki.org]&lt;br /&gt;
&lt;br /&gt;
[http://tuhdo.github.io/index.html Emacs mini manual]&lt;br /&gt;
&lt;br /&gt;
[http://www.masteringemacs.org/ masteringemacs.org]&lt;br /&gt;
&lt;br /&gt;
[http://ergoemacs.org/emacs/emacs_editing_lisp.html How to Edit Lisp Code with Emacs от Xah Lee]&lt;br /&gt;
&lt;br /&gt;
[https://plus.google.com/u/0/communities/114815898697665598016 Emacs сообщество в G+]&lt;br /&gt;
&lt;br /&gt;
[http://bzg.fr/emacs-strip-tease.html emacs-strip-tease]&lt;br /&gt;
&lt;br /&gt;
[http://emacsredux.com/blog/2014/01/01/a-peek-at-emacs-24-dot-4-rectangular-selection/ rectangular-selection в Emacs 24.4]&lt;br /&gt;
&lt;br /&gt;
[http://www.skybert.net/emacs/java/ Emacs и Java с помощью emacs-eclim]&lt;br /&gt;
&lt;br /&gt;
[http://a-nickels-worth.blogspot.co.uk/2007/11/effective-emacs.html effective-emacs]&lt;br /&gt;
&lt;br /&gt;
[http://milkbox.net/note/single-file-master-emacs-configuration/ single-file-master-emacs-configuration]&lt;/div&gt;</summary>
		<author><name>lor&gt;Cetjs2</name></author>
	</entry>
</feed>