Рассказ о Емаксе
В прошлый четверг я рассказывал аудитории Хекслета про Емакс. Представляю читателям блога скомпилированную версию выступления. Рассказ пересекается с прошлой заметкой о Емаксе.
Сказанное ниже носит общий характер. Это не мануал и не инструкция с шагами что скачать и куда положить. За этими вопросами пройдите по ссылкам в конце.
Кадр из фильма Трон: наследие. Хакер взламывает кого-то при помощи Емакса. Ему помогают запущенный тетрис и игра-головоломка о перестановке пирамиды.
Содержание
- Историческая часть
- Отличие от Вима
- Философия Емакса
- Недостатки. Когда не следует использовать Емакс
- Достоинства
- Как я переходил на Емакс. Трудности, мотивация
- Установка
- Основные положения
- Конфигурирование
- Коротко о пакетах
- Сборки, форки
- Для чего я использую Емакс
- Ресурсы
Историческая часть
Емакс – это старенький текстовый редактор. Ричард Столлман начал работать над ним примерно 40 лет назад. Задумайтесь, как это много – больше, чем средний возраст популярных ресурсов. Емакс – одна из самых старых программ в айти-индустрии и все еще остается в строю.
Первоначально это были отдельные скрипты на Лиспе для операций с текстом. Позже Столлман оформил их в отдельную программу. Емакс состоит из двух частей. Это маленькое ядро, написанное на Си. Ядро отвечает за ввод-вывод и отрисовку окон. Вторая часть – код на Лиспе для манипуляции с текстом.
В Емаксе используется собственный диалект Лиспа, называемый Elisp (не путать с EMACS Lisp – это совсем другой диалект). Столлман отверг Common Lisp как излишне усложненный диалект, а Scheme – как недостаточно мощный. Так появилась своя реализация.
Технически Elisp имеет серьезные ограничения – никакой многопоточности, нет хвостовой рекурсии, трудности с замыканиями. Производительность его очень невысока, примерно как Питон или Руби старых версий. Однако, даже при всех недостатках языка в нем можно творить потрясные вещи – редактировать код, управлять процессами, читать новости, RSS, играть в игры и так далее.
Известная шутка о том, что емакс – это операционная система, в которой нет нормального редактора, косвенно права. Емакс можно рассматривать как рантайм программ, написанных на ELisp. Примерно как Хром – среда исполнения Джаваскрипта.
Емакс обязан успехом исключительно Лиспу. Многие пакеты были написаны 10-20 лет назад, но по-прежнему разрабатываются, проходят рефакторинг.
Подобно Лиспу, у Емакса есть форки и ответвления. Так, в девяностых годах обанкротилась компания Lucid, программисты которой использовали Емакс. Они взрастили внутри компании независимую версию редактора. Случилось так, что разработчики не договорились о правах и лицензиях. Так появился XEmacs – своего рода улучшенный Емакс. О форках я расскажу ниже.
Подведя черту, можно сказать, что Емакс прошел сорокалетний путь развития и активно используется программистами сегодня. За этот срок написаны сотни статей, десятки книг и мануалов. Начать пользоваться Емаксом легко – в него встроен хороший туториал, на борту большой раздел документации.
Отличие от Вима
Эти два редактора часто сравнивают друг с другом. Между ними много общего, но есть и расхождения. Так, оба редактора поощряют отказ от мыши, слепой набор, автоматизацию действий, не привязывают к конкретному языку, как ИДЕ.
Различия скорее идеологические. Вим следует философии Юникса, стараясь делать одну задачу, но хорошо – редактировать текст. За счет режимов и общей механике большинство операций в Виме делаются быстрее. В каждом режиме клавиша имеет разную функцию. Комбинации становятся емче, нужно меньше клавиш, чтобы задать комбо.
В Емаксе нет режимов из коробки, поэтому комбинации нуждаются в дополнительных клавишах (Комманд и Мета), чтобы различать ввод текста и команды. Это делает комбинации не такими быстрыми в наборе.
Емакс не ограничивает себя только набором текста, наоборот – берет на себя самые разнообразные задачи, иной раз абсурдные. Каждый должен сам провести грань – что отдавать на откуп Емаксу, а что – системным утилитам.
Субъективно, Емакс пребывает в более вменяемом состоянии, чем Вим. В сообществе последнего сильны настроения в духе “взять все и переписать”. В Емаксе такого нет. Существуют Емакс-пакеты, которые очень точно воспроизводят принципы работы Вима – режимы, комбинации, исполнение Вим-скриптов.
Философия Емакса
Емакс создавался для того, чтобы редактировать текстовые файлы. Однако из-за Лиспа и развитой подсистемы ввода-вывода вышло так, что Емакс прекрасно работает с текстом в широком смысле, неважно откуда он поступает.
Это значит, Емакс одинаково хорошо обработает текст, который пришел из сети или от стороннего процесса. Поскольку в Юникс-среде основной способ передачи информации – текст, Емакс хорошо подходит для интеграции с системой. Само собой вышло так, что в Емаксе можно выполнять разные задачи, которые только косвенно связаны с текстом.
Недостатки. Когда не следует использовать Емакс
Емакс не идеален. Вот в каких случаях я не рекомендую его использовать.
-
Вам нужен редактор для разовых нужд, в основном копи-пасты. В этом случае прекрасно подойдет Саблайм.
-
Вы пишете на языке-платформе, неотделимой от ИДЕ. Например, C# или Java. Пытаться доработать любой другой редактор бессмысленно.
-
Порог входа выше, чем у стандартных редакторов.
-
Для комфортной работы редактор нужно настроить. Настройка может длиться годами. Главное – не увлекаться.
Достоинства
-
Работает в разной степени со всеми известными языками и технологиями.
-
Очень гибкая система обработки текста
-
Мощная поддержка процессов. Простота интеграции с любым системным процессом или утилитой, например, git, docker, psql, grep, ls и т.д.
-
Конфигурирование всего и вся
-
Встроенный терминал, ssh-клиент, почтовик, браузер и масса других утилит
-
Золотые хиты детства – змейка, тетрис!
M-x snake
иM-x tetris
-
Единообразие. Каждый буфер, неважно, файл это или список процессов, подчиняется основным правилам навигации и поиска. Например, вы выполнили поиск в файле, открылся новый буфер с результатами. Теперь вы можете искать в буфере результатов, словно в файле! В любом буфере, неважно, файл это или что-то другое, можно настроить правила подсветки строк. Везде одинаковая навигация, копирование и вставка. Это дико удобно. Напротив, в стандартных ИДЕ каждое окно живет по своим особым правилам.
Как я переходил на Емакс. Трудности, мотивация
Я работаю в Емаксе третий год. Расскажу, как как пришел в него и с какими трудностями столкнулся.
Мой Емакс сегодня. По клику большая версия. Слева – дерево файлов, посередине – эта статья в процессе подготовки, справа – код на Схеме.
Давно я использовал Пайчарм, поскольку основной мой язык – Питон. Затем переключился на Саблайм. Довольно быстро раскачал его плагинами и работал на равных с теми, кто остался в ИДЕ.
Зачем нужен был этот дауншифт? Пытался обозначить список необходимых вещей. Когда у тебя комбайн с сотней функций, трудно понять, что именно из этого нужно. Принцип минимализма – убираем все, затем понемногу добавляем нужное.
В случае с Саблаймом выяснилось, что для комфортной работы достаточно 5-6 модулей для нескольких языков, интеграции с SVN и Git. Саблайм я до сих пор считаю программой высочайшего уровня и рекомендую как легкую замену ИДЕ.
Но вот что беспокоило – все авторитетные для меня инженеры работали либо в Виме, либо в Емаксе. Причем вообще без вариантов (чаще – в Емаксе, но не суть). Это легко выяснить из интервью, статей, или просто посмотреть dotfiles на Гитхабе. Так, Емаксом пользуются Гвидо ван Россум (создатель Питона), Джо Армстронг (Эрланга) , Линус Торвальдс (линукса и Гита), Тед Дзюба (предприниматель из Долины). Армин Ронахер, чей вклад в Питон неоценим, используем Вим.
Полагаю, у названных людей есть деньги чтобы купить лицензии на нужные ИДЕ, но они этого не делают. Линус как-то сказал, что готов купить любую ИДЕ, но его пальцы уже нельзя переучить после 20 лет Емакса. Гвидо положительно отзывался о Пайчарме, но добавил, что опять пришел к связке Емакс + pdb (самый базовый отладчик).
Я пришел к нескольким выводам. Во-первых, ИДЕ действительно помогает на раннем этапе карьеры. Но на уровне упомянутых программистов это уже не играет особой роли. Они создали языки и компиляторы без коммерческих средств с месячной подпиской.
Во-вторых, ИДЕ – это прежде всего бизнес. Адепты Джет-Брейнс расскажут, что без ИДЕ код пишется плохо, нарушаются бизнес-процессы и страдает бизнес. Их позиция ясна.
Как показывает практика, компания оставляет за собой право сменить лицензию. Недавняя шумиха вокруг Джет-Брейнс это доказывает. Я положительно воспринимаю идею платной подписки, но лишь для тех вещей, которые работают как черный ящик. Например, Фотошоп и облачные хранилища. Но текстовый редактор – последний рубеж. Он должен быть всецело моим, и точка.
Наконец, бывают особо критичные случаи, когда без ИДЕ человек оказывается совершенно проф-непригоден. Один коллега в проекте впал в амнезию, когда Пайчарм не смог открыть по клику исходники одного хитрого модуля. Другие не мыслят себя без подсветки и автодополнения. Это полезные вещи, но плохо, когда они становятся зависимостью.
Я решил переходить на Вим или Емакс, чтобы повысить уровень.
Если коротко, с Вимом не пошло. Занимался им две недели, было страшно медленно. К концу второй недели я более-менее им овладел, но отходняк был тяжелый. У меня нет никаких претензий, возможно, я что-то не так делал или взялся за слишком трудные мануалы. По крайней мере, выучил основные команды и могу править конфиги на серверах. В будущем планирую второй заход в Вим.
Напротив, с Емаксом пошло проще. Возможно, благодаря cua-mode
. Это такой режим
для новичков, когда основные команды вроде копирования и вставки работают как в
классический редакторах. Долгое время я, за годы привыкший к Ctrl-X/C/V
,
использовал эти же комбинации. Потом перешел на общепринятые в Емаксе.
Установка
-
Для Мака. Либо скачать графическую версию, либо поставить консольную версию из brew, предварительно обновив формулы.
-
Для линукса. Из пакетов: apt-get, yum.
-
Для Винды. Скачать бинарники. На винде осложнения в том, что Емакс нуждается в стандартных Юникс-утилитах ps, grep, find. Понадобится какой-нибудь Cygwin или аналог.
Пакет для интеграции с Гитом под названием magit требует Емакс не ниже 24.4. Это не очень хорошо, так как в старых Убунтах в пакетах указан 24.3. Приходится заморачиваться со сторонними репозиториями. Для начинающих это неважно.
Основные положения
Главная смысловая единица в Емаксе – буфер. Это место, где какой-то текст. Буфер может быть связан с файлом. Буфер произошел от принципа работы с данными на лентах. Писать каждое изменения на ленту – страшно медленно. Поэтому считывали данные в память, обрабатывали и записывали поверх.
Буфер может и не быть связан с файлом. Например, это список процессов, результат поиска в текущем буфере, греп по директории, список файлов, JSON из какого-то урла, интерактивная справка и так далее.
В момент старта Емакса появляются три стандартных буфера. Это приветствие со ссылками на документацию. Потом буфер сообщений, своего рода лог. И буфер scratch для копипасты.
Этот последний буфер особый – в нем можно выполнить любой код на Лиспе и сразу проверить, какой эффект имеет этот код.
В Емаксе используют особые сокращения для клавиш. C (командная клавиша) означает Контрол, M (мета-клавиша) означает Альт. Дефис означает одновременное нажатие. Важно помнить, что 40 лет назад клавиатуры были другие, и клавиша Command располагалась рядом с пробелом, как сегодня на Маке. Так что Столлман не виноват!
Клавиатура тех дней. Обратите внимание на расположение служебных клавиш.
Примеры:
C-x b
– нажать вместе Контрол и x, потом b – сменить буфер.C-x C-f
– нажать одновременно Контрол и x, потом одновременно Контрол и f – открыть файл.M-g g
– нажать вместе Альт и g, потом еще раз g – переход на нужную строку текущего буфера (система спросит номер).
Нажатие C-g
прерывает ввод текущей команды.
Комбинаций великое множество: одна только навигация по тексту насчитывает несколько десятков, а есть еще манипуляции с регистром, параграфами, логической структурой, специфичные для пакетов операции.
Не нужно стараться запомнить все сразу, это придет постепенно.
Чтобы эффективно работать в Емаксе, желательно освоить две вещи, о которых упоминал Кирилл в вебинаре по Виму. Первое – перенести клавишу Контрол на Капс. Это необходимо и вообще не обсуждается. Если нажимать ее в стандартном положении, рука отвалится из-за сильного напряжения в кисти.
Как сделать это в Маке, я уже писал раньше.
Второе – займитесь слепой печатью. Зайдите на сайт онлайн-тренажера. Зарегистрируйтесь через соц.сеть, чтобы накапливалась статистика. Каждый день утром 15 минут печатайте вслепую. Сначала будет бесить, но статистика покажет медленное продвижение, и это классно. Вы должны как можно скорее избавиться от стрелочек и пользоваться только центральной частью клавиатуры.
Один из графиков моего профиля. Он показывает, что скорость набора медленно, но растет.
В Емаксе нет табов для открытых файлов. Это шокирует тех, кто только начал с ним работать. Дело в том, что табы не нужны. Когда вы долго работаете, сами по себе накапливаются открытые буферы (как мы уже знаем, в Емаксе это не только файлы). Я никогда не выключаю ноут, а только погружаю в сон. К концу второго месяца в Емаксе примерно 400 буферов. Представьте, что для каждого был бы таб. Я бы просто ничего не видел из-за них.
Кстати, любителям ИДЕ посвящается – откройте 400 файлов и проверьте, как поведет себя система. У моего коллеги ноут грелся так, что обжигало руку. А Емакс потребляет 100 Мб памяти и 10% процессора.
Удивительно, но основные комбинации для перемещения по тексту работают много где за пределами Емакса – например, в Хроме, почтовом агенте Мака. В Баше по умолчанию включена раскладка Емакса.
Конфигурирование
В Емаксе настраивается все что только возможно. Существует бесконечное число конфигов, пресетов, сборок, потому что каждый делает это под себя. У опытных разработчиков на Гитхабе обязательно есть репозиторий с настройками редактора.
Не стоит допускать ошибку и разу ставить сторонние конфиги с кучей пакетов. Вы должны понимать, что происходит и как этим управлять. Вы должны знать назначение каждой строчки вашего конфига. Поэтому оптимальный путь – начать с нуля, постепенно наращивая конфиг, как жемчужину.
Конфиг в Емаксе – это файл с лисп-кодом. Внутри устанавливаются переменные, вызываются команды и подключаются пакеты. Как правило, пакеты берут всю работу на себя, нужно лишь задать им правильные настройки (флаги, пути).
При старте Емакс ищет файл ~/.emacs
. Затем – ~/.emacs.d/init.el
. .el
–
расширение файлов на Elisp. Обратите внимание, что первый файл не содержит
расширения в имени.
Конфигурация не должна быть завязана на конкретную машину или файловые пути. Желательно писать ее так, чтобы было легко перенести. Как только она превысит десять строк, выносите в Гитхаб. Добавьте мейк-файл или шелл-скрипт, чтобы развернуть ее парой команд.
Вот как ставится моя конфигурация:
# Скачать репозиторий куда-то себе
git clone https://github.com/igrishaev/dotfiles.git ~/somewhere
# скопировать папку .emacs.d в домашнюю директорию
cp -r ~/somewhere/.emacs.d ~/
# перейти внутрь
cd ~/.emacs.d
# поставить утилиту Cask
make install-cask
# установить пакеты, перечисленные в cask-файле.
# переменную EMACS нужно задать, если у вас в системе несколько емаксов
EMACS=/path/to/bin/emacs make install-packages
Я терпеть не могу длинных навороченных конфигураций со многими файлами. При малейших обновлениях они ломаются. Конфигурация должна быть максимально декларативной. Только список необходимых пакетов и установка переменных.
Коротко о пакетах
Для емакса написаны тысячи пакетов, некоторые из которых тянут на полноценные приложения, исполняемые внутри Лисп-машины.
Пакеты хостятся в репозиториях, у которых следующие имена – GNU, Melpa,
Marmelade
. Как правило, в конфиге указывают их все. Стандартный менеджер
пакетов из поставки Емакса может устанавливать из репозиториев, но не умеет
разруливать зависимости. Поэтому используют либо пакет el-get, либо утилиту
Cask, как в моем случае. Это утилита на Питоне для сопровождения проектов на
ELisp. В ней много всего, в том числе установка зависимостей. Она переопределяет
стандартный менеджер пакетов. Вы пользуетесь как будто стандартным.
Основные пакеты для Емакса без привязки к конкретным языкам:
- magit – Интеграция с Гитом
- nav – Панель файловой навигации
- auto-complete – Автодополнение из разных источников
- flycheck – проверка синтаксиса для разных языков. Обычно нужен сабмодуль для конкретного языка
- markdown-mode – Маркдаун
- nyan-mode – Нян-кот в твоем Емаксе!
- simpleclip – Облегчает работу с системным буфером обмена
- json-mode – Подсветка и валидация джейсона
Сборки, форки
Я не особо осведомлен насчет сторонних сборок Емакса. Почти все время я работал со своей конфигурацией на чистом Емаксе, чтобы понять, как все работает.
Как уже упоминал выше, существует XEmacs – альтернативная ветка Емакса. В ней больше внимания уделено интерфейсу, шрифтам и внешнему виду в целом. Большинство крупных пакетов разрабатывают так, чтобы они работали в XEmacs тоже.
Проект Эрго-Емакс ставит цель создать оптимальную клавиатурную раскладку, где наиболее востребованные функции размещены в нужных местах. Авторы полагают, раскладка повысит производительность и снизит усталость рук. На этом же сайте тусит сообщество, есть сборник рецептов, снипетов и все такое.
Наконец, существует Spacemacs – попытка взять лучшее из двух миров. Соединить механику Вима с мощью платформы Емакса. Простыми словами, это громадный конфиг с пакетами для имитации Вима.
Ставил эту сборку, но не впечатлился. Кое-где были проблемы с цветовой схемой (текст сливался с фоном), приходилось ставить недостающие пакеты. Если возможности Вима я выключил, так как не особо им владею, то что я получил в остатке, кроме нескучной темы?
Судя по репозиторию проекта, работа проделана внушительная, но я не проникся. Да и вообще, идея смешения мне не нравится. Она наивна по своей природе. Вот есть Руби и Питон, у них достоинства и недостатки. Давайте возьмем от каждого только достоинства и получим идеальный язык! Или давайте Мерседес с Ауди смешаем. Или Виндуз с Маком. Это не работает.
Сложилось впечатление, что в этой сборке выигрывает только Вимер. Для Емаксера нет ничего нового. Добавлю, любая имитация всегда отстает на шаг-два от эталона. Когда для Вима запилят новую фичу, она попадет в Spacemacs с запозданием.
Для чего я использую Емакс
В емаксе можно делать почти все, что угодно, главное – знать меру и не стать упоротым фанатом.
Надо понимать, что некоторые пакеты имеют скорее не практический, а спортивный интерес. Например, один тип написал модуль управления кофеваркой по USB. Это забавно, но не стоит воспринимать всерьез.
В Емаксе на все найдется команда.
Я использую Емакс для следующего:
-
Программирую в Емаксе на Питоне, Кложе, Джаваскрипте, Ракете, Коммон-Лиспе. В нем же ковыряю Хаскелл и Гоу. Под каждый язык – пакет или два для поддержки. Питон, надо сказать, поддерживается очень хорошо. Трудность скорее в том, какие пакеты для него выбрать из множества. Для Лиспов емакс – родная среда.
-
Редактирую структурированные файлы: Маркдаун, Json, Yaml, ini, html, css. Где не хватает коробочных средств, тоже ставлю пакеты.
-
Работаю с системами контроля версий, почти не вылезая в терминал. Смотрю диффы, блейм, логи. Делаю и мерджу ветки в Емаксе.
-
Изредка читаю онлайн-документацию во встроенном браузере EWW. Это полезно, когда не хочешь постоянно переключаться из браузера в редактор. Делишь экран пополам, в слева страничка с доками,справа код – удобно. Емакс умеет проматывать соседний буфер, не переключаясь из основного.
-
Планирую делать резолв конфликтов при мердже веток встроенным пакетом emerge. Пока что использую kdiff3.
-
Некоторое время, когда в команде пользовались джаббером, сидел из Емакса. Тоже удобно, особенно когда обсуждаешь код.
-
Пытался пользоваться почтой с помощью встроенного пакета Gnus – не пошло в силу однопоточности Лисп-машины. На проверку почты уходит до 10 секунд (у меня куча папок), за это время ничего нельзя сделать.
-
Запускаю и контролирую процессы с помощью пакета prodigy. Был проект на микросервисной архитектуре. Чтобы завести его, нужны были штук 6 фейковых рест-сервисов. Эти заглушки было удобно поднимать и гасить прямо в Емаксе.
-
Порой пользуюсь встроенным терминалом, когда лень открывать основной.
-
Иногда делаю презентации в емаксе: пишу структурированный файл в разметке ORG, который экспортируется в HTML + reveal.js. Например, вот слайды для доклада о юнит-тестах: исходник, результат.
-
Рисую ascii-таблицы в org-mode. Параметры таблицы задаются командой. Таблица ведет себя как лист в Экселе – можно перемещаться по ячейкам, добавлять и удалять строки и столбцы, сортировать, вставлять формулы. Таблица автоматом растягивается под данные в ячейках. И при этом копируется как текст. Очень удобно для документации. Руками вы ее будете рисовать час.
Пример по шагам:
M-x org-table-create
– система спрашивает размер таблицы, ввожу число строк и колонок, получаю
| | | | | |
|---+---+---+---+---|
| | | | | |
- Ввожу данные:
|Python |Ruby |Perl |Java |Common Lisp |
|---+---+---+---+---|
|1 |2 | 3 | 4 |5 |
- Нужен еще ряд? Набираю
M-x org-table-insert-row
:
|Python |Ruby |Perl |Java |Common Lisp |
|---+---+---+---+---|
|1 |2 | 3 | 4 |5 |
| Some long test | 42 | foo | bar | Another long text|
- Все съехало, некрасиво. Набираю
M-x org-table-align
:
| Python | Ruby | Perl | Java | Common Lisp |
|----------------+------+------+------+-------------------|
| 1 | 2 | 3 | 4 | 5 |
| Some long test | 42 | foo | bar | Another long text |
Тадам. И это даже не верхушка айсберга, а самая мелочь из того, что можно делать в org-mode.
- Возвращаюсь к нашему списку. Веду GDT – учет личных и рабочих дел. Давно хочу написать на эту тему в блог, но пока что отдельным абзацем.
Выше я уже не раз упоминал про org-mode. Это что-то вроде офисного пакета, только для Емакса. В него входит особый язык разметки, работа с таблицами, всевозможные экспорты.
В языке разметки есть особые TODO-элементы. Им можно менять состояния, причем воркфлоу вы задаете сами в шапке файла. Им можно выставлять теги, иерархию, писать комментарии и всякие другие вещи. Но главное, их можно привязывать ко времени и делать повторяющимися.
В специальном режиме timeline
Емакс покажет задачи на временной полосе, а вам
остается помечать их выполнение. При этом у вас по-прежнему текстовые файлы. Вы
можете поправить все что хотите руками, смотреть дифы.
Перенес все задачи в такой файл и храню его в приватном репозитории. Каждое утро смотрю, какие задачи меня ждут и стараюсь их выполнять. Задачи можно архивировать. Емакс вырезает их из файла и переносит в архивный файл с похожим названием.
Не могу расшарить свой файл, поскольку в нем немало приватных данных, но примерно это выглядит так:
** DONE Sign Contract
CLOSED: [2016-03-30 Wed 12:36] SCHEDULED: <2016-03-30 Wed>
- CLOSING NOTE [2016-03-30 Wed 12:36] \\
signed
** TODO Get Reports
DEADLINE: <2016-06-20 Mon +3m>
- CLOSING NOTE [2016-03-28 Mon 10:52] \\
got and paid
:PROPERTIES:
:LAST_REPEAT: [2016-03-28 Mon 10:52]
:END:
** DONE IP USN
CLOSED: [2016-04-25 Mon 10:00] DEADLINE: <2016-04-18 Mon>
- CLOSING NOTE [2016-04-25 Mon 10:00] \\
done
** TODO Visit some secret place
DEADLINE: <2016-03-31 Thu>
** DONE Sber get new card
CLOSED: [2016-04-06 Wed 15:42] SCHEDULED: <2016-04-04 Mon>
- CLOSING NOTE [2016-04-06 Wed 15:42] \\
got it!
** DONE Add bank account to Paypal
CLOSED: [2016-03-25 Fri 15:39] SCHEDULED: <2016-03-24 Thu>
- CLOSING NOTE [2016-03-25 Fri 15:39] \\
added
** TODO Sber Deposit
SCHEDULED: <2017-02-06 Mon>
** DONE Phone to Office
SCHEDULED: <2016-03-01 Tue>
- CLOSING NOTE [2016-03-01 Tue 15:02] \\
phoned
- CLOSING NOTE [2016-02-24 Wed 22:52] \\
phoned
Это бытовые дела – позвонить, подписать, сходить в Сбербанк. Все задачи группирую по крупным разделам: работа, семья и дети, бизнес, блог, сторонний проект, новинки. Почти ничего не правлю руками, все сущности создаются командами и хоткеями.
На временной линии задачи выглядят так:
Friday 10 June 2016
Saturday 11 June 2016
Scheduled: TODO Practice Typing :learning:
Scheduled: TODO Listen english :learning:
Scheduled: TODO Do some secret stuff
Scheduled: TODO Pay for one thing
Sunday 12 June 2016
Monday 13 June 2016 W24
Tuesday 14 June 2016
Scheduled: TODO Another important task
Scheduled: TODO Listen english :learning:
Deadline: TODO Publish announce
Чтобы успевать как можно больше дел, нужно сделать их регулярными и заставить систему тебя пинать. Способ выше очень подошел.
Ресурсы
- Официальный туториал
- Подробнейшая вики
- Блог китаянки, у которой конфиг Емакса длиной с Китайскую Стену
- Довольно свежая книжка
- Серия статей Алекса Отта
- Раздел на Хабрахабре
Нашли ошибку? Выделите мышкой и нажмите Ctrl/⌘+Enter
Test, 25th Jun 2016, link
Кстати, любителям ИДЕ посвящается – откройте 400 файлов и проверьте, как поведет себя система. У моего коллеги ноут грелся так, что обжигало руку. А Емакс потребляет 100 Мб памяти и 10% процессора.
День добрый, являетесь ли вы при этом более эффективным разработчиком чем ваш коллега (который просто не открывает скажем более 10 файлов в ИДЕ, чтобы не греть ноутбук)? Иными словами есть ли какой либо профит от ваших астрономических цифр файлов если вы печатаете используя лишь одну клавиатуру и смотрите код лишь одной парой глаз.
test, 11th Oct 2016, link , parent
Есть толк, так как в каждом буфере, как я понимаю, сохраняется его состояние, он загружен, через helm-mini к нему можно получить доступ за миллисекунды, а не лазить по каталогу лишнее время.
antonshwab, 17th Dec 2016, link
Вы сталкивались с тем, что flycheck в емаксе не может подхватить конфиг еслинта? Я прошерстил первые десять страниц гугла по этому вопросу, перепробовал все рекомендации в ишью, переустанавливал емакс и ни как. Я добился того, что флайчек находит еслинт в нодмодулс локального проекта. Везде пишут, что далее еслинт должен сам найти конфиг поднимаясь все выше, но у меня не так.
Ivan Grishaev, 18th Dec 2016, link , parent
Нет, с таким не сталкивался. Использовал flycheck только для Питона.
LeusMaximus, 4th Feb 2017, link
Иван, подскажите, вы все еще используете cask, или у вас сейчас все настройки находятся просто в файле .emacs ?
Ivan Grishaev, 4th Feb 2017, link , parent
Каском больше не пользуюсь, все лежит в одном файле. Так проще, я считаю.
Ildar Polyakov, 10th Dec 2024, link
Иван, вы привели пример про презентации: “Иногда делаю презентации в емаксе…” с двумя ссылками. Вторая ссылка с результатом выдает ошибку 404 в браузере. Подскажите как ее открыть
Ivan Grishaev, 10th Dec 2024, link
Исправил, спасибо. Правильная ссылка: https://raw.githubusercontent.com/igrishaev/talks/refs/heads/gh-pages/pytest.html
Сохраните ее на диск и откройте браузером, там будет страшненький HTML. Сейчас я уже так не делаю. Сначала пишу конспект на бумажке, а потом либо рисую на маркерной доске, либо просто списки в текстовом документе, который прокручиваю.