emacs
- темплейты и шаблоны
- elisp
- поиск и замена в emacs
- установка пакетов в emacs
- дополнение и предложение в emacs
- шеллы в emacs
- git в emacs
- orgmode
- bookmarks
- темы емакса
- кнопочки емакса
- emacs modeline
- time tracking в емаксе
- проект в emacs
- emacs для пишущих прозу
- (около)емаксовые браузеры
- окошки емакса
- xml в emacs
- recutils - бд на текстовых файлах
- emacs на телефоне
- gnus
Дивной красоты текстовый редактор и текстовый интерфейс много к чему.
Ещё прекрасно учит смирению, так как:
- освоить полностью невозможно;
- сколько-нибудь длительно услеживать за актуальностью конфига и пакетов - пожалуй, тоже;
- про заметки же обо всём этом и говорить не приходится. Но в меру сил пытаюсь.
О прекрасности емакса
Пожалуй, справедливо сказано, что это в первую очередь не редактор (хотя редактор там тоже есть), это среда для жизни.
https://old.computerra.ru/features/206939/ - для сравнения идея. https://www.ianbicking.org/the-vs-emacs.html - про то, что реализация совершенно напрасно не учла опыт емакса.
Емакс весьма не идеален, зато существует. Действительно не (только) редактор. Потому что среда и инфраструктура для приложений, интерпретатор языка Emacs Lisp, конструктор текстового редактора. Малая часть программы реализована на языке С (отвечает за базовое взаимодействие с ОС, ввод-вывод, отрисовку окон), а весь основной функционал — на Emacs Lisp (elisp).
Базовый способ взаимодействовать с чем-то - редактирование текста. Работа с текстом как метафора много чего. Умеет работать с тем, что получается представить как текст, и кое с чем ещё. Включает в себя ряд приложений. Управляется командами и сочетаниями клавиш, менюшек не хватает, хотя и меню там переделываются вполне так на лету, при переключении из одного буфера в другой, а ещё уйма текстовых выбиралок, дополнялок и вообще.
Вообще, есть идея о том, что емакс это такой себе UI тулкит типа GTK или Qt, в котором удобно создавать текстовые интерфейсы: https://ambrevar.xyz/emacs-everywhere/ (https://t.me/zettelmacs/217)
приколочка
https://grundik.livejournal.com/379781.html - про команду M-x butterfly и комикс http://xkcd.com/378/.
С чего начинать, если вдруг захотелось освоить
- поставить сам emacs.
- просмотреть туториал по
C-h t
, - русскоязычным - поставить reverse-im.
- минимально освоить org-mode,
- завести literate конфиг, чтоб не потеряться в своём конфиге :).
- для цеттелькастена - поставить org-roam. :)
- Начать читать мануал, который по
C-h r
. И разговаривать о том, чего хочется, чтоб получить удобную свою среду. https://t.me/emacs_ru - прекрасное место для таких разговоров :)
И да, я в курсе, что это не исчерпывающее изложение, что надо сделать. Я подумаю, чем дополнять.
И возможно, https://github.com/redguardtoo/mastering-emacs-in-one-year-guide/blob/master/guide-en.org, но вот тут я не согласна с базовой там идеей, что свой конфиг - скорее не нужен, а надо брать какой-то достаточно массовый фреймворк, и радоваться, что за тебя решили все проблемы.
- https://habr.com/ru/post/105300/ - простенько про основы-основы орг-мода, ради которого можно браться.
- https://github.com/nobiot/Zero-to-Emacs-and-Org-roam - это для windows даже - с нуля до org-roam.
Готовые «фреймворки»
- emacs-starter-kit, prelude, doom, spacemacs - я бы не советовала. Слишком много меняют, слишком сложно от них уходить в переделанное под себя.
- https://github.com/purcell/emacs.d (который советуют в mastering emacs)
- https://github.com/bbatsov/prelude
- https://prelude.emacsredux.com/en/latest/usage/ - доки прелюда. Там есть интересное, если это именно читать. Но думается, это чтение не для начала.
Попытки конфигов для начинающих, таких, чтоб дальше переделывать под себя было удобно
- https://github.com/dexager/zettelkasten-emacs - literate, то бишь конфиг, который работает, но при этом по форме — текст рассказа обо всём со вставками конфига.
- https://sanemacs.com/
- https://github.com/SystemCrafters/crafted-emacs
- https://sr.ht/~ashton314/emacs-bedrock/
https://www.reddit.com/r/emacs/comments/102icl5/comment/j2vccrx/
- https://panadestein.github.io/emacsd/
- https://github.com/mxco86/emacs-config/blob/master/.emacs.d/emacs.org
- https://github.com/frap/emacs-literate
- https://www.lucacambiaghi.com/vanilla-emacs/readme.html
- https://eshelyaron.com/esy.html
And here are many more configurations, literate or ordinary at this place https://www.emacswiki.org/emacs/ExampleConfigurations
snapshot emacs
2021-07-27 20:42:12 +0300 - устала дожидаться, когда в дебиане обновят :)
- https://www.emacswiki.org/emacs/EmacsSnapshotAndDebian - инфа, где брать.
Учитывать, что при переходе на snapshot и обратно, надо выбирать нужный emacsclient.
sudo update-alternatives --config emacsclient
https://www.masteringemacs.org/article/whats-new-in-emacs-27-1
Полезные ссылки
В целом про емакс
- https://www.gnu.org/software/emacs/manual/index.html - всякомануалы
- https://www.reddit.com/r/emacs/
- https://github.com/emacs-tw/awesome-emacs - A community driven list of useful Emacs packages, libraries and other items.
- https://habr.com/ru/hub/emacs/
- https://emacswiki.org
- https://ergoemacs.org
- http://ergoemacs.org/emacs/emacs.html - руководство
- https://github.com/alexott/emacs-configs
- http://pragmaticemacs.com/
- https://www.masteringemacs.org/
- https://www.masteringemacs.org/reading-guide - как советуют читать.
- https://wikemacs.org/wiki/Main_Page
- https://emacs.stackexchange.com/ - Вопросы и ответы про emacs.
- https://alexott.net/ru/emacs/
- http://xtalk.msk.su/~ott/ru/emacs/ Статьи про Emacs и не только
- https://sachachua.com/blog/ - занятный блог про emacs преимущественно
- http://pages.sachachua.com/.emacs.d/Sacha.html - конфиг Sacha Chua.
- http://sachachua.com/blog/category/geek/emacs/ - то, что в блоге посвящено emacs-у.
- http://karl-voit.at/2017/06/03/emacs-history/ - товарисч, продвинутый в техниках облегчения жизни компом. Немецкоязычный, но много англоязычных текстов.
- http://karl-voit.at/tags/pim - то, что про персональную инфу.
- http://endlessparentheses.com/ - клевый емаксер, он же https://github.com/Malabarba/.
- https://emacstil.com - блог
Тг
- https://t.me/emacs_ru - "Общаемся на темы, посвященные замечательному редактору Emacs. Решаем проблемы, обмениваемся опытом и делимся новостями. Правила чата и примеры конфигов: https://github.com/EmacsRuPub/chat-rules"
- https://t.me/emacs_en
- https://t.me/emacs_posts - канал с постами из разных инет-источников.
Конфиги
- https://framagit.org/steckerhalter/steckemacs.el
- https://protesilaos.com/dotemacs/
- https://github.com/dexager/zettelkasten-emacs
- https://emacsredux.com/tags/#crux (есть уйма мелких полезняшек), https://github.com/bbatsov/crux - они одной кучей. https://emacsredux.com/blog/2021/06/08/emacs-as-your-calendar/ - про календарь, кажется, в комментах есть полезное.
- https://gitlab.com/link0ff/emacs-init/ - не разбиралась особо. Но там, как минимум, своя keymap.
- https://github.com/aragaer/dotfiles/
- https://github.com/rpdillon/emacs-config/blob/master/init.el - Bootstrap the Emacs environment to load literate Emacs initialization files.
- https://github.com/eastwood/config/blob/master/emacs.d/org-init.org - довольно компактный конфиг
- https://gitlab.com/zahardzhan/well-tuned-emacs
- https://bitbucket.org/holgerschurig/emacsconf/src/3d477513b71f?at=master ещё один конфиг
- https://github.com/wuliang/MyEmacsConfig/blob/master/wl.el - что-то мне тут казалось занятным.
- https://github.com/turboMaCk/Dotemacs
- https://tecosaur.github.io/emacs-config/config.html
- https://github.com/rigidus/.emacs.d - ссыль сохранена - и на 2022-09-24 живо
- https://github.com/zamansky/dot-emacs
Ссылки и заметки про какие-то отдельные штуки, не доросшие до странички
неразобранное
- В емаксе ещё и метроном есть, ой. metronome
- https://mbork.pl/CategoryEmacs - конкретный человек пишет. Мож поразглядываю в будущем.
- https://github.com/emacs-eaf/emacs-application-framework - обещают прям много. Мож дойдут руки глянуть, что это.
- expand-region, sudo-edit, mini-modeline, browse-kill-ring, envrc - типа разное прикольное
- rainbow-delimiters - для раскрашивания скобочек
- electric-pair-mode - для автозакрывания всяких скобочек, а также кавычек и что там ещё назначишь. - https://github.com/Bruce-Connor/ham-mode - править html как маркдаун. Когда важен текст, а не разметка.
- http://pragmaticemacs.com/emacs/read-your-rss-feeds-in-emacs-with-elfeed/ - rss
- https://github.com/arbox/org-sync - синхронизация с багтрекерами
- https://github.com/zachcurry/emacs-anywhere - редактировать какие попало текстовые поля в емаксе
- https://ruzkuku.com/texts/lesser-known.html
- align-regexp - сурово-магическая штука для выравнивания всякого текста не только по краю.
- text-scale-increase и text-scale-decrease - менять размер текста.
- https://github.com/abo-abo/avy - прыгать по видимому
- https://github.com/leoliu/easy-kill
- https://github.com/magnars/expand-region.el
- https://github.com/bbatsov/guru-mode - улучшать привычки :)
- https://github.com/emacsfodder/move-text
- M-x command history
- https://emacsconf.org/2020/talks/
- http://ergoemacs.org/emacs/elisp_menu.html как добавить меню. (Искала я не это, но чоуж.)
- https://www.emacswiki.org/emacs/CommonLisp, https://www.gnu.org/software/emacs/manual/html_mono/cl.html
- https://www.emacswiki.org/emacs/TrampMode
- https://www.flycheck.org/ - syntax checking
- https://depp.brause.cc/nov.el/ - про nov.el - читалку epub для emacs
- https://github.com/novoid/Memacs - вспоминалка всего.
- https://github.com/punchagan/org2blog - бложилка для вордпресса. Одно время прям пользовалась, и надеялась, что будет реально удобно поддерживать блог актуальным. В принципе, может, и сейчас реально пробовать так бложить из цеттеля.
- https://github.com/Malabarba/camcorder.el - запись скринкастов из emacs
- https://github.com/lateau/charmap -
M-x charmap
to display a unicode block that you want to see. Чуточку настраиваемо. - https://github.com/skeeto/elfeed - читалка RSS
- http://tuhdo.github.io/index.html - Emacs Mini Manual, helm, projectile.
- https://www.emacswiki.org/emacs/MakingPackages
- https://www.emacswiki.org/emacs/CoffeeMode - заваривать кофе
tabulated-list и tablist в емаксе
- https://www.gnu.org/software/emacs/manual/html_node/elisp/Tabulated-List-Mode.html
- https://www.emacswiki.org/emacs/TabulatedListMode
- https://vallyscode.github.io/posts/tabulated-list-mode/
- https://github.com/politza/tablist
- https://willschenk.com/articles/2021/emacs_blogging_mode/ - c использованием табулатед-листа
- https://emacsnotes.wordpress.com/2019/04/16/how-i-shortlist-add-ons-for-my-emacs-introducing-tablist/
запуск всякого и руление этим
- https://git.sr.ht/~swflint/time-block - можно менять поведение с учётом времени. Типа, блокировать «не то» в рабочее время. Или нерабочее. Или ещё как-то :)
- M-x proced - список процессов
- https://github.com/bard/emacs-run-command - кажется, премилая штука для запуска всякого внешнего, по умолчанию в compilation-mode. (https://github.com/semenInRussia/emacs-run-command-recipes некоторый набор готовых рецептов для неё. Но кукбук оригинала мне пока интереснее). 2022-02-08
run-with-idle-timer secs repeat function &rest args
Set up a timer which runs the next time Emacs is idle for secs seconds. The value of secs may be a number or a value of the type returned by current-idle-time. If repeat is nil, the timer runs just once, the first time Emacs remains idle for a long enough time. More often repeat is non-nil, which means to run the timer each time Emacs remains idle for secs seconds. https://www.gnu.org/software/emacs/manual/html_node/elisp/Idle-Timers.html
всякие символы
- "C-x 8 C-m acute comb RET" - вставление всяких символов.
- Когда проблемы с вставлением символа - A standard hack here too is to use the literal character escape thing. Type C-q and then space. It’s a bit like using \ in a literal string in programming. quoted-insert is an interactive compiled Lisp function in ‘simple.el’. It is bound to C-q. (quoted-insert ARG) Read next input character and insert it. This is useful for inserting control characters. With argument, insert ARG copies of the character. If the first character you type after this command is an octal digit, you should type a sequence of octal digits that specify a character code. Any nondigit terminates the sequence. If the terminator is a RET, it is discarded; any other terminator is used itself as input. The variable ‘read-quoted-char-radix’ specifies the radix for this feature; set it to 10 or 16 to use decimal or hex instead of octal.
- https://gitlab.com/link2xt/yoficator - ёфикатор.
- whitespace-mode - отображает скрытые символы, пробелы, табуляции.
- https://www.emacswiki.org/emacs/TypographicalPunctuationMarks
- http://zahardzhan.github.io/2010/russian-typography-in-emacs.html
таблички и считалки
- jupiter и ein - времен, когда пыталась въехать в обработку данных.
- emacsql-sqlite - тож смутно помню, что зачем-то было, и что-то было ж хорошее о нём.
- esqlite - мод для скулайта. https://github.com/mhayashi1120/Emacs-esqlite
- literate-calc https://github.com/sulami/literate-calc-mode.el - Displays inline results for calculations, supports variables and updates as you type. Тормозил как не знаю что.
- https://www.gnu.org/software/emacs/manual/html_mono/ses.html - таблички. В орг-моде в src-блоке, похоже, работать не хочет, но само по себе может быть интересно.
емаксокартинки
- https://github.com/walseb/blimp, обёртка над imagemagick. Периодически пробую, но пока не освоилась.
- пипетка взять цвет пикселя. Grabc без граф интерфейса. Просто C-u M-! grabc RET (в смысле, запустить из емакса консольную команду) И оно сразу в буфер вставляется. grabc поставила. А вот переключать окна после запуска grabc не судьба вообще, жаль.
The radar chart
Точно помню, что получилось :)
is also known as web chart, spider chart, star chart, cobweb chart, star plot, irregular polygon, polar chart, or kiviat diagram.
В большинстве случаев наглядностью не балует. Но, можно сравнивать общее впечатление, можно смотреть баланс направлений.
- http://www.mcld.co.uk/blog/blog.php?285
- http://orgmode.org/worg/org-tutorials/org-plot.html
- http://matplotlib.org/examples/api/radar_chart.html
- http://orgmode.org/manual/Org_002dPlot.html
- http://stackoverflow.com/questions/30649826/how-to-highlight-regions-of-plot-with-gnuplot/30684027%5C#30684027
- http://stackoverflow.com/questions/12709820/how-to-create-a-spider-plot-in-gnuplot
- http://stackoverflow.com/questions/6772135/how-to-get-a-radialpolar-plot-using-gnu-plot
- https://github.com/jimktrains/gpr
управление файлами
- neotree - считают устаревшим.
- dired
- treemacs - https://github.com/Alexander-Miller/treemacs
- https://github.com/suntsov/efar
password-generator
Generate a password and insert it in-place. Such functions provided:
- password-generator-numeric - generate PIN-code or any other numeric password.
- password-generator-simple - simple password for most websites.
- password-generator-phonetic - easy to remember password.
- password-generator-strong - strong password and still suitable for most web sites with strange password requirements to used special chars.
- password-generator-words - generate rememberable password from top used 1500 english words.
- password-generator-custom - generate custome password from your alphabete.
Use C-u <length> password-generator-simple to specify length of generated password. This works with other functions too.
See full docs here: http://github.com/vandrlexay/emacs-password-genarator
timestamps - вставить и обновлять актуальную дату
https://www.emacswiki.org/emacs/TimeStamp
В конфиг:
(add-hook 'before-save-hook 'time-stamp)
The default ‘time-stamp-pattern’ in Emacs is roughly this,
"8/Time-stamp:[ \t]+\\\\?[\"<]+%:y-%02m-%02d %02H:%02M:%02S %u\\\\?[\">]"
Можно настроить свой через Local Variables в файле или Directory Variables в .dir-locals.el
каталога (действует и на подкаталоги).
У меня есть такой .dir-locals.el
.
((org-mode . ( (time-stamp-pattern . "8/#\\+date: <%04Y-%02m-%02d %02H:%02M:%02S %Z>") (time-stamp-time-zone . "Europe/Moscow") ) ))
diminish - меньше текста в модлайне
- https://github.com/myrjola/diminish.el Есть в Melpa.
Оччень полезная штука. Позволяет убрать minor-моды из modeline, или заменить текст на свой. На прочую работу мода не влияет.
(require 'diminish) (diminish 'anzu-mode) (diminish 'abbrev-mode)
И что там ещё неинтересно видеть.
Вариант с заменой текста:
(diminish 'abbrev-mode "Abv")
нумерация строк
M-x display-line-numbers-mode
nlinum
- этот надо ставить, если зачем-то нужен.- некогдашний
linum
- не рекомендуется использовать
file local variable
consider a file local variable set in each file. The shortest, most general way to set one of these is to include the following in the first line of the target file:
-*- eval: (auto-revert-mode 1); -*-
In source files, the text can follow a comment delimiter (//, \verb|#|, etc). You can run M-x add-file-local-variable-propline to have Emacs generate this for you automatically, or M-x add-file-local-variable for a format that uses the bottom of your file instead of the top.
M-x поинтереснее или smex - не использую
https://github.com/nonsequitur/smex/
Smex is a M-x enhancement for Emacs. Built on top of Ido, it provides a convenient interface to your recently and most frequently used commands. And to all the other commands, too.
The commands are displayed in an Ido completion buffer, ordered by relevance. The 7 most recently executed commands come first, the rest are sorted by frequency of use, command length and in alphabetical order.
Ido completion in 10 seconds: Typing selects matching commands: e.g. 'lnmd' matches 'line-number-mode'. C-s/C-r switches to the next/previous match. Enter executes the selected command.
smex-major-mode-commands runs Smex, limited to commands that are relevant to the active major mode.
C-h f, while Smex is active, runs describe-function on the currently selected command.
M-. jumps to the definition of the selected command.
C-h w shows the key bindings for the selected command. (Via where-is.)
smex-show-unbound-commands shows frequently used commands that have no key bindings.
У меня жило недолго, потому что делало емакс огорчительно задумчивым.
Автозакрывание ненужных буферов через какое-то время
Вместе с удобными способами открывать и благодаря тому, что как-то открытые буферы не особо мешают, позволяет вообще не особо помнить, что открыто, что не открыто, и не особо заморачиваться закрыванием. Иногда закрываю вручную, конечно :) Изредка. :)
Midnight
https://www.emacswiki.org/emacs/MidnightMode Для выполнения чего-либо автоматом и с некоторой регулярностью. Обычно применяется для удаления ненужных буферов. И я не оригинальна.
(require 'midnight) (midnight-mode 1)
Когда выполнять.
(midnight-delay-set 'midnight-delay "4:30am")
Другой вариант - в секундах после полуночи.
Если хочется, чтоб задание выполнялось чаще:
(setq midnight-period 7200) ;; (eq (* 2 60 60) "2 hours")
Что, собстна, делаем-то.
(add-hook 'midnight-hook 'clean-buffer-list)
clean buffer list}
https://www.emacswiki.org/emacs/CleanBufferList Запускаем через midnight-mode.
Вычищать буферы старше одного дня.
(setq clean-buffer-list-delay-general 1)
Вычищать «специальные» буферы старше 6 часов.
(setq clean-buffer-list-delay-special (* 3 3600))
Настроить, какие «специальные». (По умолчанию “*Help*”, “*Apropos*”,“*Buffer List*”,“*Compile-Log*”,“*info*”,“*vc*”, “*vc-diff*” or “*diff*”.)
Убираем маны, кастомайз, поиски.
(add-to-list 'clean-buffer-list-kill-buffer-names '("*buffer-selection*" "*ag search text*" "*vc-change-log*")) (add-to-list 'clean-buffer-list-kill-regexps '("\\`\\*Customize .*\\*\\'" "\\`\\*\\(Wo\\)?Man .*\\*\\'"))
Никогда не удаляет “*scratch*”, “*Messages*”, “*server*”, минибуферы (называются “*Minibuf-”), показываемые на момент буферы, буферы с процессами и внутренние буферы, которые никогда не показываются, буферы с изменёнными файлами.
Настроить и это.
(add-to-list 'clean-buffer-list-kill-never-buffer-names '("*eshell*" "*ielm*" "*mail*" "*w3m*" "*w3m-cache*")) (add-to-list 'clean-buffer-list-kill-never-regexps '("\\`\\*tramp/.*\\*\\`" "\\`\\*ftp .*\\*\\`"))
Пишет, что делает в Messages.
про открывание файлов - задумчивость
Поймала себя на том, что временами мешает необходимость соображать, что мне сейчас нужно: открыть файл по адресу, открыть проект и файл в нём, открыть другой файл в открытом проекте по имени файла, открыть заметку в org-roam. Это всё делается сочетаниями клавиш, все «близко» в памяти рук, но руки временами делают не то, приходится отменять начатое и делать заново уже нужное.
И то ли надо делать так, чтоб было легко переключиться на другой вариант, если первый сделанный по рефлексу не прокатил. То ли избавляться от каких-то вариантов, но каких? То ли надо делать так, чтоб вообще не получалось делать «не приходя в сознание». Пока не знаю.