- Краткое руководство по Emacs
- Содержание
- Комбинации клавиш
- Работа с файлами и буферами
- Удаленная работа с файлами
- Редактирование текста
- Другие возможности Emacs
- Дистрибутивы
- Дополнительные источники информации
- Emacs — четыре «пасхальных яйца» в OS X
- 1. Mud
- 2. Life
- 3. Tetris
- 4. Бесплатный психоаналитик
- Почему Emacs?
Краткое руководство по Emacs
Содержание
Emacs — интегрированная среда для выполнения большого количества типов задач. Это значит, что все инструменты редактирования, поиска, обработки текста, работы с файлами, доступны вам в любой момент независимо от того что вы делаете: пишете код или текст диссертации, читаете документацию, выполняете системные задачи, составляете своё расписание или пишете электронное письмо.
Постоянно используя Emacs, со временем вы понимаете, что в нем можно решать практически любые задачи. Зачастую проще и быстрее сделать что-то в Emacs чем изучать отдельную программу со своими возможностями по редактированию текста и комбинациями клавиш.
Если Emacs не может решить вашу задачу, вы можете использовать язык Emacs Lisp (Elisp) для настройки, автоматизации повседневных действий, а также для добавления новых или модификации существующих возможностей Emacs. Высокая расширяемость Emacs является излюбленной темой Интернет-фольклора (см. например рис. 1).
Emacs портирован на большое количество платформ, вы можете использовать один и тот же редактор (без изменения конфигурации) в GNU/Linux, BSD и других ОС семейства UNIX (в том числе Mac OS X), а также в Microsoft Windows.
Скачать копию Emacs можно с официального сайта проекта или установить с помощью пакетного менеджера вашего дистрибутива ОС.
Прямая ссылка на установщик Emacs версии 27.2 для Windows (64 бита): emacs-27.2-x86_64-installer.exe. Для удаленной работы с файлами (см. ниже) также потребуется установить PuTTY (скачать, используйте установочный файл msi).
Комбинации клавиш
Для управления Emacs обычно используются сочетания клавиш, включающие в себя клавишу CONTROL (иногда отмечаемая как CTRL или CTL) или клавишу META (иногда помеченную как ALT или EDIT). Вместо того, чтобы каждый раз писать META или CONTROL, мы будем использовать следующие сокращения:
- C- — следует удерживать клавишу CONTROL, пока набирается символ . Так, C-f означает: одновременно нажать клавиши CONTROL и f.
- M- — следует удерживать клавишу META, пока набирается символ . Если нет клавиши META, ALT или EDIT, то нажмите , отпустите ее, а потом наберите символ .
Многие действия в Emacs выполняются с помощью последовательного нажатия нескольких комбинаций клавиш. Например, открытие файла выполняется комбинацией C-x C-f . Выполнить такую комбинацию очень просто. Необходимо нажать CONTROL, затем x , затем f .
Если Emacs перестал реагировать на ваши команды, то вы можете вывести его из этого состояния нажав C-g . Вы можете также использовать C-g , чтобы остановить выполнение команд, которые слишком долго выполняются.
Комбинациям клавиш соответствуют команды (функции Elisp). Для поиска и непосредственного ввода команд можно использовать комбинацию M-x .
Для выхода из редактора используйте комбинацию C-x C-c .
Работа с файлами и буферами
Для того, чтобы открыть файл нажмите C-x C-f , Emacs попросит вас ввести имя файла. Оно набирается в нижней строке экрана, которая называется мини-буфером. Для того, чтобы создать файл введите новое имя в мини-буфере.
Когда вы вводите имя файла (или любую другую информацию в мини-буфере), вы можете отменить текущую команду нажав C-g .
Чтобы сохранить содержимое файла нажмите C-x C-s . Если файл изменялся с момента открытия или последнего сохранения, в строке состояния (внизу окна Emacs) слева будут отображены два символа * (звёздочка), иначе на их месте отображаются символы — (дефис).
Открывать и сохранять файлы можно также через пункт меню File.
Каждому открытому файлу в Emacs соответствует так называемый буфер, отображающий содержимое этого файла. Чтобы увидеть список буферов, созданных в текущем сеансе Emacs, наберите C-x C-b . Мы видим, что каждый буфер имеет имя и может иметь связанное с ним имя файла, содержимое которого хранится в данном буфере. Просматривать и перемещаться по буферам можно также через пункт меню Buffers.
Любой текст, который вы видите в окне Emacs (в том числе сам список буферов), является частью какого-либо буфера. Чтобы убрать список буферов наберите C-x 1 (данная комбинация оставляет в текущем окне только выделенный буфер).
Перейти в буфер по имени можно с помощью комбинации C-x b . После ее выполнения имя буфера для перехода будет запрошено в мини-буфере.
Для того, чтобы отобразить в текущем окне два буфера нажмите C-x 2 (чтобы разделить окно горизонтально) или C-x 3 (чтобы разделить окно вертикально). Для перехода между буферами используйте комбинацию C-x o или мышь.
Удаленная работа с файлами
Emacs позволяет прозрачно для пользователя работать с файлами на других компьютерах. Например, чтобы открыть файл inf/task1/hello.c , расположенный в домашнем каталоге пользователя kryshen на сервере kappa.cs.karelia.ru можно ввести комбинацию клавиш C-x C-f и указать все параметры подключения в имени файла следующим образом: /ssh:kryshen@kappa.cs.karelia.ru:inf/task1/hello.c (при работе из Windows с PuTTY вместо ssh: используйте префикс plink: ), после чего Emacs запросит в мини-буфере пароль для подключения к серверу и все дальнейшие изменения в файле будут выполняться уже удаленно на сервере.
При редактировании файла на другом сервере, все связанные с ним команды будут также выполняться удаленно. Например сборка ( M-x compile ) или отладка ( M-x gud-gdb ) программы hello.c из предыдущего примера будут выполнены на сервере kappa.cs.karelia.ru .
Emacs поддерживает большое количество протоколов для удаленной работы с файлами: SSH, Telnet, FTP, WebDAV, OBEX и др.
Редактирование текста
Как и в большинстве других редакторов для того, чтобы начать вводить текст необходимо просто нажимать соответствующие символы на клавиатуре. Для перемещения курсора можно использовать стрелки, указатель мыши, а также комбинации клавиш, позволяющие осуществлять более сложные перемещения (подробнее см. руководство по Emacs).
Комбинации клавиш для выполнения операций выделения текста, копирования, вставки, отмены и т.д. могут показаться пользователям редакторов с менее богатой историей слегка необычными:
- C-/ , C-_ или C-x u — отменить предыдущую команду редактирования.
- C- — начать выделение текста.
- M-w — поместить выделенный текст в буфер обмена.
- C-w — вырезать выделенный текст и поместить его в буфер обмена.
- C-k — вырезать весь текст от курсора до конца строки и поместить его в буфер обмена.
- C-y — вставить текст из буфера обмена, который был помещен туда последним.
- M-y — если нажата сразу после C-y , то заменит только что вставленный текст на тот, который был помещен в буфер обмена предпоследним. Таким образом, можно поместить в буфер обмена сразу несколько элементов и затем последовательно вставить их в разных местах документа.
- C-s — поиск по файлу. Строка для поиска вводится в мини-буфер, поиск осуществляется по мере набора текста.
- M-% — замена текста в текущем буфере.
Emacs также может имитировать более простой режим редактирования документов, в котором используются комбинации: C-c для копирования, C-v для вставки, C-z для отмены и Shift для выделения текста. Для включения этой возможности выберите пункт меню Options → Use CUA Keys.
Другие возможности Emacs
- Чтение системной докумнтации: M-x man и M-x info .
- M-x shell : командная оболочка Shell (при удаленной работе может потребоваться явно ввести путь к интерпретатору /bin/bash ).
- dired-mode — файловый менеджер Emacs. Откройте любой каталог с помощью привычной комбинации клавиш C-x C-f , содержимое каталога автоматически откроется в режиме dired . В данном режиме вы можете навести курсор на любой файл и переименовать его (нажать R ), скопировать его (нажать C ) или удалить (нажать D ). Нажав C-x C-q вы можете редактировать имена файлов просто редактируя их в текущем буфере (изменения примут силу после сохранения, C-x C-s ). Подробнее см. описание Dired в руководстве по Emacs.
- M-x gnus — Почтовый клиент. В вычислительной системе кафедры ИМО он по умолчанию настроен на работу с почтовым сервером mail.cs.petrsu.ru .
- M-x compile — простой способ вызова команды make из текущего каталога.
- M-x gdb — интерфейс к отладчику GDB. Для перехода в расширенный интерфейс отладчика выберите пункт меню Gud → GDB-MI → Display Other Windows. При работе с удаленными файлами рекомендуется использовать M-x gud-gdb — более легкий вариант отладчика без поддержки расширенного интерфейса.
- org-mode — простой формат разметки, позволяющий превратить Emacs в ежедневник для ведения заметок, списка важных дел, расписания и т. д. Для того, чтобы начать использовать org-mode просто начните редактировать в Emacs любой файл с расширением .org . Кстати, это руководство также сделано в org-mode (emacs-short-tutorial.org). См. также более развернутый пример (org-example.org), демонстрирующий некоторые дополнительные возможности org-mode .
- M-x term — эмулятор терминала.
- M-x butterfly — см. рисунок 1.
- Делу время, потехе час:
- M-x tetris — тетрис,
- M-x snake — змейка,
- M-x doctor — психотерапевт,
- многое другое.
- раздел будет пополнятся.
Дистрибутивы
Существуют дистрибутивы Емакса, предоставляющие готовую конфигурацию и наборы дополнительных пакетов:
- Prelude достаточно близок к конфигурации Емакса в вычислительной системе ИМИТ, рекомендуется для самостоятельной установки;
- Spacemacs,
- Doom Emacs.
Дополнительные источники информации
- Встроенное в Emacs руководство по Emacs (для вызова нажмите C-h t )
- Emacs для начинающих
- A Guided Tour of Emacs
- Шпаргалка по командам Emacs (версия на английском)
- A Visual Guide to Emacs
Авторы: Александр Колосов , Михаил Крышень
Эта работа публикуется на условиях лицензии Creative Commons Attribution 4.0 International.
Источник
Emacs — четыре «пасхальных яйца» в OS X
Грядет светлый праздник Пасхи, а значит, такое словосочетание как «пасхальные яйца» в ближайшие выходные вы будете слышать особенно часто. Однако есть у этой фразы еще одно значение — скрытые сюрпризы в операционных системах. В этом материале мы расскажем о «пасхальных яйцах», которые удалось отыскать в OS X. Хотя в практическом плане от таких находок никакого толка нет, все же они смогут вас позабавить и позволить прослыть настоящим знатоком потайных закоулков операционной системы Mac.
Разработчики Emacs (текстового редактора, встроенного в OS X и многие другие системы на базе Unix) подготовили несколько сюрпризов, найти которые можно, только если знать секретные команды. Все эти четыре «пасхальных яйца» запускаются из командной строки с использованием приложения «Терминал». Итак, открываем командную строку и вооружаемся клавиатурой.
1. Mud
Для этого необходимо открыть «Терминал» и впечатать следующую команду:
emacs -batch -l dunnet
Нажав Enter, вы сможете начать взаимодействовать с игрой, в текстовом формате рассказывая о своих действиях. Если вы запутались, воспользуйтесь командой help .
2. Life
После этого нужно нажать на клавиатуре Esc, а затем — клавишу «x», а потом через пробел «life». После нажатия Enter на экране начнут произвольно генерироваться различные узоры. Хоть и бесполезно, но довольно красиво и интересно.
3. Tetris
Для передвижения и вращения фигурок используйте клавиши со стрелками, а чтобы заставить фигурку мгновенно свалиться вниз, необходимо нажимать «пробел».
4. Бесплатный психоаналитик
После нажатия клавиши Enter вы немедленно попадаете в кабинет бесплатного психоаналитика. Чтобы с ним пообщаться, необходимо письменно рассказать ему о своих проблемах, после чего он даст вам свой ответ или посоветует о том, что вам бы следовало сделать, чтобы решить проблемы.
Разумеется, львиная доля его фраз будет банальщина вроде «Вы хотите поговорить об этом?», но разве живые психотерапевты действуют по-другому? Кстати, программа понимает контекст ваших фраз и выдает ответ (или вопрос), относящийся к тематике вашего запроса. Например, если в вашем предложении будет присутствовать слово «оргазм», то виртуальный доктор задаст вам вопрос, касающийся половой жизни.
Главным минусом всех этих «пасхальных яиц» является то, что для того чтобы полностью ими насладиться, необходимо хорошо знать английский язык. И если языковой барьер не является для вас серьезной преградой — советуем непременно открыть их для себя самостоятельно.
Источник
Почему Emacs?
Почти каждый программист, который хоть немного любит свою работу и не привязан к конкретному языку программирования, рано или поздно придет к использованию Emacs… или vim… или STE… или еще к одному из множества текстовых редакторов.
Собственно, почему именно Emacs? Причина первая и самая главная — он мне нравится, за причинами же менее вескими, но более объективными добро пожаловать под кат.
В процессе чтения этой статьи у пользователей других редакторов может появиться желание воскликнуть, что в их редакторе такое тоже возможно. Это правда — и это замечательно, но не суть важно — в конечном счете каждый пользователь все равно выберет себе редактор по вкусу.
Что это такое?
Если отбросить шутки, то Emacs — текстовый редактор. Текстовый редактор с колоссальными возможностями для расширения. Многие редакторы в той или иной мере расширяемы, в случае же Emacs важна именно степень расширяемости. Именно она выделяет его среди многих других.
Часть редактора написана на С — эта часть отвечает за базовое взаимодействие с ОС, отрисовку окон, ввод-вывод. Практически весь код, отвечающий за работу с текстом, написан на elisp, или же является оберткой для С-шных функций, которые можно вызывать из того же elisp.
Именно такой подход позволяет сделать из Emacs что угодно — почтовый клиент, броузер, терминал, клиент для wordpress, интерфейс для MySQL и многое, многое другое. Emacs, являясь текстовым редактором, является также и мощной платформой для создания приложений.
Еще одним важным отличием от большинства расширяемых текстовых редакторов заключается в том, что менять поведение Emacs можно прямо на ходу — вы можете переписать функцию переключения между вкладками так, чтобы она не отображала в списке табов файлы с раширением .txt, не перезапуская редактор. Вы можете скопировать код плагина который нашли в интернете, и который, как вы считаете, понадобится вам только один раз, во временный буфер(вкладку), выполнить его и таким образом получить весь функционал в редактор. А можете чуть-чуть подредактировать плагин, выполнить — и у вас тут же будет своя версия, нужная именно вам.
Кому не нужен Emacs?
Если вы программируете на Java или C#, то скорее всего Emacs не даст вам тех же возможностей по работе с кодом, к которым вы уже привыкли. Если вы работаете над поддержкой большого проекта, где большая часть работы заключается в рефакторинге, то Emacs вам тоже не особо поможет. Если для вас важнее интеграция с JIRA, GitHub, или развеселый отладчик, то опять таки — Emacs вам не нужен.
При этом все равно находится значительное количество людей, которые пишут код для указанных языков в Emacs.
Если вы испытываете непрерывное желание рефакторить по мелочи, борясь за совершенство кода, например, переименовывать переменные, менять иерархию классов, интерфейсы методов и т.п. — то Emacs тоже вам скорее всего не нужен. Но сколько-то серьезная поддержка рефакторинга существует на сегодняшний день хорошо если для полудюжины языков, и если ваш язык не входит в это число, то почему бы и не попробовать Emacs?
Есть обширная категория людей, которые работают программистами, но которым программирование неинтересно. Они приходят на работу, пишут код, изучают новые технологии по необходимости, но программирование для них есть лишь способ заработка, интересы и увлечения у них другие. Ну не надо им это все. Когда они выходят из офиса, то забывают все рабочие дела и живут обычной человеческой жизнью. Если вы один из таких людей — Emacs вам просто не нужен.
А кому он нужен?
Если вы относитесь к одной из следующих категорий людей, то Emacs вам попробовать стоит(если вы конечно и так уже не счастливый пользователь похожего редактора):
- вы пишете на языках, поддержка которых в ведущих IDE далека от совершенства
- вы пишете на нескольких языках, и вам надоело каждый раз переключаться в нужную IDE
- вы признаете, что эргономика, скорость работы и отзывчивость большинства современных IDE оставляет желать лучшего
- вам лень слишком часто тянуться к мыши для выполнения каких-либо действий
- вы хотите иметь полностью унифицированную среду разработки на работе и дома, или просто на нескольких компьютерах сразу
- вы хотите иметь удобную среду для организации заметок и ведения справочной информации, к которой можно обращаться не покидая редактора
- вы занимаетесь рефакторингом по делу — т.е. вам нужно не сделать код идеальным, а привести абсолютно нечитаемый код к состоянию поддерживаемости
- вам часто приходится работать с двумя-тремя файлами, из которых вы перебиваете куски спецификаций, или же сравниваете логи, или же переписываете с языка на язык… И хотели бы чтобы все это умещалось на экране.
- вам нужна среда, которая будет запущена неделями и не будет потреблять огромное количество памяти, тормозить, держа при этом открытой сотню файлов и временных буферов
- вы испытываете потребность в автоматизации редактирования большого числа файлов
- вы используете многословный язык, который поощряет написание большого количества вспомогательного кода
- вам постоянно чего-то не хватает в стандартных решениях и вы хотите малой кровью дописывать необходимые мелочи под себя
- вам нужны продвинутые возможности по обработке текста — многострочное редактирование, редактирование прямоугольных областей, макросы, передача кусков выделенного текста на обработку внешним утилитам и т.п.
- у вас бывали ситуации, когда из-за удивительной политики безопасности вы проводили часы редактируя что-то через ssh, не имея возможности использовать sshfs, поскольку та самая политика разрешает только один единовременный коннект(хотя если быть честным — vim оказывается доступным на таких серверах гораздо чаще)
- вы предпочитаете универсальный способ работы со всем — текстом, файлами, системой контроля версий, терминалом, базой данных
Мифы о Emacs
1. Emacs устарел
Emacs такой обладает теми же возможностями, что и остальные текстовые редакторы, и даже превосходит многие из них. Релизы выходят регулярно, количество расширений на гитхабе и их форков только множится. В списках рассылки разработчиков регулярно проводятся дискуссии на тему чистки устаревшего кода, который никто не использует. Сами чистки тоже проводятся. Практически все фичи, которые появляются в популярных IDE или других редакторах, быстро реализуются сообществом и под Emacs.
Тем не менее вы вполне можете попасть в коллектив, где за использование текстового редактора вместо серьезной(тм) IDE вас будут презирать. Но это скорее проблема коллектива, а не Emacs.
2. Emacs не годится для разработки в современных условиях
В Emacs есть интеграция с отладчиками для многих языков. Навигация по коду также присутствует. Этого достаточно для написания приложений любой сложности, при этом ваша продуктивность не упадет по сравнению с работой в IDE, за исключением Java и C#. Эти 2 языка являются уникальным примером того, когда теряешься в догадках — создается ли IDE под язык или же язык под IDE?
Совершенно верно, что Emacs «не понимает», что перед ней код, а не текст. Поэтому проверки типов у вас не будет, «умного» автодополнения тоже(ну т.е. иногда будет — для некоторых языков). Забудьте про просмотр документации прямо в IDE, хотя ладно — для некоторых языков такая фича есть. Никаких умных рефакторингов. Предупреждений и советов, кроме тех, что способен выдать компилятор или интерпретатор, тоже не будет.
Тем не менее это не помешает вам писать хороший код. А также писать код быстро и эффективно. Вообще для того, чтобы при использовании полновесной IDE вместо Emacs ваша продуктивность выросла сколько-нибудь значительно, ваша работа должна быть очень и очень специфичной.
Я проводил эксперимент — импортировал в PHPStorm текущий проект на PHP размером в 400 000 SLoC и пробовал работать в нем несколько дней. После этого я вернулся на Emacs и… единственная показавшаяся мне полезной, функция, которая была в IDE, но отсутствовала в Emacs была добавлена в оный после нескольких минут гугления. Это не отменяет того, что в PHPStrom есть куча вещей, которые в Emacs отсутствуют. Другой вопрос, и вопрос важный, — так ли нужны эти фичи для продуктивности?
Все описанное выше — мое субъективное мнение, но, с другой стороны, достоверных исследований того как IDE повышает продуктивность работы по сравнению с хорошим текстовым редактором, мне найти так и не удалось. Может быть вам повезет больше.
3. Emacs сложен для освоения
Он не сложен, но обладает огромным количеством разных функций, которые были добавлены за более чем два десятилетия его существования. Само освоение редактора занимает неделю — за это время вы изучите основные приемы редактирования и привыкните к сочетаниям клавиш. Этого будет достаточно, чтобы чувствовать себя комфортно во время работы.
Второй этап — это выбор среди того множества функций именно тех, что нужны вам для работы. Он может растянуться на месяцы и даже годы. А скорее всего не закончится никогда — для Emacs постоянно выходят новые расширения, которые могут вам пригодиться.
К чему стремиться
Чтобы проникнуться духом олдскульного всемогущества рекомендую к просмотру следующие видео:
- Работа HTML
- Редактирование нескольких строк сразу
- Доступ к консоли JS в Chrome из Emacs
- Сниппеты
- Еще сниппеты
- Emacs и Python
Впрочем, это все не важно — почувствовать всю эффективность Emacs можно только самому, через видео это не передать. В качестве обучающего видео на ночь, а также для закрепления понимания сути Emacs, можно посмотреть серию лекций от нашего соотечественника:
Источник