GNU EMACS для технических писателей
285 subscribers
11 photos
19 files
87 links
Настройка, использование, хаки
Download Telegram
Только что под руку подвернулся хороший пример использования регулярных выражений. Разберём его.

Списки можно оформлять по-разному, но, например, в документации Yandex Cloud принят подход, при котором в конце строк ставится точка с запятой, если все строки состоят только из одного предложения. В конце последнего элемента списка ставится точка.

Версии Debian:

* 12 Bookworm;
* 11 Bullseye;
* 10 Buster;
* 9 Stretch.


Допустим, у нас уже есть список версий Ubuntu:

Версии Ubuntu:

* 14.04 Trusty Tahr.
* 16.04 Xenial Xerus.
* 18.04 Bionic Beaver.
* 20.04 Focal Fossa.
* 22.04 Jammy Jellyfish.


Ну, в чём проблема сделать из этого списка такой же, как в первом случае? Просто заменим точки на точку с запятой. Ничего плохого ведь не случится, правда?

Версии Ubuntu:

* 14;04 Trusty Tahr;
* 16;04 Xenial Xerus;
* 18;04 Bionic Beaver;
* 20;04 Focal Fossa;
* 22;04 Jammy Jellyfish;


Так, погодите-ка. А почему точка в номере версии тоже стала точкой с запятой? Нам этого не надо. Сейчас можно и руками поправить. Но представьте, что у вас список из 50 элементов. В таком случае задачу поможет решить регулярное выражение.

Нам нужно найти точку, стоящую в конце строки.

Символ . в регулярных выражениях означает "вообще любой символ", поэтому её надо экранировать:

\.


Символ конца строки обозначается знаком $:

\.$


Давайте сделаем замену:

1. Выделите список и вызовите команду replace-regexp.
2. Введите выражение \.$ и нажмите [RET].
3. Введите строку замены ; и нажмите [RET].
4. Исправьте точку с запятой на точку в последнем элементе списка.

Поздравляю! С помощью регулярных выражений вы сэкономили себе немного времени.
👍5🔥2
Лучшее автодополнение для минибуфера
Anonymous Poll
17%
Avy
17%
Helm
2%
Icomplete
65%
Vertico
На Boosty вышла новая версия книги, с IComplete, Vertico, Helm и Counsel. Порядок глав мне сейчас не очень нравится. Я даже подумываю отказаться от деления книги на главы по алхимическому принципу.
https://boosty.to/simple-emacs/posts/3be25add-53b5-41c1-918e-034ce37022c4?share=post_link
👍5
gnu-emacs-for-technical-writers-25.02.09-white.pdf
5.3 MB
А это старая версия книги, от 9 февраля этого года.
Имеет ли смысл использовать Shell внутри Emacs, когда у нас есть GNOME Terminal и другие оболочки? Я вижу как минимум два удобства:

1. С содержимым буфера *shell* можно работать как и с любым другим буфером: копировать, вставлять, вырезать.
2. В командной строке можно использовать kill ring. Это значит, что вы можете вставить любой из множества фрагментов, ранее помещённых в kill-ring.
👍51
Как в Emacs получить справку? Очень просто: все последовательности для получения справки начинаются с [C-h] (help). Дальше уже немного сложнее, но всё равно логично:

[C-h b]bindings, привязки (клавиш);
[C-h c]commands, команды;
[C-h k]keys, клавиши;
[C-h m]modes, режимы.

Запомнить приведённые выше команды и сочетания клавиш несложно. Как видите, здесь есть определённая логика, основанная на первых буквах связанных английских слов. Это основные команды. Остальные можете подсмотреть в минибуфере сами.

Самая интересная из перечисленных последовательностей — [C-h k], потому что она требует продолжения банкета ввода. Нажмите какую-нибудь последовательность, и Emacs выведет информацию о ней: что за команда, к какому пакету относится и так далее.
👍4