Пользователь
0,0
рейтинг
19 марта 2012 в 16:46

Разработка → Emacs для начинающих: введение

Ist das Emacs? Sehr gut!



Начну с небольшой истории. Лет так 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 — выход из редактора


Buffers (buffer — открытый файл)
  • 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) ввод.

Видео:


Настройка:
(require 'uniquify)
(require 'ido)
(ido-mode t)


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



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

Видео:


Настройка:
(require 'tramp)


В заключение


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

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

Подробнее
Спецпроект

Самое читаемое Разработка

Комментарии (134)

  • +1
    Zehr gut!

    Я не понял почему первая «Z»?

    На счет не слишком сложный: в отличии от vi, который, как известнто или пикает или все портит, емакс способствует развитию синдрома запястного канала.
    • 0
      weil er kein Deutsch spricht :)
      • 0
        :-) Согласен. Давно дело было, с тех пор что Z что S для меня одно и то же, читается то как Z.
        • +1
          А для немцев это разные буквы :-)

          Z = [ts]. Например, Ziegel произносится как цы́гəль (тот самый, который ай-лю-лю). Цейтнот, Цейс, Цюрих, цапфа, цирк — всё начинается с Z.
          • 0
            Цейс?
            • 0
              Цайс
    • 0
      Эх. Немецким spell-checker не прогнал :-) В общем исправлено, спасибо.
    • 0
      Так понятнее тому, кто немецкий знает только по советским фильмам о ВОВ… Если бы не ваш коммент, то так бы и остался в неведении.
  • –1
    Таки Sehr gut :)
  • +6
    Спасибо большое, хорошая статья, так как порог вхождения в Emacs и вправду достаточно высокий, и новички часто оставляют попытки, если нет никого более опытного, кто мог бы подсказать.
    Лично я емаксом стал пользоваться ровно в то же время, когда начал пользоваться линуксом. В то время я был полным нолем и в линуксе, и в емаксе, и вообще в ИТ, поэтому вопросы у меня возникали просто идиотские. Например, я не понимал, что в сочетаниях клавиш типа C-x C-s буква «C» означает клавишу CTRL. Кстати, если еще для кого-то это не очевидно, как и для меня — будете знать ;)
    • +3
      Вы не одиноки :) Как раз собирался спросить, что все эти «C» обозначают.
      Ещё вопрос:
      C-x C-f — открыть файл

      Это как, последовательно нажимать? Сначала Ctrl+X, затем Ctrl+F? С каким интервалом? А что будет, если я зажму сначала Ctrl+X, а затем отпущу X и нажму F?

      В общем, вопросов остаётся много. В простоте Emacs вы меня не убедили )
      • НЛО прилетело и опубликовало эту надпись здесь
        • +1
          а лучше slackware…
          • НЛО прилетело и опубликовало эту надпись здесь
        • +2
          Обычно рекомендуют найти рядом линукс-гуру и поставить себе тот же линукс, что и у этого гуру, чтобы было кому задавать глупые вопросы. Мне кажется такой совет более выгодный любому новичку. Я поспрашивал друзей и поставил Debian.
          • НЛО прилетело и опубликовало эту надпись здесь
            • +1
              >>к сожалению, Debian-сборки довольно качественный продукт
              Я думаю, что к счастью, а не к сожалению.
          • 0
            У меня была в точности та же история — все наши корпоративные веб-серверы стояли на Debian'ах без иксов и с выпиленными «лишними» пакетами (с той целью, чтобы сервер можно было ребутнуть за считанные секунды), а сами Дебианы — на VmWare. И как раз был на фирме линукс-гуру, которого я постоянно задалбывал бесконечными вопросами. Так что ваша история мне знакома)
        • НЛО прилетело и опубликовало эту надпись здесь
          • +4
            Не скажу про других, но на мой взгляд вы неуместно высокомерны, за это и минусуют.
            • НЛО прилетело и опубликовало эту надпись здесь
              • +1
                Какая безграмотность? Каждый выбирает для себя удобный инструмент, кому консоль, кому иксы.
                Програмист иногда не может свой же ПК настроить, собрать, починить, переставить ОС — но это не значит что он плохой програмист.
                Каждый учит только то что ему нужно.
                КГ — понятие расплывчатое. Но мне кажется — что это набор знаний-умений-навыков, которые позволяют освоить (хотя бы на начальном уровне) подавляющее большинство программ (помимо узкоспециализированных). Т.е. имеется в виду понимание логики работы, механизмов, базовых приемов работы компьютерных систем.
                Есть базовые приемы работы — назначение кнопок, клики правой\левой кнопкой мыши, назначение элементов интерфейса и т.д. именно когда человек освоит их он может «догадаться» как работать с той или иной программой, хотя бы чуть-чуть. а дальше — дело изучения соответственно необходимости.
                • НЛО прилетело и опубликовало эту надпись здесь
        • 0
          А причем тут Генту? Генту тоже красиво ставится через инсталятор (ну сколько можно красноглазить с 86 страничным мануалом)
          Что то я не помню что бы после первой установки со всемы танцами и бумном и компиляцией ядра (и даже 10й) Дженты я с Emacs и Vi так и не подружился, и сейчас не дружу, и как сказали в этом коменте сочетания клавиш не всегда очевидны, я спустя только лет 10 пользования линуксом добрался до вопроса хоткеев, но все равно их не использую.
          Убунту тоже вроде как тот же линукс, тут вопрос желания и усидчивости изучать сложное и страшно хакерское )))
          • НЛО прилетело и опубликовало эту надпись здесь
            • 0
              Говорю как человек постоянно с ним работающий, собирать генту в начале пути имея на это желание, приводит к психическим растройствам и недоспаным ночам.
              И десятками перекомпиляций мира из за пропущеных флагов.
              Собирал Генту последний раз месяца 2 назад по одной единственной причине
              для очень эксклюзивной железяки где требовалось максимальное быстродействие, да и то через кросс компиляцию что бы съекономить время.
              Нынешние мощности ПК позволяют поставить пре билд дистр и не заморачиватся.
              А тот кому это надо, почитает и пересоберет ядро хоть в RHEL хоть в убунту.
      • 0
        Последовательно, без разницы какой интервал, mod key'и можно не отпускать, снизу в «minibuffer» будет показываться вся последовательность нажатий.
      • 0
        C-x C-f означает, что можно удерживая Ctrl последовательно нажать x, f.

        Сложные комбинации отданы под редкие команды (считается, что файл в редакторе открывают реже, чем что-то в нём редактируют), а на простые команды и навигационные назначены простые комбинации клавиш.
    • 0
      В таком случае говорят — RTFM, для себя уже давно понял что гораздо лучше сохранить время и нервы — читая маны, особенно когда хочешь познакомиться с чем-то совершенно новым.
      • 0
        Именно, Read the fucking manual.
  • +11
    Пожалуй продолжу пользоваться Notepad++.
    • 0
      Notepad2 кстати тоже очень неплох, курва обучения отсутствует как класс.

      Крик души: почему не появится до сих пор что-нибудь настолько же удобное и функциональное, как старый добрый MultiEdit 6.0?..
      • 0
        «курва обучения»? Вы курсы имели ввиду?
        • 0
          learning curve (кривая обучения) — отсюда пошел этот термин. Крутизна кривой обучения описывает сложность процесса. Автор русскоязычного термина — Сергей Голубицкий из почившей бумажной «Компьютерры».
      • 0
        Спасибо за линку, пойду поиграюсь с ним.
      • +3
        SublimeText?
        • 0
          Спасибо, интересный редактор!
      • 0
        А что стало с multiedit?

        По функционалу он какраз догонял emacs.
        По удобству — зависит от раскладки клавиатуры :)
        «Макроязык» в emacs явно элегантнее и гибче, чем то бейсико-подобное.
        • 0
          «Макроязык» в emacs назывется Lisp
          • 0
            он называется elisp.

            ну и на самом деле в обоих случаях это уже не «макро»язык, поскольку реализует основной функционал.
  • 0
    Я вот чего до сих пор не понял. Почему при копировании\вырезании, через C + y\M + y — вовне не копируется, а при нажатии на иконку «Copy», в случае если мы работаем с GUI-версией емакса — все успешно вставляется и вовне?

    И соответственно — как привязать эту гуишную кнопку копировани, к тем же сочетаниям C + y\M + y — их расширив?
    • 0
      «C-h t» — не всегда английский. Я учил по русскому.
      Есть ещё не менее важный, и более полный, когда азы уже пройдены — «C + h y»
      • 0
        Сорри, ввел в заблуждение — C-h y — ничего не решает. Узнать про команды следующие за C-h легко, нажав C-h ещё раз. Там-то и написаны все варианты, в т.ч. и тот вариант C-h i — который, конечно, я и имел ввиду.
    • +1
      > вовне не копируется
      Всё копируется. Дело тут наверное в том, что в X-windows существует так называемый Primary и Secondary selection. Попробуйте сделать Paste средней кнопкой мыши. А вообще чтобы эти primary/secondary не путались у меня всегда и в KDE -> Klipper и в Parcellite стоит "[x] Synhornize Primar and Secondary Selections"
      • 0
        Спасибо. С первым — понятнее стало… средняя кнопка мыши рулит.
        Со вторым вопрос остался, но уже не так актуален, т.к. решение уже есть —
        «как привязать эту гуишную кнопку копировани, к тем же сочетаниям C + y\M + y — их расширив?»
    • +1
      Менюшная «Copy» копирует в x-буфер. С-w/M-w — в емаксовый буфер.
      Чтобы их синхронизировать, сделайте себе немного (setq x-select-enable-clipboard t)
      как рекомендуется тут: emacswiki.org/emacs/CopyAndPaste
  • 0
    Подскажите, графические версии emacs (те, которые не в терминале работают) — как у них сейчас с отрисовкой не-текстовых элементов? Картинки вроде бы в текст вставлять могут (по крайней мере при старте emacs показывает картинку, вставленную в текст) — а как насчет примитивов? Можно динамически отрисовать картинку по точкам? Можно ли использовать примитивы для рисования (линии там, квадраты, эллипсы)?
    • 0
      Artist Mode ;)
      • 0
        Это псевдо графика. Так и notepad может.
        • 0
          Да, я ниже написал. И да, именно так notepad не может.

          Вообще оценивать редактор текста (и именно текста, никакого wysiwig, кроме отдельных визуализаций) по умению рисовать графику — как-то странно.

          Visual Studio вот тоже не умеет в код картинки вставлять, это делает ее хуже, да?
          • 0
            Visual Studio умеет, но это к дел не относится.
            Я не оцениваю редактор текста, это вы сами придумали. Я интересуюсь у человека с 15-летним опытом работы эзотерической функциональностью, так как emacs я знаю несколько хуже чем vim, а это не гуглится. Vim, например, точно не может ничего рисовать примитивами — но при этом он также не может вставлять в текст изображения, а emacs — может, что позволяет выдвигать предположение о возможности отображать что-либо поточечно / примитивами.
            • 0
              • 0
                А не, не то, я думал там маркеры в емаксе поверх рисуются. Оказалось что нет.
                • 0
                  Не то — они закачивают картинку через google API и ее отображают. Как вставить картинку я знаю :). В принципе, конечно, можно попиксельно соорудить картинку во временной папке и ее вставить — но это как-то не то О_О. Интересует наличие API для отображения чего-нибудь, отличного от текста и картинок из файлов. Странно что вставка картинок и рендер latex, pdf реализовано на уровне высокоуровневых функций, вообще без низкоуровневого доступа к рисованию.
        • 0
          Ну что сказать. Честно, картинки я никогда в Emacs не рисовал, а в сугубо практическом значении я пользуюсь таблицами в org-mode, просмотром PDF и картинок. Это очень удобно когда не надо вызывать внешнее приложение чтобы просто глянуть содержимое файла.
          • 0
            А как у него сейчас с возможностью отображения диалоговых окон (опять же, не псевдографикой)? Есловно говоря, если я пишу на лиспе плагин, который позволяет пользователю выбрать элемент из списка где их пара десятков — могу я попросить emacs отобразить мне диалоговое окно с таким списокм, чтобы в нем можно было кликнуть мышкой / клавиатурой на нужный элемент?
            • 0
              Как бы использование мышки противоречит основным идеям емаксовского UI. Как и диалоговые окна.

              Насчет диалоговых окон не знаю, но можно отобразить буфер со любым списком.
            • +1
              Диалоговое окно со списком можно сделать с помощью popup-el.
    • 0
      Сорри, поспешил. Emacs — это plain text редактор. Есть всякие визуализации для картинок и формул в tex, например, но рисовать именно графические примитивы, а не ascii, нельзя. Для этого есть wysiwig-редакторы.
  • +7
    Мне не совсем ясна область применения Emacs. я с ним познакомился лет 17 назад. Ни для одного языка нормальной бесплатной среды не было. И все задания в университете мы писали в emacs.
    А сейчас зачем? Для редактирование текстовый файлов есть vi. Для языков программирования есть среды с рефакторингом.
    А что в emacs делать?
    • 0
      да много чего, вот к примеру habrahabr.ru/post/109129/, там верстают.
    • +2
      Внезапно за 17 лет в емаксе тоже появился и рефакторинг, и кодкомплешн и еще много и много всего.

      Вообще фишка в идеологии (unix way, все прозрачно и очень просто на самом деле) и полной кастомизации редактора под себя, а соответственно в сильном повышении продуктивности.
      • +2
        Я тоже всё настраивал под себя давным-давно в начале своей карьеры. Со временем оказалось, что изучение нормальной IDE и пользование её функционала на 100% делают работу намного продуктивнее.
        • +1
          О! А можно поподробнее? Я пытался поработать в разных IDE, но по функционалу до Emacs не дотягивает, слабо подстраивается и тормозит. Если с тем, что тормозит смириться можно, но то что многие вещи приходиться тыкать мышой меня совсем не устраивают. Из IDE больше всего мне понравились для Python: PyCharm и WingIDE. Но минусы PyCharm — тормознутость и некоторая ограниченность функционала, а WingIDE слабо расширяется, обе коммерческие потому конечно и сравнивать не имеет смысла. А Eclipse как то совсем не пошёл… А в какой IDE работает автор комментария? Что именно стало продуктивнее по сравнению с emacs?
          • 0
            Я работаю в разных IDE: Eclipse, NetBeans, VC. Мышкой не пользуюсь (: Читайте документацию, изучайте программирование, тогда будет понятно, почему в них что-то сделано так, как сделано.

            Программист — это не писатель, ему тестовый редактор нафиг не нужен.
            • 0
              Действительно. Программист — это тот, кто перетаскивает кнопочки по формочкам.
              • 0
                Не путайте UI дизайнеров с программистами. Я понимаю, что для человека не в теме все айтишники на одно лицо, но мы таки разные и не надо нас путать.
                • 0
                  Да-да, говоришь на меня — переводишь на себя. Проходили в детском саду.
            • +1
              > тогда будет понятно, почему в них что-то сделано так, как сделано.

              Читаю документацию (http://wiki.eclipse.org/FAQ_How_do_I_switch_to_vi_or_emacs-style_key_bindings%3F):
              «Eclipse has a built-in key-binding configuration that emulates emacs-style key bindings.»

              Аналогично, люблю Майкрософт, за то что Visual Studio тоже из коробки знает про emacs.

              Лично мне понятно, почему так сделано. А вам?
      • 0
        unix way, говорите?
        «Пишите программы, которые делают что-то одно и делают это хорошо.»
        При всей моей любви к emacs, этот мегакомбайн(про который шутят: в emacs есть все кроме нормального редактора), от данного принципа довольно далек.
        • 0
          Это потому, что emacs — это не текстовый редактор, а lisp-интерпретатор, в котором можно запускать разные lisp-приложения, в т.ч. и текстовый редактор.
        • 0
          Дополню — и как lisp-машина, он вполне простой и прозрачный. И посмотрите unix way по Реймонду, там как раз таки и есть про расширяемость и интеграцию.

          В мегакомбайн он превращается после установки на него большого количества режимов и расширений. Но тем не менее остается прозрачным и простым.
    • 0
      Аналог vi для тех, кому не нравится modal editing? Опять же, программируемость лиспом позволяет делать на нем сложные специфические расширения для работы с текстом. У меня, например, на нем сделана система типа локальной wiki, которая позволяет крайне быстро и удобно для меня работать со специфическим массивом информации довольно большого размера (несколько мегабайт).
      • +6
        Наверное Вы правы, но сколько из потенциальных пользователей emacs знают или готовы учить лисп?
        Вы понимаете — emacs — из другой эпохи (и я кусочек этой эпохи застал даже) — эпохи когда писать конфигурацию на лиспе было нормально, когда не было eclipse и вообще нормальных сред, когда софт для юниксов стоил тысячи долларов и т.д.
        Сейчас если бы делали такой редактор сделали бы настройку на пайтоне или руби или груви, верно?
        • 0
          Да, что-то врод современного emacs с настройками на питоне было бы неплохо. Но объем сил, который необходим чтобы собрать такую штуку несколько зашкаливает (хотя, btw, попытки ведутся). Поэтому для работы с текстом используют то что есть. Это в любом случае проще, чем изучать плохо документированный и крайне объемный eclipse API.
        • 0
          Есть редактор на руби — redcar. Есть на питоне — sublime. Они неплохие, но до емакса им далеко.
          Я, переехав с вима на емакс, тоже сначала хотел настроек на чём-то человеколюбивом, на руби, например. Но сейчас, немного освоившись, рад, что они всё-таки на лиспе. Потому что даже базовые знания лиспа позволяют иначе взглянуть на собственный код на других языках. Расширение кругозора.
          • 0
            Можно пример? Всегда было интересно
            — почему люди пишут, мол у них произошло озарение, после изучение лиспа. :)
            • 0
              Трудно сказать. Ко всему привыкаешь и начинаешь воспринимать как должное. В целом, изучение лиспа вызывает реакцию «ух ты, и так можно?». Поражает, как с таким минимумом языковых конструкций можно получить такую гибкость. Сначала немного сбивает с толку префиксная нотация, но потом становится даже удобно, что нет различия между функциями и операторами (сравните, например, Сишный оператор a+b, но функцию pow(a, b)). Удобна передача произвольного количества аргументов в функции, вытекающая из той же префиксной нотации. Привыкнув к работе со списками, начинаешь чаще использовать функциональные подходы и в других языках.
              С метапрограммированием я ещё не разбирался, не возникало необходимости, хотя в интернетах пишут, что в макросах самая сила лиспа.
              • 0
                До сих пор не могу понять(хотя и не так давно начал глядеть в сторону Clojure) — как обойтись без присваивания значений… :)
                • +1
                  Почему без присваивания? Есть setq и let.
  • 0
    Подскажите пожалуйста как настроить (Ubuntu) emacs, чтобы стало единым — переключение системной раскладки клавиатуры и переключение раскладки в emacs.
    Это самый главный для меня вопрос по emacs, который давно не дает покоя.
  • +5
    Помню в 90-х, когда познакомился с Linux, пропробовал использовать Emacs.
    После того, как в течении больше 10-ти минут мне так и не удалось открыть текстовый файл для редактирования, завершил данное приложение, чтобы больше никогда не запускать.

    А был бы у меня конфиг, все могло бы быть совсем по другому.

    Еще никогда не видел написанное математиком приложение с юзер-френдли интерфейсом.
    • 0
      Аналогично ;-)
      Тогда в каком то форуме, кто то написал: «Emacs — хорошая операционная система, вот бы кто к нему допилил нормальный текстовый редактор» :-)
    • 0
      а на велосипеде вы через сколько минут поехали первый раз?
      • 0
        Если уж так сравнивать, то Notepad++ или Geany — это трёхколёсные велосипеды, а Emacs — универсальное транспортное средство с гибкой конфигурацией числа, формы и взаимного расположения колёс, рулей, педалей, крыльев и плавников, но чтобы в первый раз получить что-то движущееся (хотя бы с толкача), нужны пара лекций гуру и солидный томик с инструкцией. Аптечка — must have.
  • 0
    Спасибо большое за начало освещения emacs. Так получилось, что были знакомые vim'еры, и с ним я смог-таки ознакомиться, а вот знакомых использующих emacs нет, так и не смог начать учить.

    Из пожеланий:
    Расскажите пожалуйста, как начать работу с плагинами, что люди используют (а-ля функциональные аналоги pathogen'а для vim). ИМХО, правильные привычки привить важнее, чем начать изучать различные плагины и т.д.

    Кроме того, находил информацию, что для работы в emacs часть либо вешают Ctrl на Caps Lock, либо меняют Ctrl и Alt. Можете как-то это прокомментировать?
    • 0
      Пробовал. Впечатления двоякие. Вроде как [должно быть] проще, но только стоит привыкнуть, как приходиться переучиваться, сидя за компом у у товарища рядом. Вроде как сконвертироал пару товарищей поменять Ctrl+Alt. Но прошло вот 2 года с момента этих экспериментов, и в результате у всех как обычно, а у двух человек — перевёрнуто. Вот и думай после этого стоит ли так радикально экспериментировать. Если чисто для себя это одно дело, а если иногда приходиться работать на разных клавиатурах или в парном программировании то наверное смысла нет.
      • 0
        Я просто пробовал пару раз. На работу в виме/шелле практически не влияет. За 5 минут привыкаешь что Ctrl-Alt, что Alt-Ctrl — одинаково. А вот в emacs'e и тот и другой активно используются, а кто более нужен — непонятно. Вот и спросил :)
    • 0
      Про плагины был вроде тут пост на хабре: habrahabr.ru/post/126228/ — советую обратиться к нему. А вообще не так уж часто я это всё настраиваю. Система у меня Gentoo, да тут не сильно важно что за система. В самой системе почти все модули, которыми я пользуюсь есть. В общем ставлю пакет и добавяю require (я отключил autoload для _всех_ пакетов т к не всё что стоит с поддержкой emacs реально мной используется).

      Хороший package manager был в xemacs, но увы, по скорости разработки и коммунити xemacs сильно отстаёт так что я им сейчас не пользуюсь.
    • 0
      Менять местами смысла особого не вижу, а вот повесить ctrl на caps lock _дополнительно_ к стандартному — очень полезно. Мизинец левой руки почти всегда лежит на ctrl и куда удобнее, когда он является продолжением основной линии клавиш (не знаю, как перевести home row).
      В emacs 24, который ещё не вышел, но им уже можно пользоваться, встроен пакетный менеджер, вызывается по
      M-x package-list-packages. Несколько сотен пакетов там уже есть, особенно с дополнительными репозиториями.
      В целом, чтобы начать, лучше всего поставить emacs starter kit. Мало того, что он делает emacs удобнее, вдобавок в нём ещё и неплохой код. Можно читать, чтобы разобраться, как что делается в редакторе.
      • 0
        а переключение раскладки на каких клавишах?
        • 0
          правая win
    • 0
      Сильно зависит от клавиатуры и от личных предпочтений.

      У меня на нетбуке Ctrl заменен на Caps Lock только из-за идиотского расположения Ctrk на клавиатуре. На полноценной клавиатуре все по дефолту.
    • 0
      Пробовал делать caps в качестве ctrl. Мегаудобнее.
      (Ну кроме того, что за чужим компом начинаешь не только переключение путать, а вообще всё)
      Однако, переключать раскладку капсом оказалось ещё удобнее. а и разработанный мезинец, думаю, в жизни пригодится :)
      • 0
        И в итоге на Caps — переключение раскладки, или контрол?

        Дело в том, что именно этот фактор меня пока что сдерживает от emacs и склоняет к vim. Хотя в достаточной мере владею и тем и тем.
        • 0
          Переключение.
          Контрол всё равно с двух сторон нужен. Да и мизинец както не особо натренирован пока.

          А для емакс есть дикая идея поменять местами альт и контрол, но пока не придумал — как.
  • 0
    > среда разработки для Python
    Очень нужно именно это. На примере какого дистрибутива будете рассказывать? Много находил гайдов в сети где предлагалось запихать нужные модули в .emacs, но меня это не устраивает учитывая что все они есть в репах debian\ubuntu.
    • 0
      .emacs.d я хотел сказать.
    • 0
      у меня например папка .emacs.d/ и .emacs лежат в дропбоксе, откуда линкуются в нужное мне новое место.
      комфортно и в убунте и в арче и в макоси и в виндовс.
      • 0
        В моем случае хватило бы .emacs и скрипта для быстрой установки нужных пакетов, так как лишен необходимости использовать windows.
        • 0
          Использую два одинаковых арча на работе и дома, но также храню настройки в dropbox, вместе со скриптом, который создаёт симлинки, очень удобно выходит: pastebin.com/gVW1ZV0w
    • 0
      Рекомендованный способ установки пакетов на Emacs 24 – юзать package-list-packages, который позволяет ставить пакеты из emacs MELPA репозиториев (включая github) буквально в два-три нажатия клавиш. Очень удобно.
  • 0
    Читал-читал комменты, ничего про сравнение с vim не нашел. Мне кажется или emacs — это попытка создать аналог vim без командного режима?
    • +1
      Насколько я помню, vi и емакс появились примерно в одно и то же время, ~1976 год, так что вряд ли один из них — это попытка создать аналог другого :)
    • +4
      толсто же.
    • 0
      Если делать сравнения по идеологии клавиатурных нажатий между emacs и vim, то наверное нет особой разницы. Что в emacs что в vim основная задача — привязать тысячи доступных функций к довольно ограниченному набору клавиш, да ещё сделать это так, чтобы это было удобно. Я думаю
      что в определённой степени оба редактора решают эту задачу, но соверненно разными способами. Я для себя заметил что мне удобнее пользоваться emacs т к _в основном_ я нахожусь в режиме редактирования при работе с текстом. Командный режим нужен реже. А кроме Vim я прошёл путь от: pe2, me, qedit, потом уже vi, vim, emacs, xemacs, kate. Смотрел на IDE: Komodo, Eclipse, WingIDE (+), PyCharm (+). Conclusion: все *java* IDE мне кажутся тормозами по сравнению с emacs, vim в то время как я им пользовался был не таким уж развесистым как сейчас, да и концепт там немного другой. Плюсики поставил IDEшкам что мне в общем понравились (в общем, не в деталях)
    • 0
      А в моём мире живут и vim и emacs.
      emacs — для редактирования текстов, vim — для quick-fix конфигов.
      правда вот, поправить import или константу в коде — это конфиг.
  • 0
    Интересно, как вы с отладкой справляетесь? Для меня наличие нормального, полнофункционального отладчика всегда было решающим фактором для использованием IDE. По удобству использования PDB и в подметки не годится всему, что вы получите, например, в PyCharm прямо из коробки.
    • 0
      может программы не шибко сложные? я пользуюсь pdb (по одной кнопке ставиться через yasnippet) но он интегрирован с emacs через pdbtrack, так что код отображается по ходу нажатий клавиш. также очень удобно копировать прямо куски кода в выполняемый файл. про pdb и интеграцию с Emacs покажу на отдельном video. конечно можно было бы и лучше, я не спорю что в PyCharm отладчик на уровень приятнее, но пока хватает того что есть в emacs.
  • 0
    Спасибо за топик! Летом общался с человеком, который работает с Emacs больше, чем мне самому лет. Был восхищён скоростью, с которой он за ним редактирует код.

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

        2 leggiermente Ну тут скрипт писать нужно. Чо.

        Кстати, мне тоже вот любопытно — в питоне знаю как сделать, по крайней мере тремя способами.
        В Elisp'е — пока нет… :) На ум приходят регулярные выражения, однако,
        есть ли они в лиспе вообще, и\или как этот вопрос решается?
      • 0
        Извиняюсь, это опечатка: имелся ввиду *текстовый файл с листингом параметров
    • 0
      не смотря на крайне отстойный звук рекомендую посмотреть вот это видео, похоже там то, что вас интересует.
  • 0
    В vim есть Pathogen+Git, в Sublime Text есть Package Control, а есть ли де-факто стандартный package manager для Emacs?
  • +2
    Bobuk, ты опять под чужим логином пишешь?
  • 0
    Для начинающих как-то сложно. Запустил emacs-nox, открыть файл получается, а закрыть по C-x C-k — нет. В графической версии в меню напротив «File/Close» пустота. При нажатии C-x C-k появляется «C-x C-k-» и программа ждёт продолжения комбо.
    • 0
      Опа ;-) хоть кто то попробовал реально воспользоваться инструкцией! Извиняюсь, опечатка вышла. Закрыть файл — C-x k. Исправил в тексте. Никто не говорил что будет супер легко, особенно по сравнению с типичным редактором типа notepad2 или Kate. Но оно того стоит.
      • 0
        У меня получается только C-x k [<имя буфера>] <Enter>. А ещё мне кажется, что kill и close — немножко разные вещи.
      • 0
        Но оно того стоит.
        Вот хоть бы кто объяснил, почему. Что такого в Emacs, чтобы его ставить и изучать? Чем он лучше других редакторов? Зачем в нём куча каких-то загадочных отдельных режимов (org-mode и пр.)? Почему его используют в качестве IDE? Есть ли в нём интеграция с отладчиками (GDB, например), удобное автодополнение (в одно нажатие + автоматическое для объектов/структур), поддержка сборки (Makefile и что-нибудь своё, с анализом зависимостей), удобно ли его настраивать?

        Вот такие вопросы возникают у меня при упоминании Emacs, но пока никто не отвечал на них в своих статьях. Когда предлагают изучить новый инструмент, должно быть какое-то обоснование, чтобы не получилось изучение ради изучения. Если нет толкового рассказа о возможностях Emacs, то возникает ощущение, что его нужно изучить просто для того, чтобы потом хвалиться перед коллегами своими сакральными знаниями вроде сотен выученных хоткеев.

        Это не обвинение, как вы могли бы подумать, просто я уже несколько лет слышу про крутизну Emacs и сложность его настройки, но всё это без конкретики.
        • +1
          > Чем он лучше других редакторов

          Если коротко — тем что предоставляет простой и понятный способ для расширения функционала, потому дополнения и модули легко дописываются желающими. Само название редактора говорит об этом (Editor MACroS). Прямо с 1х слов так и написано вот тут: en.wikipedia.org/wiki/Emacs.

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

          > Зачем в нём куча каких-то загадочных отдельных режимов

          Если на все файлы один режим — то ни автоподсветки ни проверки кода на корректность, ни других удобных функций редактора не будет.

          > Есть ли в нём интеграция с отладчиками (GDB, например)
          Есть. Если интересны подробности — простой поиск gdb+emacs в google даёт много ссылок и видео. я лично не пользовался — сказать ничего не могу, но отладку Python делаю в pdb, довольно удобно. Всё управляется с клавиатуры и легко копировать туда-сюда куски кода. Но подход отличается в корне от IDE отладки.

          > удобное автодополнение (в одно нажатие + автоматическое для объектов/структур)

          могу ответить конкретно по Python- функция rope-lucky-assist, выдаёт первый вариант. Чаще всего это оно. Есть варианты как показать это в командной строке/IDO, или в выпадающем меню, но однажды поняв насколько удобен ido я pull-down менюшки отключил.

          > поддержка сборки (Makefile и что-нибудь своё
          Да я обычно жму функцию compile. Если возникает ошибка — быстрый переход на номер строки. Если их много — есть функция перехода next-previous, привязанная на удобную клавишу.

          > но пока никто не отвечал
          :-) Вот стараюсь ответить.

          > Когда предлагают изучить новый инструмент, должно быть какое-то обоснование
          Те, кто работает рядом сразу видят приемущества — это конечная скорость. Т е некоторые действия, на которые в emacs есть удобно заточенные функции можно делать в другом редакторе _намного_ дольше. Ну опять же — всё зависит от человека. Даже у нас в компании, есть те, кому безразлична скорость, точнее не хочется человеку ради того чтобы раз в месяц что нибудь сделать быстро учить так много :-) А есть те, кто осваивает. Всё что стараюсь я донести — 1) то что не так страшен чёрт, как его малюют. Есть менюха, начинать работать можно с нулевым уровнем, а потом можно улучшать настройки и до-включать всякие удобные модули. 2) в этом есть смысл. Я этот смысл вижу — как по себе, так и смотря на остальных, кто смог освоить.

          Но так уж устроен человек, что ему лениво :-) Я это понимаю. Потому постараюсь в следующих статьях показать что именно я имею в виду под «скоростью» и какие фичи есть в emacs, которых не найти в самых модных IDE.

          • 0
            Спасибо за развёрнутый аргументированный ответ. Даже появилось небольшое желание поставить Emacs, хе-хе. Пока что пользуюсь Eclipse для C (CDT) и Code::Blocks для D (DDT у меня не заработал), но я не прочь перейти хоть на Emacs, если окажется более подходящим и всеохватывающим решением. Так что буду ждать ваши следующие статьи.
  • 0
    Жаль, что приходится убирать С- перед вторым нажатием. Screen, например, игнорирует второй C-, что позволяет быстрее вводить комбинации.
    • 0
      … и сокращает количество возможных комбинаций в 2*(длинна-1) раз
      • 0
        Я всё равно столько не запомню.
        • 0
          ну так и на Cmd-C Cmd-V далеко не уедешь.
          • +1
            Да вы просто мастер абсолютно верных и абсолютно бесполезных комментариев!

            Если считывать модификаторы (C-, S-, M-) только при первом нажатии, при длине комбинации до 4 символов (a-z0-9) получим примерно 23·(26+10)4=13436928 комбинаций. На этом я не только уеду, но и вас обгоню. Но даже это число больше, чем количество часто выполняемых операций, комбинации для которых готов запомнить самый головастый пользователь Emacs.
  • 0
    Редактор-то он не сложный, но кисти рук в суставе по началу болят ;) Vim намного приятнее и удобнее в использовании, к тому же он шустрее Emacs'а. Сам юзал emacs больше года, после того как познакомился с Vim, решил забить на Emacs
    • 0
      Шустрее — понятие относительное. У меня как раз наоборот — Linux/GTK vim отрисовывает намного медлнее чем emacs (тест — нажать pagedown на большом файле). По открытию файлов и т п — emacs очень быстрый, т е быстрее я редактора не видел. Различия начинаются если открывать действительно большие файлы — я заметил что emacs начинает притормаживать если открыть файл 60Mb размером, у gvim таких проблем не было. Редкое дело — редактироать такие большие файлы, а запустить gvim для такой цели не проблема.
  • +1
    а веб-разработка то тут причом?
    • 0
      извиняюсь если не правильно включил данную статью к этой теме- по сути я занимаюсь web разработкой и применяю emacs именно там (python, javascript, html, css). просто в конкретно в этой статье-введении пока про это почти ни слова. но обязательно напишу в продолжении.
      • 0
        Тоесть, в продолжении будет про настройку емакса какраз под эти режимы?
        Тогда да, и это былобы весьма полезно!
        Конфиг впечатляет :)

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