UP | HOME

Въведение в Емакс

Table of Contents

1 Въведение

Emacs е операционна система дегизирана като текстов редактор (или обратното). Последващото е писмо, което имах навика да пращам на хора, осмелили се да проявят интерес към това чудо.

2 За какво основно го ползвам

  1. Текстов редактор (изненада) с огромни възможности за манипулация и изследване на текст. Много по-бързо и интуитивно могат да се извършват повтарящи се нетривиални операции, за които единствена друга алтернатива би била да се драсне програмка.
  2. Среда за куп езици за програмиране - въобще, относно различни, редки, популярни, нови, стари - най-вероятно някой вече е написал "мод" за него. За голям брой малко популярни езици Emacs е единственото…нещо, което дава повече от оцветяване на ключови думи. За лисп-подобни езици си е стандарт (с разширението Paredit1 манипулирането на S-изрази2 става толкова здраво (въобще и не става дума за броене на скоби), че влаченето по без-структурния текст на други езици си е жива мъка).
  3. Графичен интерфейс към GDB. Става почти като Visual Studio, хехе.
  4. Интеграция с доста GNU инструменти, особено удобен за ползване с grep и make компилиране, проверка на правопис, системи за контрол на версиите (няма значение дали става дума за git, svn, darcs, mercurial… Emacs предоставя унифициран интерфейс към основните им функционалности).
  5. Удобен набор от diff функционалности3.
  6. Терминал (няколко :D).
  7. Електронна поща и nntp новини, четец на feed-ове…
  8. В комбинация с w3m4 - много удобен текстов браузър (липсва javascript и flash, което си е feature).
  9. В комбинация с mpd, mplayer или vlc - систематизатор на колекции от музика и филми.
  10. Много удобен и функционален навигатор за файловата система.
  11. Това може да спада и към 2., но е отличен редактор за LaTeX5, през който се драскат pdf документи и дори презентации. Вече има поддръжка за разглеждане на pdf-и.
  12. Ползвам разширения за онлайн речници, разни логически игрички (освен вградените) и понякога психоаналитик :D Шегувам се, но си има реализация на Eliza6.
  13. Интерфейс към mldonkey7.
  14. Четец на man pages и info наръчници.
  15. Организатор в обикновен текст "на батерии" с таблици, формули, експорт към html, pdf, odf… и много повече8.
  16. Това е малко специфично, но с разширение има удобен интерфейс за търсене и разглеждане състоянието и описанието на Gentoo9 (и portage производни) пакети и флагове.
  17. Унифициран достъп до мрежови протоколи (ftp, ssh…) и файлови системи (включително su/sudo)10.
  18. В комбинация с biltbee11 - универсален чат-клиент (google talk, icq…skype, хаха) минаващ през Emacs IRC клиент12.

3 Още?

Има разширения за видео обработка13, споделено ползване14, аудио-управляем десктоп за хора с увредено зрение15 и какво ли още не. Всичко това (и много повече) под шапката на един от най-могъщите манипулатори на текстови структури. Отгоре на всичко Emacs върви в почти пълен блясък на всякакво "железо" - GNU/Linux, BSD-та, Winblows, Solaris, Plan 9… опасна работа!

4 Вътрешностите отвън

Отличително явление е, че Emacs16 в ядрото си е (Emacs) Lisp интерпретатор, до който има почти неограничен достъп и възможност за разглеждане, промяна в движение. Зад всяко натискане на бутон или друга активност стои Elisp функция, чиято документация и код могат да бъдат разгледани и променяни в текущия момент и това да се отрази веднага. Естествено могат да се добавят нови функции, променливи, макрота, hook-ове към съществуващи функции, клавишни комбинации и т.н.

Elisp17 е пълнокръвен Lisp, макар и малко застарял (в момента се работи над интеграция с Guile18, което би дало възможност да се пишат разширения и на Scheme, JavaScript, Lua или каквото още дойде). Специализиран е за текстообработка и има опасения, че е най-доброто, с което човечеството разполага19. Повечето платформи осигуряват някакъв половинчат начин/език за писане на разширения, което ги прави трудно използваеми и видимо по-лоши от вградените функционалности. В контраст с това, огромната (и нарастваща) част от Emacs е реализирана на Elisp. Крайният резултат е, че любопитен потребител практически разполага със същите инструменти, каквито имат и разработчиците на Emacs (това е в ДНК-то на Lisp).

Emacswiki20 е място, където може да се намери всевъзможна информация, трикове, разширения и прочие.

5 Първи стъпки

Може би е добре при пръв контакт да се направи клавишната комбинация

C-h t (C-h е нотация за <ctrl>+h, последвано от натискане на t) която запознава с примитивни начини на ползване. Стандартно инсталиран, Emacs има достъп до собствената си документация с

C-h i (това стартира info браузъра на Emacs)

m Emacs RET (натиска се m, изписва се Emacs и се натиска <enter>)

Документацията може да бъде разглеждана с

C-h i

m Elisp RET

Няколко полезни комбинации за разглеждане на информация:

C-h m (описание на текущия "мод", което е набор от клавишни комбинации, специфично оцветяване и функционалност и въобще състояние на текущия буфер)

C-h b (описание на всички активни в този момент клавишни комбинации)

C-h k (последвано от клавишна комбинация, описва интерактивната функция-команда, стояща зад тази комбинация)

C-h f (последвано от име на функция, описва функцията и дава връзка към кода и)

C-h v (последвано от име на променлива, описва променливата)

В допълнение, с

M-x (приета нотация за <alt>+x)

последвано от име на команда (с подсказки) и <enter> изпълнява командата.

M-x ielm RET

примерно стартира Elisp REPL21.

Когато сме в Elisp буфер (обикновено и scratch върши работа)

C-x C-e (това може да се изпълни по-лесно като се задържи <ctrl> и последователно се натиснат x и e)

изпълнено след последната затваряща скоба на S-израз, го изпълнява. Това може да е предефиниране или създаване на нова функция/променлива или просто някакъв блок от Elisp код. Това е основния начин за мигновени промени.

При стартиране Emacs изпълнява ~/.emacs.d/init.el или ~/.emacs файл, в който потребителят е свободен да зарежда допълнителни разширения, променя настройки, дефинира функции/макрота/променливи/клавишни комбинации и въобще изпълнява какъвто и да е Elisp код. Интернет е пълен с dot-emacs-овете на много народ и това често е удобен начин начинаещ да си открадне по някоя друга настройка за собствено ползване. Моят текущ .emacs се намира засега на https://github.com/m00natic/dot-emacs

6 Сега накъде?

Това е, има много материал за разглеждане. Както има лаф, "сигурен тест дали нещо съществува е дали има порно с него"… е същото важи и за Emacs Lisp разширенията22.

Последният да затвори скобата :)

Footnotes:

Author: Andrey Kotlarski

Created: 2015-08-30 нд 17:28

Emacs 24.5.1 (Org mode 8.2.10)

Validate