magit.pdf
150.2 KB
Добрый день, мои чюваки!
Я решил переписать с нуля главу про Magit. Выкладываю её на всеобщее обозрение для оценки читаемости и понятности.
Подписчики на Boosty чуть позже получат книгу, где эта глава будет переписана с учётом ваших замечаний и предложений. Так же там будет множество примеров использования Magit для выполнения типовых операций.
Я решил переписать с нуля главу про Magit. Выкладываю её на всеобщее обозрение для оценки читаемости и понятности.
Подписчики на Boosty чуть позже получат книгу, где эта глава будет переписана с учётом ваших замечаний и предложений. Так же там будет множество примеров использования Magit для выполнения типовых операций.
🔥9👍1
Операции Git, которые должны быть описаны в главе про Magit:
Anonymous Poll
67%
commit
67%
pull
67%
push
56%
rebase
72%
merge
61%
cherry-pick
56%
checkout
56%
branch
72%
stash
11%
Свой вариант в комментарии
🔥2
На Boosty опубликована новая версия книги. Глава про Magit переписана с нуля на основе ваших комментариев. Надеюсь, стало попроще.
Пока не описаны
Пока не описаны
cherry-pick
, stash
и некоторые варианты, предложенные в комментариях. Это на следующее обновление.boosty.to
v25.05.17 - Максим Дунаевский
Очередное обновление книги "GNU Emacs для технических писателей". Глава про Magit переписана с нуля!
❤5
Есть ли разница между [RET] и [C-j]?
На первый взгляд — нет. Но на самом деле [RET] учитывает настройки отступов и старается им соответствовать. Когда вы работаете с файлами ReStructured Text или Python это особенно заметно, т. к. Emacs не только переносит курсор на новую строку, но ещё и вставляет нужное (по его мнению) количество пробелов:
С [C-j] история попроще — заканчиваем эту строку и просто переносим курсор в начало следующей, без магии отступов:
Зачем я вам об этом рассказываю? С целью экономии вашего времени: если отступ не нужен — используйте [C-j], а если нужен — [RET].
На первый взгляд — нет. Но на самом деле [RET] учитывает настройки отступов и старается им соответствовать. Когда вы работаете с файлами ReStructured Text или Python это особенно заметно, т. к. Emacs не только переносит курсор на новую строку, но ещё и вставляет нужное (по его мнению) количество пробелов:
* Элемент списка
Позиция курсора после нажатия [RET].
С [C-j] история попроще — заканчиваем эту строку и просто переносим курсор в начало следующей, без магии отступов:
* Элемент списка
Позиция курсора после нажатия [C-j].
Зачем я вам об этом рассказываю? С целью экономии вашего времени: если отступ не нужен — используйте [C-j], а если нужен — [RET].
👍7
Многие утилиты при сборке проекта любят раскрашивать вывод в разные цвета с помощью последовательностей типа
В Emacs по умолчанию буфер
\033[0:31m
и подобных. Bash заменяет эти последовательности на соответствующий цвет, получается красивый вывод: ошибки красные, успех зелёный, где-то жирность добавляют.В Emacs по умолчанию буфер
*compile*
выводит всё как есть. При сборке проектов Sphinx в буфере нет цветов, зато есть последовательности, используемые для раскраски текста, и выглядит это некрасиво. Но это легко исправить:;; 📦 ANSI-COLOR
(use-package ansi-color
:custom
(ansi-color-for-compilation-mode t "Расцветка буфера *compile*")
:hook
(compilation-filter . ansi-color-compilation-filter))
👍4
При работе над справочником по настройкам
Влияет это буквально на три настройки: индикатор сокращённой строки (ellipsis), разделитель, перепривязанные клавиши. Но меня больше интересуют первые две настройки, всё ради них. Раньше было так:
Теперь будет так:
Главное чтобы используемый шрифт это всё поддерживал, иначе вместо
which-key
я заметил, что по умолчанию этот пакет не хочет использовать все возможности Unicode. Исправим это:;; 📦 WHICH-KEY MODE
;; https://elpa.gnu.org/packages/which-key.html
;; Показывает подсказки к сочетаниям клавиш.
(use-package which-key
:ensure t
:delight ""
:custom
(which-key-computer-remaps t "Выводить актуальные сочетания клавиш, а не «как должно быть»")
(which-key-dont-use-unicode nil "Используем Unicode")
(which-key-idle-delay 2 "Задержка появления подсказки")
(which-key-idle-secondary-delay 0.05 "Ещё одна задержка появления подсказки")
(which-key-show-major-mode t "То же самое что и [C-h m], но в формате which-key")
:config
(progn
(which-key-mode 1)
(which-key-setup-minibuffer)
(which-key-setup-side-window-right))) ;; Показывать подсказки справа
Влияет это буквально на три настройки: индикатор сокращённой строки (ellipsis), разделитель, перепривязанные клавиши. Но меня больше интересуют первые две настройки, всё ради них. Раньше было так:
DEL : backward-kill-sentence + : balance-windows
ESC : repeat-complex-command - : shrink-window-if-larget-t..
RET : +prefix . : set-fill-prefix
SPC : rectangle-mark-mode 0 : delete-window
TAB : indent-rigidly 1 : delete-other-windows
Теперь будет так:
DEL → backward-kill-sentence + → balance-windows
ESC → repeat-complex-command - → shrink-window-if-larget-t…
RET → +prefix . → set-fill-prefix
SPC → rectangle-mark-mode 0 → delete-window
TAB → indent-rigidly 1 → delete-other-windows
Главное чтобы используемый шрифт это всё поддерживал, иначе вместо
→
и …
будет пустота.👍6
Доброй ночи, дорогие подписчики!
На Boosty новая версия книги: https://boosty.to/simple-emacs/posts/30596aa2-0cd7-4ef4-9229-85e2135a350c?share=success_publish_link
Основные изменения:
1. Переписано описание базовых команд по выделению, вырезанию, копированию и вставке текста.
2. Исправлено несколько косяков в вёрстке.
3. Исправлены некоторые орфографические ошибки.
4. Добавлена инструкция как получить справку прямо в Emacs.
На Boosty новая версия книги: https://boosty.to/simple-emacs/posts/30596aa2-0cd7-4ef4-9229-85e2135a350c?share=success_publish_link
Основные изменения:
1. Переписано описание базовых команд по выделению, вырезанию, копированию и вставке текста.
2. Исправлено несколько косяков в вёрстке.
3. Исправлены некоторые орфографические ошибки.
4. Добавлена инструкция как получить справку прямо в Emacs.
boosty.to
v25.06.08 - Максим Дунаевский
Новая версия книги "GNU Emacs для технических писателей"
👍7
Перевод Emacs Cheat Sheet: https://www.gnu.org/software/emacs/refcards/pdf/refcard.pdf
Anonymous Poll
66%
Нужен
34%
Не нужен
Братишки, я вам покушать принёс: https://www.linux.org.ru/forum/desktop/17998582
www.linux.org.ru
Если вы пробовали вкатиться в GNU Emacs, расскажите, что пошло не так
Всем привет! Часто вижу на форумах мнение, что Emacs это что-то старое, кривое и ненужное. Пожалуйста, напишите в комментариях, как вы пытались вкатиться в Emacs, и что пошло не так. Это поможет мне улучшить свою книгу про Emacs и даст идеи для посто...
👍7🙈3🔥2
Увековечим великое:
Оригинал: https://www.linux.org.ru/forum/desktop/17998582?cid=17998705
Вкатился в Emacs с третьей попытки и так и остался. Емакс – это не редактор, и даже не ОС. Емакс – это манифестация коллективного аутизма, выраженная в коде. Примерно как мальчики на пляже собираются и строят замки из песка вместе, без какого-либо планирования и процесса, так же сборище поехавших аутистов собрались и сделали Емакс. Это было просто неизбежно. Емакс не мог не быть написан.
Оригинал: https://www.linux.org.ru/forum/desktop/17998582?cid=17998705
www.linux.org.ru
Если вы пробовали вкатиться в GNU Emacs, расскажите, что пошло не так
Всем привет! Часто вижу на форумах мнение, что Emacs это что-то старое, кривое и ненужное. Пожалуйста, напишите в комментариях, как вы пытались вкатиться в Emacs, и что пошло не так. Это поможет мне улучшить свою книгу про Emacs и даст идеи для посто...
👍6🔥5❤1✍1
Одна из особенностей Antora в том, что исходники документации лежат в одном репозитории (мы рассматриваем самый простой случай), а для сборки надо запускать команды в другом. Как решить эту проблему? Довольно просто. Я использую Projectile, поэтому добавил в свой
Как использовать? Да как обычно: [C-x p p c RET]. Наверное, можно забиндить на какую-нибудь F-клавишу, но мне туда лень тянуться.
.dir-locals.el
каждого репозитория с исходниками документации такое:((nil . ((projectile-project-compilation-cmd . "cd ../antora && make"))))
Как использовать? Да как обычно: [C-x p p c RET]. Наверное, можно забиндить на какую-нибудь F-клавишу, но мне туда лень тянуться.
Antora
An Asciidoctor documentation toolchain that helps technical teams create, manage, collaborate on, remix, release, and publish documentation sites sourced from multiple versioned repositories.
К вопросу о ненужности Emacs:
https://www.linux.org.ru/forum/desktop/17998582?cid=18001984
Странное дело. Когда мне не нужен, например, фотошоп, я не бегаю по фотошоповым темам и не рассказываю всем как мне фотошоп не нужен.
https://www.linux.org.ru/forum/desktop/17998582?cid=18001984
www.linux.org.ru
Если вы пробовали вкатиться в GNU Emacs, расскажите, что пошло не так
Всем привет! Часто вижу на форумах мнение, что Emacs это что-то старое, кривое и ненужное. Пожалуйста, напишите в комментариях, как вы пытались вкатиться в Emacs, и что пошло не так. Это поможет мне улучшить свою книгу про Emacs и даст идеи для посто...
👍6🤔1
Добрый день, друзья!
Новости:
1. На Boosty новая версия книги: https://boosty.to/simple-emacs/posts/9e5fcb7a-d4ac-4b7a-a5d2-05411d1c7a30
2. Теперь не обязательно оформлять подписку, можно покупать отдельные посты.
3. В каждом посте будут доступны форматы EPUB и PDF, причём PDF в светлой теме оформления и Monokai.
4. В Telegram-канал книга будет выкладываться только в белой теме и с задержкой в полгода.
Новости:
1. На Boosty новая версия книги: https://boosty.to/simple-emacs/posts/9e5fcb7a-d4ac-4b7a-a5d2-05411d1c7a30
2. Теперь не обязательно оформлять подписку, можно покупать отдельные посты.
3. В каждом посте будут доступны форматы EPUB и PDF, причём PDF в светлой теме оформления и Monokai.
4. В Telegram-канал книга будет выкладываться только в белой теме и с задержкой в полгода.
boosty.to
v25.06.22 - Максим Дунаевский
Новая версия книги "GNU Emacs для технических писателей".
👍7
Регион это...
Anonymous Quiz
2%
то же самое что и абзац
0%
то же самое что и предложение
2%
то же самое что и symbol
97%
выделенная область
По мотивам сегодняшнего обсуждения в чате.
Я не люблю стрелочки. Чтобы их использовать, надо сдвинуть правую руку с её обычной позиции на ширину ладони вправо. Если у вас полноразмерная клавиатура, то ещё дальше. На ноутбуках клавиши со стрелками часто делают маленькими. Т. е. выделять текст удобнее с помощью команд Emacs, а не зажав Shift и двигая стрелки. Однако, есть несколько исключений, которые я сделал для себя.
Начнём с того, как стрелки называются в Emacs:
←
→
↑
↓
Некоторые режимы, например, Magit и IBuffer, а также компиляция, любят создавать собственные окна, т. е. ломать существующий порядок. На них тоже есть управа — встроенный пакет
После его активации состояние окон (всех окон! всех сразу!) можно менять с помощью [C-c <left>] или [C-c <right>]: влево — отмена, вправо — отмена отмены.
Примечание: в использовании Emacs нет догм. Нет "единственно верного пути" типа "настоящий емаксер не пользуется стрелками". Как вам удобно, так и делайте.
Я не люблю стрелочки. Чтобы их использовать, надо сдвинуть правую руку с её обычной позиции на ширину ладони вправо. Если у вас полноразмерная клавиатура, то ещё дальше. На ноутбуках клавиши со стрелками часто делают маленькими. Т. е. выделять текст удобнее с помощью команд Emacs, а не зажав Shift и двигая стрелки. Однако, есть несколько исключений, которые я сделал для себя.
Начнём с того, как стрелки называются в Emacs:
←
<left>
→
<right>
↑
<up>
↓
<down>
;; 📦 WINDMOVE
;; Встроенный пакет для быстрого переключения окон.
;; Перемещение между окнами Emacs.
(use-package windmove
:config
(progn
(windmove-default-keybindings 'ctrl)
(windmove-swap-states-default-keybindings 'meta)))
windmove
это встроенный пакет, его даже не надо устанавливать отдельно. Что он даёт? После его активации вы можете переходить между окнами Emacs, зажав Ctrl и нужную стрелку. Например, хотите перейти в окно справа от активного? Нажмите [C-<right>]. В обычном режиме для этого нужно было бы нажимать [C-x o] или [C-x O], т. е. на одну клавишу больше.Некоторые режимы, например, Magit и IBuffer, а также компиляция, любят создавать собственные окна, т. е. ломать существующий порядок. На них тоже есть управа — встроенный пакет
winner
:;; 📦 WINNER-MODE
;; Встроенный пакет для управления состояниями окон.
;; https://www.gnu.org/software/emacs/manual/html_node/emacs/Window-Convenience.html
;; Для управления конфигурациями окон используются последовательности
;; [C-c <left>] и [C-c <right>]
(use-package winner
:config
(winner-mode 1))
После его активации состояние окон (всех окон! всех сразу!) можно менять с помощью [C-c <left>] или [C-c <right>]: влево — отмена, вправо — отмена отмены.
Примечание: в использовании Emacs нет догм. Нет "единственно верного пути" типа "настоящий емаксер не пользуется стрелками". Как вам удобно, так и делайте.
👍6🔥3
В продолжение темы переключения окон.
Я когда-то использовал пакет
1. Нажмите [M-o].
2. Если окон два,
3. Если окон больше двух,
Удобно? Удобно.
Но если вы не хотите использовать
Я когда-то использовал пакет
ace-window
. Он очень просто работает:1. Нажмите [M-o].
2. Если окон два,
ace-window
просто переместит фокус с активного окна на неактивное.3. Если окон больше двух,
ace-window
нарисует в левом верхнем углу каждого из них номер. Нажмите цифру с этим номером, и окажетесь в нужном окне. Т. е. если у вас 4 окна, вы можете из первого попасть в четвёртое по нажатию трёх клавиш.Удобно? Удобно.
Но если вы не хотите использовать
ace-window
, можно привязать M-o
к встроенной команде next-window-any-frame
: фокус будет переключаться циклически между всеми открытыми окнами:
;; 📦 FRAME
;; Встроенный пакет.
;; Управление фреймами.
(use-package frame
:custom
(window-divider-default-places 't "Разделители окон со всех сторон (по умолчанию только справа)")
(window-divider-default-right-width 3 "Ширина в пикселях для линии-разделителя окон")
(frame-resize-pixelwise t "Размер фреймов считать по пикселям а не по символам")
:bind
(:map global-map
("C-x O" . previous-window-any-frame) ;; Перейти в предыдущее окно
;; Перейти в следующее окно
("C-x o" . next-window-any-frame)
("M-o" . next-window-any-frame)))
👍4
На Boosty новый пост, на этот раз экспериментального формата: помимо книги там ещё и видео, показывающее как пользоваться Avy.
https://boosty.to/simple-emacs/posts/fb39b1c5-8fc5-4ebe-b710-6ed944ca8ab8?share=post_link
https://boosty.to/simple-emacs/posts/fb39b1c5-8fc5-4ebe-b710-6ed944ca8ab8?share=post_link
boosty.to
v25.06.26 - Максим Дунаевский
Новая версия книги "GNU Emacs для технических писателей".
👍4
Сегодня разберём небольшой практический пример использования регулярных выражений. Допустим, у нас большое количество опций, которые нужно описать. Ну и вёрстка, само собой. Пусть у нас используется формат ReStructured Text, как более распространённый, чем AsciiDoc.
Мы хотим получить вёрстку типа такой:
Про существование
Итак.
1. Выделите текст. Достаточно нажать [M-h].
2. Вызовите команду
3. Введите выражение для поиска
4. Введите выражение замены:
Просто напоминаю, что переход на новую строку в минибуфере делается так: [C-q C-j].
5. Нажмите [RET]. Ура! Мы получили нужный результат.
Теперь разберём само выражение.
А что это за круглые скобки и зачем они экранированные? А это — выделение нумерованной группы. Если по-простому, мы говорим движку регулярных выражений: "Вот этот фрагмент, когда найдёшь, сохрани куда-нибудь, он мне позже понадобится". Экранирование же нужно для того, чтобы Emacs не воспринимал скобки буквально. Без
А строки типа таких не видел бы в упор:
Фрагмент мы сохранили. Далее можно обратиться к нему по индексу, причём в регулярных выражениях они начинаются с единицы. А чтобы движок воспринимал индекс именно как индекс, а не как число, мы снова используем экранирование:
name
user
image
force
enabled
Мы хотим получить вёрстку типа такой:
.. option:: name
TODO
.. option:: user
TODO
.. option:: image
TODO
.. option:: force
TODO
.. option:: enabled
TODO
Про существование
multiple-cursors
сейчас забудем.Итак.
1. Выделите текст. Достаточно нажать [M-h].
2. Вызовите команду
replace-regexp
.3. Введите выражение для поиска
^\(.+\)
и нажмите [RET].4. Введите выражение замены:
.. option:: \1
TODO
Просто напоминаю, что переход на новую строку в минибуфере делается так: [C-q C-j].
5. Нажмите [RET]. Ура! Мы получили нужный результат.
Теперь разберём само выражение.
^
— это маркер начала строки..+
— любые символы в любом количестве.А что это за круглые скобки и зачем они экранированные? А это — выделение нумерованной группы. Если по-простому, мы говорим движку регулярных выражений: "Вот этот фрагмент, когда найдёшь, сохрани куда-нибудь, он мне позже понадобится". Экранирование же нужно для того, чтобы Emacs не воспринимал скобки буквально. Без
\
он бы начал искать строки типа таких:(текст любой длины)
А строки типа таких не видел бы в упор:
текст любой длины, но без скобок в начале и конце
Фрагмент мы сохранили. Далее можно обратиться к нему по индексу, причём в регулярных выражениях они начинаются с единицы. А чтобы движок воспринимал индекс именно как индекс, а не как число, мы снова используем экранирование:
\1
. Эта запись означает "Вставить сюда текст, найденный при поиске первой группы".🔥6👍2❤1
Было такое, что перемещали куда-то курсор, а потом хотели бы быстро вернуться назад? Было. Как решить эту проблему?
1. Сохранить позицию в регистр.
2. Создать закладку и прыгнуть к ней.
3. Использовать пакет
Первые 2 способа требуют дополнительных усилий (работа с регистрами в целом не очень приятна), а вот третий сейчас рассмотрим:
Добавьте в
• [C-/]
• [C-_]
• [C-z] (это если вы перебиндили привязку, как я писал выше).
1. Сохранить позицию в регистр.
2. Создать закладку и прыгнуть к ней.
3. Использовать пакет
cursor-undo
.Первые 2 способа требуют дополнительных усилий (работа с регистрами в целом не очень приятна), а вот третий сейчас рассмотрим:
;; 📦 CURSOR-UNDO
;; https://elpa.gnu.org/packages/cursor-undo.html
;; Отмена работает в том числе на перемещение курсора.
(use-package cursor-undo
:ensure t
:pin "gnu"
:config (cursor-undo 1))
Добавьте в
init.el
и выполните этот код. Теперь перемещения курсора хранятся в списке отмен. Переместились куда-то и хотите быстро вернуться назад (в пределах одного и того же буфера)? Нажмите одно из сочетаний клавиш отмены:• [C-/]
• [C-_]
• [C-z] (это если вы перебиндили привязку, как я писал выше).
🔥6