Второе пришествие emacs

История продолжается с момента, когда я был полностью доволен связкой терминал + 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 для функции

Следите за обновлениями, не переключайтесь. Расскажу, на сколько меня хватило.

@Константин Овчинников
Теги: #linux #продуктивность

Комментарии