#^emacsСодержание
Дивной красоты текстовый редактор и текстовый интерфейс много к чему.
Ещё прекрасно учит смирению, так как:
- освоить полностью невозможно;
- сколько-нибудь длительно услеживать за актуальностью конфига и пакетов - пожалуй, тоже;
- про заметки же обо всём этом и говорить не приходится. Но в меру сил пытаюсь.
О прекрасности емакса
Пожалуй, справедливо сказано, что это в первую очередь не редактор (хотя редактор там тоже есть), это среда для жизни.
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, но вот тут я не согласна с базовой там идеей, что свой конфиг - скорее не нужен, а надо брать какой-то достаточно массовый фреймворк, и радоваться, что за тебя решили все проблемы.
Готовые «фреймворки»
- emacs-starter-kit, prelude, doom, spacemacs - я бы не советовала. Слишком много меняют, слишком сложно от них уходить в переделанное под себя.
Попытки конфигов для начинающих, таких, чтоб дальше переделывать под себя было удобно
snapshot emacs
2021-07-27 20:42:12 +0300 - устала дожидаться, когда в дебиане обновят :)
Учитывать, что при переходе на snapshot и обратно, надо выбирать нужный emacsclient.
sudo update-alternatives --config emacsclient
https://www.masteringemacs.org/article/whats-new-in-emacs-27-1Полезные ссылки
В целом про емакс
Тг
Конфиги
Ссылки и заметки про какие-то отдельные штуки, не доросшие до странички
неразобранное
- В емаксе ещё и метроном есть, ой. 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 - бложилка для вордпресса. Одно время прям пользовалась, и надеялась, что будет реально удобно поддерживать блог актуальным. В принципе, может, и сейчас реально пробовать так бложить из цеттеля. [2011-03-31 Чт 08:37]
- 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 в емаксе
запуск всякого и руление этим
всякие символы
- "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
таблички и считалки
емаксокартинки
- 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.
В большинстве случаев наглядностью не балует. Но, можно сравнивать общее впечатление, можно смотреть баланс направлений.
управление файлами
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 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-genaratortimestamps - вставить и обновлять актуальную дату
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 - меньше текста в модлайне
Оччень полезная штука. Позволяет убрать 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.
про открывание файлов - задумчивость
[2022-12-01 Чт]Поймала себя на том, что временами мешает необходимость соображать, что мне сейчас нужно: открыть файл по адресу, открыть проект и файл в нём, открыть другой файл в открытом проекте по имени файла, открыть заметку в org-roam. Это всё делается сочетаниями клавиш, все «близко» в памяти рук, но руки временами делают не то, приходится отменять начатое и делать заново уже нужное.
И то ли надо делать так, чтоб было легко переключиться на другой вариант, если первый сделанный по рефлексу не прокатил. То ли избавляться от каких-то вариантов, но каких? То ли надо делать так, чтоб вообще не получалось делать «не приходя в сознание». Пока не знаю.