История продолжается с момента, когда я был полностью доволен связкой терминал + tmux + vim + vimwiki. В плюсах:
- Быстро: максимально быстрое управление с клавиатуры
- При редактировании markdown есть дополнительные удобства
- Вроде как всё внутри терминала
По прошествии времени при этом выявились минусы:
- Выглядит слишком аскетично, хотя вроде как это должно было помочь
- Убогая работа со вставкой и редактированием ссылок
- При росте объёма информации моя страничка превратилась в месиво, но это вопрос и ко мне
- Переключение языков надоело, хотя у меня стоит переключение на CapsLock
- Надоели разные сочетания клавиш для копирования текста в терминале и в остальном окружении
Надо признать, что учёные, среди которых emacs достаточно популярен, знают толк в обработке больших объёмов информации, поэтому в org-mode действительно это делать очень удобно. Но мне необходимо было время, чтобы с этим смириться. Точнее, смириться с тем, что нужно использовать что-то помимо Markdown. А рецепт обработки больших объёмов информации известен – надо её разметить:
- Тегами
- TODO
- Приоритетами
- Датами: когда задача запланирована и когда надо сделать
Собственно это то, что есть в emacs org-mode, и чего нет в vimwiki, да и в целом не во всякой wiki есть. Если вам не нравится emacs, org-mode поддерживается logseq. При этом управление всеми дополнительными штуками сделано через / – достаточно его нажать, и появляется меню выбора. Меня же манил emacs:
- Как инструмент, в котором я могу делать больше задач, чем просто ведение своей wiki (например, делать этот сайт и программировать), при этом использовать все те же возможности и сочетания клавиш
- Как challenge, ведь нужно осваивать что-то новое
- Окончательно моё любопытство разожгло видео, в котором утверждалось, что vim намного более популярен
Но до того, как заново связаться с emacs, я задумался о том, что же меня, собственно, смущало, и как это можно обойти:
- Физиологичность сочетаний клавиш: как правило, я нажимал Ctrl / Alt и саму клавишу одной рукой; когда работаешь долго, это начинает напрягать; в итоге я понял, что как и рекомендовал Владимир Владимирович Шахиджанян, клавиши нужно нажимать разными руками, и это снимает часть проблемы с нажатием большого числа клавиш
- Doom Emacs, в котором не понятно решительно всё; если сочетания клавиш не работало, я не мог понять, это я туплю или оно переопределено; туда же eval-mode, по крайней мере, для начала
- Документация: она часто реально не отвечает на интересующие тебя вопросы; лично мою проблему на 90% решило приложение для Android
Например, в документации обнаружилось, что достаточно нажать Meta (Alt) и число, чтобы повторить действие несколько раз. Меня раздражало C-u, потом число. Также очень советую почитать про базовые движения, копирование текста, работу с окнами и буферами, ну и dired.
Также хочу порекомендовать несколько каналов, которые сильно помогли разобраться не только с кучей вопросов, но и с самим подходом к освоению emacs – по возможности, будут давать ссылки прямо на плей-листы про emacs:
- DistroTube – Дерек в целом красавчик, потому что он задаётся корневыми вопросами и честно отвечает на них; частично это связано с тем, что он профессиональный обучатор, и это заметно; кстати, он поддерживает замечательную страничку на gitlab с примерами; именно Дерек объяснил, что emacs не нужно расценивать как текстовый редактор, это среда исполнения elisp-кода, которая позволяет его переписать и переопределить полностью, что никакому редактору и IDE не снилось
- System Crafters: например, Emacs Essentials и Emacs From Scratch
- Prot: научная подготовка даёт себя знать, поэтому видео очень (иногда излишне) подробные
- Gavin Freeborn: это разработчик, у него достаточно специфичные задачи, зато он подробно рассказывает про переход с vim на emacs
- Выступление про org-mode – вроде ничего особенного, но тоже познавательно и многое говорит о сути emacs
Что же мне было необходимо от emacs:
- Простота настройки; писать об этом особенно смешно после ссылки на плейлист Emacs From Scratch продолжительностью 12 часов
- Org-mode для управления задачами; если мне нужен Markdown – я буду писать в Markdown; если мне нужен LaTeX – я буду писать в LaTeX; также я не стал бы писать в org-mode dotfiles, код сайта или код программы
- Частичная замена нескольких приложений: терминал, файловый менеджер
- Комфортная рабочая среда с едиными сочетаниями клавиш внутри всего, что происходит в emacs
- Markdown mode для блога; это тоже забавно, потому что Markdown устроен именно так, чтобы свести разметку к минимуму
Подход был настраивать с нуля, чтобы я точно понимал, что происходит. Из дополнений ставить только то, что мне необходимо. Начнём с облагораживания архаичного внешнего вида – кстати, горячо рекомендую шрифты Source Code Pro:
(scroll-bar-mode -1) ;; отключаем полосу прокрутки
(setq inhibit-startup-screen t) ;; отключаем заставку
(setq dired-listing-switches "-laGh1v") ;; включаем более приятный вид dired
(setq-default word-wrap t) ;; включаем перенос слов
(custom-set-faces
'(default ((t (:family "Source Code Pro" :foundry "ADBO" :slant normal :weight normal :height 173 :width normal))))) ;; шрифт
Шрифт можно выбрать в меню Options
(Set Default Font
, потом нажать Save Options
. Если вы уже скрыли меню, ничего страшного, жмите F10
.
Ставим тему, я предпочитаю тёмную Monokai; кстати, эта тема частично снимает мои предыдущие претензии к буйству цветов и расцветок в emacs:
(add-to-list 'custom-theme-load-path "~/.emacs.d/themes/")
(load-theme 'monokai t)
После этого включаем нормальный каталог пакетов (кстати, чтобы применить изменения, можно нажать M-x load-file RET init.rc
):
(require 'package)
(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/"))
Кстати, org-mode встроен в emacs, а вот Markdown и reverse-im надо доустановить. Например, с помощью use-package, который можно поставить первым: M-x package-install RET use-package
Дальше идёт тюнинг, он у каждого свой. Например, я включил отображение недавнего списка файлов по C-x C-r:
(recentf-mode 1)
(global-set-key (kbd "C-x C-r") 'recentf-open-files)
И что мы получаем в итоге:
- Выглядит неплохо, в том числе, плавно
- Работа со ссылками с помощью функций, а не вручную: как в Markdown, так и в org-mode
- Структуру задач буду пересматривать, но это не только к emacs вопрос
- Сочетания клавиш работают, в большинстве случаев, в любой раскладке
- Работа с буфером обмена устраивает больше
Кстати об альтернативах org-mode: Markdown mode поддерживает чек-листы в двух состояниях, так что при желании можно было бы остаться и на Markdown. Но тянуло на приключения.
Ещё в плюсе – возможность прямо в редакторе посмотреть документацию:
- C-h m для текущего режима
- C-h v для переменной
- C-h f для функции
Следите за обновлениями, не переключайтесь. Расскажу, на сколько меня хватило.
Комментарии