8 в каком файле хранятся настройки редактора emacs
emacs — один из наиболее мощных и широко распространённых редакторов, используемых в мире UNIX . По популярности он соперничает с редактором vi и его клонами.
В зависимости от ситуации, emacs может быть:
программой для чтения почты и новостей Usenet;
интегрированной средой разработки (IDE);
всем, чем угодно.
Всё это разнообразие достигается благодаря архитектуре emacs , которая позволяет расширять возможности редактора при помощи языка Emacs Lisp. На языке C написаны лишь самые базовые и низкоуровневые части emacs , включая полнофункциональный интерпретатор языка Lisp. Таким образом, emacs имеет встроенный язык программирования, который может использоваться для настройки, расширения и изменения поведения редактора. В действительности, большая часть того редактора, с которым пользователи emacs работают в наши дни, написана на языке Lisp.
emacs является одним из старейших редакторов. Он использовался тысячами программистов на протяжении последних 20 с лишним лет, для него создано много дополнительных пакетов расширений. Эти дополнения позволяют делать с помощью emacs такие вещи, которые Столман, вероятно, даже не считал возможными в начале своей работы над редактором. Более подробно я расскажу о них в следующих разделах.
Разновидности emacs
Существует две основных разновидности emacs — GNU Emacs и XEmacs. GNU Emacs — это развитие оригинальной версии emacs , написанной Столманом, а XEmacs — это версия с некоторыми добавлениями к интерфейсу и языку Emacs Lisp. О причинах, по которым образовалось две версии, можно прочесть по этому адресу. В большинстве случаев их поведение похоже друг на друга, но есть и некоторые отличия. Поэтому некоторые пакеты расширений могут работать только с конкретной версией emacs .
Кроме двух основных версий существует и множество других редакторов, считающихся вариантами emacs . Полный их список можно найти на странице Emacs Implementations and Literature.
В данном документе я буду рассказывать, прежде всего, о GNU Emacs , входящем в поставку Junior. Однако большая часть сказанного применима и для XEmacs, а также для версий emacs в других дистрибутивах Linux .
Файл конфигурации .emacs
После того, как Вы успешно установили GNU Emacs на свой компьютер, необходимо создать файл с названием .emacs и уже в нем прописать основные настройки.
Обозначения, используемые в статье (повторение — мать учения):
- C-a: Ctrl-a;
- M-a: Meta-a (Если у Вас нет клавиши Meta (Alt), используете клавишу Esc);
- C-M-a: Ctrl-Meta-a.
Для начала, расскажем Emacs о том, в какой операционной системе он запустился. Для этого напишем на elisp две функции, которые нам в этом помогут:
Теперь, вызывая эти функции как условия для операторов ветвления, мы можем настроить кроссплатформенный файл конфигурации для Emacs (результатом наших трудов будет файл .emacs, который прекрасно работает в ОС MS Windows и дистрибутивах GNU/Linux. На Mac OS X не проверял).
Разновидности emacs
Существует две основных разновидности emacs — GNU Emacs и XEmacs. GNU Emacs — это развитие оригинальной версии emacs , написанной Столманом, а XEmacs — это версия с некоторыми добавлениями к интерфейсу и языку Emacs Lisp. О причинах, по которым образовалось две версии, можно прочесть по этому адресу. В большинстве случаев их поведение похоже друг на друга, но есть и некоторые отличия. Поэтому некоторые пакеты расширений могут работать только с конкретной версией emacs .
Кроме двух основных версий существует и множество других редакторов, считающихся вариантами emacs . Полный их список можно найти на странице Emacs Implementations and Literature.
В данном документе я буду рассказывать, прежде всего, о GNU Emacs , входящем в поставку Junior. Однако большая часть сказанного применима и для XEmacs, а также для версий emacs в других дистрибутивах Linux .
IDE для Common Lisp
Для превращения Emacs в полноценную среду разработки для языка Common Lisp нам понадобится два пакета:
- реализация Common Lisp. Я выбрал SBCL; — режим Emacs для разработки приложений на языке Common Lisp.
- скачать SBCL;
- установить в C:\sbcl\ скаченный SBCL;
- скачать Slime;
- разместить в C:\slime\ скаченный Slime.
Установка
-
архив с официального сайта;
- создать директорию C:\emacs\ и распаковать в него скаченный архив;
- запустить файл C:\emacs\bin\addpm.exe (создаст пункт в меню Пуск для запуска Emacs).
-
в терминале выполнить команду:
- посмотри тут;
- или здесь;
- можно глянуть вот сюда.
Полезные ссылки
Множество полезных статей по GNU Emacs на Хабрахабр. Также есть серия замечательных скринкастов на YouTube про Emacs, опубликованных Дмитрием Бушенко:
Cерия скринкастов (на англ. языке) Emacs Rocks.
Невероятно огромная, подробная и полезная статья (на англ. языке): Sacha Chua's Emacs configuration.
Огромное разнообразие цветовых тем для Emacs. Смотреть тут.
Чтобы не оставить без внимания пользователей другого редактора — Vim, вот ссылка на мой .vimrc на GitHub. Там все подробно описано (если что, могу и по Vim статью написать. ).
Что делать с кастомными настройками (custom-file назначил в ~/.emacs.d/custom.el) emacs? Правильно ли пользоваться «визуальной» настройкой customize-group для постоянного сохранения? Или стоит вытаскивать их из custom.el после обкатки и добавлять в свою секцию .emacs конфига?
Читал много рекомендаций использовать customize-group. Но в этом случае свои настройки разбредуться по разным местам: в .emacs что-то добавляется руками, в custom.el лежат другие настройки. Возможно дублирование!
Пока ко мне не пришло видение Конфига. Cделал разные ~/.emacs.d/rc/*.el и гружу их в .emacs, вместо кучи всего в .emacs. Но custom.el меня смущает. customize-group удобная штука, но мешает все карты моих конфигов %)
Или стоит вытаскивать их из custom.el после обкатки и добавлять в свою секцию .emacs конфига?
я примерно так и делаю, только конфиг разбит по категориям
Пока ко мне не пришло видение Конфига. Cделал разные ~/.emacs.d/rc/*.el и гружу их в .emacs, вместо кучи всего в .emacs.
вот, как-то так, да, только загружаемые конфиги сделаны симлинками (чтобы было проще включать/выключать) их соседнего каталога, в котором лежат все *el файлы
custom.el меня смущает. customize-group удобная штука, но мешает все карты моих конфигов %)
просто иногда нужно этот custom вычищать
Я стараюсь всё что можно настраивать графически через Customize - как раз ради единообразия. Всё-равно некоторые настройки явно указаны в документации, как рекомендованные к изменению только через Customize.
А можно про симлинки на .el подробнее?
Но у меня проблема в том, что не все можно сделать в customize. Xуки для какого-нибудь модуля пишутся в .emacs (или другом .el), подключаются и тюнятся. И разброс логически связанных настроек по разным местам огорчает + конфликты, если вдруг переопределится переменная в custom.el.
И так же отсутствует человеческое форматирование кода в сгенеренном custom.el
Ох, чую будет еще это customize развиваться, ибо сейчас почти неюзабельно. Единственный плюс - узнаю о новых настройках
Посмотри в сторону prelude. я свой конфиг поверх оного сделал, ибо значительная часть настроек по-умолчанию устраивает.
И разброс логически связанных настроек по разным местам огорчает
у меня customize просто пишет в хвост того же .emacs.d/init.el где я держу свои настройки - так что всё в одном месте.
отсутствует человеческое форматирование кода в сгенеренном custom.el
не представляю как ты этого добился - в init.el всё пишется во вполне читаемом, кошерном стиле.
Видимо ничем не помогу - у меня просто не возникает таких проблем, хотя версия емакса та же. Может оно как-то связано с тем, что у меня отдельная директория .emacs.d и используется init.el? Но по идее это же не должно влиять.
всё пишется во вполне читаемом, кошерном стиле.
Вот, что бы не быть голословным, что меня беспокоило. Отсортировано по алфавиту. Списки форматированы в одну строчку.
Буду оттуда вытаскивать в отдельные .el
А prelude этот - он под разработку на C++ не затачивался, я так понимаю? Но остальное в нем полезное, как я погляжу.
Наверно, cedet рядом с ним нормально встанет, не знаешь?
чудесатая штука этот ваш емакс - от него может быть довольно много проку благодаря всяким примочкам для работы с текстом (особенно для тех, кто много работает с необычными, но повторяющимися конструкциями), но в то же время в нём всё сделано для того, чтобы его использование было сопряжено с максимальным кол-м PAIN.
поэтому нормальные люди и пользуются редактором - пусть даже для него не сделаны какие-то супер-навороченные инструменты. а иногда и сделаны.
Уже первая фраза говорит, что с емакс не знаком. и дальше можно не читать.
его использование было сопряжено с максимальным кол-м PAIN
Допустим, emacs - набор (удобных) костылей. Но в чем именно «pain»? Никто же не заставляет крутить все ручки, можно пользоваться как редактором.
Если про «распальцовку», то есть viper/vimpulse(-surround) (дополнительные костыли) или modal-mode (но его поди допили до привычного уровня удобства).
Сейчас evil самая последняя и крутая реализация Вима.
Посоветую тебе такую вещь - (require 'initsplit). Идея в том, что ты задаешь туда регэкспы в названиях переменных и он сам раскидывает их по соответсвующим файлам. Пример конфигурации:
То есть переменные из custom для gnus автоматически в gnus-init.el пойдут и далее по списку. Не знаю, есть ли альтернативы у initsplit. Сто лет назад себе поставил и радуюсь.
таки да. чтобы прошло, стоит сделать так, как сказано здесь
Кстати да, ладонью нажимать тоже вариант, надо попробовать. Сейчас контрол на виндовой клавише, вполне сносно.
Правильно ли пользоваться «визуальной» настройкой customize-group для постоянного сохранения? Или стоит вытаскивать их из custom.el после обкатки и добавлять в свою секцию .emacs конфига?
Визуальная настройка не Ъ. Вытаскивать ничего не надо, надо читать документацию и прописывать вручную.
Я перебросил Ctrl на Alt, Alt на Win. Теперь все Ctrl-комбо нажимаются безымянным, а с Alt - мизинцем (их меньше, чем с Ctrl), причем можно делать с обеих рук.
Почему не Ъ? Какие минусы?
О том какие бывают настойки и как именно их настраивать стоит смотреть собственно в исходнике настраиваемого модуля и/или в его документации.
О том как лучше организовывать конфиг стоит посмотреть например, в starter-kit, prelude и/или в конфигах опытных емаксеров.
Теперь все Ctrl-комбо нажимаются безымянным
А почему не большим, удобнее же?
Текстовый редактор настраивать не текстом таки не Ъ.
Мне нравится, как настройки разбросаны в emacs starter kit. При запуске читается файл ~/.emacs.d/%username%.el и все файлы ~/.emacs.d/%username%/*.el .
моя спасиба огромна!
Ты хоть о слепой печати слышал, болезный ты наш?
Не только слышал, но и во всю применяю. Большие пальцы на пробеле, сдвинуть к Alt очень легко. Гораздо удобнее чем безымянным.
По твоим ссылкам про большие пальцы говорится. Да и вообще так все делают.
Гм, не обратил внимание, что говорится про большие пальцы (thumbs). Спасибо, нужно опробовать.
По результатам моего предыдущего треда таки решил попробовать осилить этот вселенский комбайн. Открыл первую попавшуюся статью по установке и настройке сабжа, скопипастил некоторое количество строчек в конфиг. Но я не хочу лазеть по всему интернету, отыскивая способы удовлетворить мои хотелки. Поэтому сразу спрошу тут:
- Можно ли отключить вообще все дефолтные хоткеи (как в mpv no-input-default-hotkeys) и просто поставить свои ? А именно:
- Ctrl-s — сохранить
- Shift-Ctrl-s — сохранить как
- Ctrl-c/v — копировать/вставить
- Ctrl-x — вырезать
- Ctrl-z — отменить последнее действие
- Ctrl-f — поиск
- Ctrl-w — закрыть текущую вкладку
- Alt-1/2/. /0 — навигация по вкладкам
- Ctrl-q — выход
Сокрее всего тема будет ещё дополняться по мере поступления хотелок.
как приходится страдать тулкитофобам, отворачивающимся от богини Kate)
cua-mode возможно. Но никтогда не понимал людей, тащущих legacy своих привычек.
Где взять нормальную цветовую схему (светлую) с минимальным набором цветов (чтобы в разных типах файлов исользовались одни цвета для подсветки синтаксиса) ? Ну или хотяб какую взять за основу, чтобы не пришлось бoльшую часть менять ?
Solarized Light, имхо, единственная нормальная светлая тема. Темных же хороших дофига.
Где взять нормальную превьюшку кода (code minimap) ? Просто превью кода в правом углу, без всяких прозрачностей, надписей, автоскрытий и т.д. Чтобы работала как скроллбар.
Стоит он уже. Но там только половина хоткеев соответствует нормальным. Я очень долго не мог врубиться, почему по ctrl-s открывается поиск, а не сохраняется файл. Оказалось, надо было сначала нажать ctrl-x, а потом уже ctrl-s. Ну что за бред ? Нажимать 2 хоткея для того, чтобы просто сохранить файл.
тебе не нужен емакс
Solarized не хочу. Не нравятся мне её цвета. А стимул менять bg- и fg-цвета, только если там, как я ранее говорил, подсетка систаксиса у разных типов файлов использует одинаковые цвета.
Текстовые редакторы: куда валить.
По итогам, emacs более всего подходт моим запросам только из-за своей кастомизируемости.Не люблю я маны читать. Там обычно просто куча нафиг не нужной мне информации и нужную приходится очень долго и упорно выискивать, а может случиться и так, что её вообще там нет.
Не люблю я маны читать. Там обычно просто куча нафиг не нужной мне информации и нужную приходится очень долго и упорно выискивать
поэтому ты решил потратить время других людей, даже не попытавшись разобраться? Давай, до свиданья!
1) в емакс лютое ШГ и нет табов(те что есть ещё лютее чем шг)
2) емакс забагован и лагает
3) емакс неплох, но в нём не достаёт многих нужных функций
4) Emacs — миллионы лет проводить за чтением документации и привыканию к тонне хоткеев.
5) У емакс просто недостаточно функционала.1. Можно, кроме пожалуй навигации по вкладкам. Как то так:
Технически зажимаешь C, а потом последовательно x, s.
Лан, тебе проще взять atom или sublime, они вполне ничего и придерживаются привычных стандартов.Не подходят. Один жудко лаганое-баганое нечто, а у вотрого шг.
здесь 2 — ширина курсора в пикселях.
для каких языков?
f1u77y ★★★ ( 03.10.15 21:47:46 )
Последнее исправление: f1u77y 03.10.15 21:57:07 (всего исправлений: 1)Для большинства популярных.
там в списке выбери автокомплит для интересующих тебя языков. обычно начинается с auto-complete или ac-
Можно ли отключить вообще все дефолтные хоткеи (как в mpv no-input-default-hotkeys) и просто поставить свои ?
Можно переопределить, но не стоит. Почему? Да потому что ты замучаешься потом переопределять всё на свете.
К примеру, C-s (Ctrl-S который ты называешь) - это дефолтный поиск. Проще себя переучить на emacs'овские хоткеи чем переопределять всё подряд потом.
Но если сильно надо, то
Но, повторю ещё раз. Не делай так. Т.к. ты только с биндингами будешь возиться часами тогда.
Alt-1/2/. /0 — навигация по вкладкам
Как сделать, чтобы под меню отображались табы, как в большинстве текстовых редакторов ?Нафига? Табы нужны для того, чтобы тыкать в них мышкой. В управляемых с клавиатуры редакторах это просто не нужно.
buffer-menu вызови и листани там. Хоткей я выше привёл.
Как сделать, чтобы при запуске открывалась последняя сессия ?
Как убрать символ (или иконку, не знаю) стрелочки, когда строка не вмещается по ширине ?
(setq-default truncate-lines 0)
Как настроить автокомпит с подсветкой возможных вариантов ?
Кури company или auto-complete мод (нужно что-то одно).
P.S. Заюзай (ido-mode t) и будет тебе счастье при открытии файлов :)
Norgat ★★★★★ ( 03.10.15 23:03:05 )
Последнее исправление: Norgat 03.10.15 23:05:21 (всего исправлений: 1)Можно не делать push для каждого репа, а просто
А сам код настроек хранить не в .emacs, а, например, в .emacs.d/init.el. В .emacs же добавить (load «~/.emacs.d/init.el»). Т.к. в .emacs же сам emacs пихает настройки тем, шрифтов и т.п. (которые генерит по менюшке). Мешать же автосгенерированный код и самописный в большом количестве как-то не айс.
Norgat ★★★★★ ( 03.10.15 23:06:08 )
Последнее исправление: Norgat 03.10.15 23:09:15 (всего исправлений: 2)А сам код настроек хранить не в .emacs
фейл. при этом у меня самого всё в init.el
да, но я просто скопипстил из своего конфига, в котором у меня вещи есть и похуже этого
Да потому что ты замучаешься потом переопределять всё на свете
А мне всё на свете и не нужно. Не хочу, чтобы было так, что случайно не тот хоткей нажал и произошла какая-то неведомая фигня.
Нафига? Табы нужны для того, чтобы тыкать в них мышкой. В управляемых с клавиатуры редакторах это просто не нужно. buffer-menu вызови и листани там. Хоткей я выше привёл
Лично я уже не могу без табов. Менюшка слева будет кучу места занимать.
Т.к. в .emacs же сам emacs пихает настройки тем, шрифтов и т.п.
Я один не нашёл, как в эмаксе сменить шрифт через гуй, чтобы код в конфиге сам сгенерировался ?
фиг знает, но зачем, если можно написать
Менюшка слева будет кучу места занимать
она вылезает только когда нужно
Тогда это уже не будет автосгенерированный код, ты же его сам впишешь
Лично я уже не могу без табов. Менюшка слева будет кучу места занимать.
Аналогично можно сделать вызвав M-x buffer-menu
И у тебя, в текущем окошке, открывает список буфферов, где сверху вниз они отсортированы по последнему использованию. Кинуть buffer-menu на хоткей и пользоваться - очень удобно, т.к. переключение между буфферами можно сделать нажатием пары клавишь. И никакие древовидные Project viewer не нужны.
не, ок, но зачем пытаться найти это в гуевом конфиге? по крайней мере мне он показался до жути неудобным.
Мне удобнее когда всегда видны табы, чем каждый раз включать и выключать менюшку
Я один не нашёл, как в эмаксе сменить шрифт через гуй, чтобы код в конфиге сам сгенерировался ?
Угу. Options -> Set default font и вылазит окошко выбора шрифта с предпросмотром, выбором размера и начертания.
Выбрал, потыкал - жми Options -> Save options.
Мне удобнее когда всегда видны табы, чем каждый раз включать и выключать менюшку
А теперь выдумай объяснение нафига они тебе, если ты НЕ ДОЛЖЕН юзать мышку?)
идеологии не нужны
не, ок, но зачем пытаться найти это в гуевом конфиге?
Реакция любого нормального человека при виде ШГ — попытаться это ШГ убрать. А в емаксе по дефолту вообще не читаемое ШГ. Наверное, во всех текстовых редакторах шрифт настраивается через гуй (даже в ST открывается конфиг в нужном месте и можно туда этот шрифт вписать). На тот момент я даже не знал, в каком файле хранятся настройки emacs'a.
по крайней мере мне он показался до жути неудобным
Тогда нафига emacs? Если не лень тыкать мышкой, то я открываю саблайм и не переживаю по этому поводу. А vim\emacs и нужны тогда, когда мышки нет\лень её юзать совсем. Иначе вообще какой смысл всё это затевать? Разве что для Common Lisp\Clojure\etc, где альтернатив для emacs либо нет, либо они так себе.
Norgat ★★★★★ ( 03.10.15 23:35:42 )
Последнее исправление: Norgat 03.10.15 23:36:15 (всего исправлений: 1)Поехали дальше
Если Вы счастливый пользователь Mac OS X или дистрибутива GNU/Linux, то Emacs полезно запустить как сервер:
Далее, укажем Emacs пути по которым но сможет найти установленные дополнения (в частности, пакеты Slime и SBCL):
Давайте расскажем Emacs о том, кто мы такие (мало-ли, решите через Emacs почту отправлять или в jabber'e переписываться. ):
Мой любимый dired-mode. Настроим его:
Теперь можно запустить dired-mode комбинацией клавиш C-x d. Для удаления папки в dired-mode наведите курсор на эту папку, нажмите d, затем x. Чтобы убрать с папки отметку на удаление нажмите u.Замечательный способ «прыгать» по определениям функций почти для всех языков программирования — Imenu. Предположим, что у Вас файл с программой на
100500строк с кучей функций. Не беда! Нажимаем F6 и в минибуфере вводим часть имени искомой функции и TAB'ом дополняем. Нажали Enter — и мы на определении искомой функции:
Пишем название открытого буфера в шапке окна:
Помните, что мы определили пути, по которым Emacs ищет дополнения и внешние программы? Пусть «пройдется» по этим путям (где дополнения) при запуске:
Еще не забыли, что Emacs предоставляет Вам прекрасную среду для plain/text заметок (organizer), ведения справочной информации, управления проектами, организации базы знаний и т.д. — org-mode? Настроим:
Наведемаскетизмкрасоту — уберем экраны приветствия при запуске:
Выделим выражения между <>,[],(), когда курсор находится на одной из скобок — полезно для программистов:
В новых версиях Emacs внедрили electic-mod'ы. Первый из них автоматически расставляет отступы (работает из рук вон плохо), второй — закрывает скобки, кавычки и т.д. Отключим первый (Python программисты меня поймут. ) и включим второй:
Хотим иметь возможность удалить выделенный текст при вводе поверх? Пожалуйста:
Уберем лишнее: всякие меню, scroll-bar'ы, tool-bar'ы и т.п.:
Самое больное и сложное место в настройке — кодировки:
Включаем нумерацию строк:
Продолжаем наводить красоту:
Автоматический перенос длинных строк:
Определим размер окна с Emacs при запуске:
Интерактивный поиск и открытие файлов? Пожалуйста:
Быстрая навигация между открытыми буферами:Цветовые схемы. Как без них? Для этого:
- скачаем пакет color-theme для Emacs отсюда;
- создадим директории .emacs.d/plugins/color-theme;
- распакуем туда содержимое архива с темами;
- расположить папку .emacs.d в:
- для MS Windows в корень диска C:\.emacs.d
- для GNU/Linux в домашнюю директорию ~/.emacs.d
Общий с ОС буфер обмена:
Настройки пустых строк в конце буфера:
Выделять результаты поиска:
Перемещение между сплитами при помощи комбинаций M-arrow-keys (кроме org-mode):
Удалить лишние пробелы в конце строк, заменить TAB'ы на пробелы и выровнять отступы при сохранении буфера в файл, автоматически:
Пакет CEDET — работа с C/C++/Java (прекрасная статья Alex Ott'a по CEDET):
Автодополнение ввода. Для этого:- скачаем пакет auto-complete для Emacs отсюда;
- создадим директории .emacs.d/plugins/auto-complete;
- распакуем туда содержимое архива с auto-complete;
- расположить папку .emacs.d в:
- для MS Windows в корень диска C:\.emacs.d
- для GNU/Linux в домашнюю директорию ~/.emacs.d
Настроим среду для Common Lisp — Slime:
Настроим Bookmark — закладки, которые помогают быстро перемещаться по тексту:
Собственно, всё! Можно нажать C-x C-s и сохранить файл .emacs. Куда положить файл .emacs и папку .emacs.d (если использовать пути из моего .emacs):- .emacs в C:\Users\%username%\AppData\Roaming\
- папку .emacs.d в корень диска C:\
- .emacs в домашнюю директорию: /home/%username%/
- папку .emacs.d в домашнюю директорию: /home/%username%/
Основы работы с emacs
Используемая терминология
В этом разделе описываются термины emacs , с которыми вы встретитесь при использовании редактора.
Буфер — это основная единица редактирования; один буфер соответствует одному куску редактируемого текста. Вы можете иметь несколько буферов, но в каждый конкретный момент вы редактируете только один выбранный буфер. При этом, разумеется, если вы используете несколько окон, то видимыми могут быть несколько буферов. Чаще всего буферы обращаются к какому-либо файлу, считывая данные из файла в буфер, или записывая данные из буфера в файл.
Точка, область и метка
Точка (point) — это место в буфере, в котором происходит вставка или удаление данных. Считается, что точка находится между двумя знаками, а не на каком-то одном из них. Например, если курсор находится на букве « h » в слове « the », то точка находится между « t » и « h ». Курсор терминала показывает положение точки.
Как и другие современные редакторы, emacs позволяет выполнять разные действия над фрагментами текущего буфера — изменение отступа, проверку орфографии, переформатирование, вырезание, копирование, вставку и т.д. вы можете подсветить (или « пометить ») блок текста, используя клавиатуру или мышь, а затем выполнить операцию только над выделенным блоком. В emacs такой блок текста называется область (region) . Область — это текст между точкой и меткой.
Метка указывает на позицию в тексте. Она определяет один конец области, в то время как точка находится на другом конце области. Многие команды работают с текстом целиком от точки до метки. Каждый буфер имеет свою метку.
Окно в emacs — это область экрана, в которой отображается буфер. Когда emacs запускается, у вас на экране отображается одно окно. При обращении к некоторым функциям emacs (таким, как оперативная справка и интерактивная документация) часто (временно) открываются дополнительные окна на экране emacs .
Окна emacs не имеют ничего общего с окнами графической среды X Window. Одно окно X Window может быть разбито на несколько окон в смысле emacs , в каждом из которых отображается отдельный буфер. Однако вы можете открывать для отображения буферов emacs и дополнительные окна X, например, при сравнении двух файлов. Эти новые окна X в жаргоне emacs называются фреймами .
Фрейм ( frame ) — это отдельное окно используемой оконной системы, в котором отображаются одно или несколько окон emacs . При этом несколько фреймов, открытых одновременно, являются частью одного сеанса emacs .
Начну с небольшой истории. Лет так 15 назад ездил я на подработку сисадмином программистом в славный городе Mannheim, West Germany. Когда я приехал на работу и развернул своё рабочее окружение, большинство дойчей вообще не сильно поняли в чём я работаю, а вот директор конторы сразу мне сказал: «Ist das Emacs? Sehr gut!», добавив также что никто кто из текущих программистов не смог его освоить. А по честному, не такой уж я особенный — мне просто повезло: готовый конфиг мне дал один добрый человек, и помог мне разобраться с редактором на первых шагах. Я, в свою очередь хочу поделиться своим опытом с остальными, и решил сделать серию статей для начинающих и не очень, с рассмотрением разных полезных фич emacs.
В этой статье я также хочу пошатнуть сложившийся миф — что Emacs — сложный в работе/настройке редактор. Я считаю, что правильно начав, процесс изучения не будет сложным, и надеюсь, доставит Вам массу удовольствия от использования удобного, мощного и быстрого инструмента как в работе так в жизни.
Первое — слабость emacs в его силе. Легкость освоения (learnability) пострадала от простоты переконфигурирования — каждый перестраивает радактор под себя, и часто настолько кардинально, что другой пользователь того же редактора может его не узнать.
Мой конфиг .emacs обростал новыми фичами последние 15 лет, и в этом одна из проблем Emacs: дать готовый конфиг в руки начинающему просто, а вот будет ли с этого толк? Расшарю я его допустим сейчас на Web (как впрочем уже давно собственно и сделано) как сотни других энтузиастов. Но, начинаещему это этого проку мало, т к скорее всего он сможет сделать только две вещи (из которых скорее всего не будет делать ни одну, по причине изначальной лени): (1) или взять конфиг целиком со всеми кастомными наворотами и дополнениями, или (2) попытаться скрестить «бульдога с носорогом» и надёргать рецептов из нескольких конфигов разных вендоров — а это долго, муторно.
Разрабочики Emacs пытаются снизить барьер входа новичков пытаясь выдать что то похожее на общепритяные стандарты (CUA mode: Ctrl+C, Ctrl+V, запись *scratch*, и т п) но этого явно мало для редактора с 20ти летней историей — барьер для освоения держится на высоте, отсекая новичков.
Я решил пойти другим путём и облегчить понимание того, насколько им нужна та или иная фича, сделав демонстрацию каждой. Вместо того, чтобы просто выложить свой конфиг (типа «кто надо тот разберётся») я постараюсь его сам разобрать по кусочкам, объяснив каждый отдельный модуль и настройку.
Ведь не бывает идеального конфига «для всех», и то, что хорошо для меня, может оказаться неудобным допустим тому же веб дизайнеру.
Поэтому, эта статья не будет описывать какую то отдельную фичу — я пройдусь по всем, удобным с моей точки зрения. Это будет [не]большой Tutorial который позволит выбрать то, что нужно каждому по отдельности.
Введение
В введении в emacs показан сам редактор, комбинации клавиш для начального изучения, и объяснения по ходу дела базовой концепции редактирования.
Изучение emacs чем-то сродни изучению иностранного языка: материала много, комбинации клавиш учить надо (не обязательно, но надо, если хотите, чтобы была практическая польза), некоторые новые концепции надо понять.
- C-x C-f — открыть файл
- C-x C-s — записать файл
- C-x C-c — выход из редактора
- C-x b — перейти в другой открытый файл
- C-x C-b — показать все открытые файлы,
- C-x k — закрыть файл (но не редактор)
- C-x 2 — разбить окно по горизонтали
- C-x 3 — разбить окно по вертикали
- C-x 0 — закрыть окно
- C-x 1 — оставить только одно открытое окно
После просмотра этого видео также рекомендую пройти английский туториал по emacs, который доступен в самом редакторе по клавише: C-h t.
IDO-mode
Удобный режим для быстрого доступа к файлам, открытым файлам, и другим спискам внутри редактора. В совокупности с активированным uniquify режимом позволяет *очень* быстро найти нужное.Особенности: по клавише C+ начинается ввод новой подстроки. По клавише C-f идёт fallback (возврат) на обычный (не-IDO) ввод.
Работа с файлами удалённо по протоколам SSH, FTP, Samba и т п
Возможно это не самая навороченная фича emacs, т к многие скажут что намного проще
зайти на удалённый сервер консолью и там уже всё отредактировать. Но консоль, увы не так удобна как GUI приложение, также часто файл удобнее и быстрее редактируется локально, и записывается уже результат, а не медленные нажатия клавиш в случае консоли. Открыв несколько файлов удалённо, легко можно перебрасывать куски текста любой длинны и содержания, избегая использования мышового буфера.В заключение
Emacs — действительно не сильно сложный редактор. Но это как раз тот пример, когда освоив минимум, нелья на этом останавливаться, ибо сила emacs — в доступных библиотеках и дополнительных функциях. Единственный способ добиться максимального результата — это выучить комбинации клавиш, названия функций и сами по себе концепции и функционал.
В следующих статьях по этой теме я опишу работу с Dired (файл менеджер), работу с системами контроля версий на примере SVN и Mercurial, работу по поиску текста (rgrep), закладки по тексту, интерактивный показ ошибок, среду разработки для Python и многое другое. Просьба коментировать какие именно дополнительные функции интересны.
Доброго времени суток, Читатель!
В данной статье хочу подробно рассказать про настройку текстового редактора GNU Emacs.
Операционная системаGNU Emacs — программируемый текстовый редактор для программистов, написанный на программируемом языке программирования.Для расширения Emacs используется диалект языка Lisp — Emacs Lisp.
Строго говоря, Emacs нельзя назвать просто текстовым редактором. Emacs — это интерпретатор языка Emacs Lisp, конструктор текстового редактора, заточенного именно под Вас. Малая часть программы реализована на языке Си (около 30% — отвечает за базовое взаимодействие с ОС, ввод-вывод, отрисовку окон), а весь основной функционал — на Emacs Lisp (далее, elisp). Именно такая архитектура отличает GNU Emacs от других профессиональных текстовых редакторов — он, до неприличия, расширяем.Функционал этого редактора настолько огромен и разнообразен, что новичку в этой среде крайне сложно освоиться. Чего стоит только процесс настройки — на это могут уйти годы,
или вся жизнь. Именно поэтому я решил написать эту статью — подробное руководство по начальной настройке Emacs, для тех кто:- хочет начать использовать GNU Emacs, но не знает как;
- пишет на языках, поддержка которых в IDE оставляет желать лучшего или её вообще нет;
- пишет на разных языках, «программист-полиглот»;
- хочет иметь универсальную среду разработки на работе и дома, на нескольких компьютерах сразу;
- хочет иметь функциональную и мощную среду для plain/text заметок (organizer), ведения справочной информации, управления проектами, организации базы знаний и т.д. — org-mode;
- хочет автоматизировать процесс обработки большого числа текстовых файлов;
- хочет иметь нетребовательную к аппаратным ресурсам, кроссплатформенную среду для работы с любой текстовой информацией;
- хочет среду, которую можно без особых усилий, буквально «на лету», настроить под себя, свою конкретную задачу, расширить, самостоятельно добавив новый функционал;
- любит универсальность и расширяемость;
- пишет для web, на скриптовых языках: Python, Ruby, Perl и т.п.;
- хочет приобщиться к вечному, к Emacs — одному из самых долгоживущих проектов Open Source сообщества;
Да. Вы не ошиблись. Фильм «Трон: Наследие». GNU Emacs используют и там. Кто бы мог подумать…Забыл предупредить: я пишу на Common Lisp (ещё один диалект языка Lisp), поэтому часть материала будет про то, как превратить Emacs в полноценную IDE
с картами и девушкамидля этого языка программирования. Хороший пример, к стати…Настройка
Есть, как минимум, четыре способа настройки Emacs:
- написанием конфигурационного файла .emacs;
- через меню программы;
- с помощью команды M-x customize (C-x означает Control-x, M-x означает Meta-x, где Meta может означать: «нажать-отпустить Esc» или «нажать-держать Alt». (например, Meta-x это или нажать Esc, затем x, или, удерживая Alt, нажать x);
сперетьпозаимствовать чужой файл .emacs и начать работать (не советую).
Читайте также: