Emacs. Пакет embark

2026-08-16 · 2 мин. для прочтения
blog

Emacs. Пакет embark

Содержание

1 Общая информация

  • Репозиторий: https://github.com/oantolin/embark
  • Контекстное меню, управляемое с клавиатуры.
  • Позволяет выполнять действия над объектом под курсором или над выбранными кандидатами в минибуфере.

2 Основные понятия

2.1 Понятие цели

  • В основе Embark лежит понятие цели (target) — объекта, на котором вы хотите выполнить действие.

  • Цель определяется автоматически в зависимости от контекста:

    • минибуфер : целью является текущий верхний кандидат автодополнения;
    • буфере Completions : целью является элемент автодополнения под курсором;
    • обычный буфер : целью может быть активная область (регион), или, если её нет, файл, символ, URL, s-выражение или функция под курсором.
  • Если в одном месте находится несколько целей (например, и символ, и URL), можно циклически переключаться между ними, повторяя нажатие клавиши для вызова embark-act.

2.2 Команда embark-act

  • Основная команда пакета — embark-act.
  • Обычно привязывается к клавише (C-.).
  • После её вызова Embark действует как префиксная клавиша: нажимаете одну или две буквы, чтобы выполнить соответствующее действие.

3 Множественное выделение

  • Множественное выделение работает через команды embark-select и embark-act-all.

3.1 Рабочий процесс

  1. Вызовите embark-act (обычно привязана к C-.) на том элементе, который хотите выделить.
  2. Нажмите SPC (пробел).
    • Это запустит действие embark-select, которое добавит текущий элемент в набор выделенных или снимет с него выделение, если оно уже было.
  3. Повторите шаги 1-2 для всех элементов, которые нужно выделить.
  4. Когда все нужные элементы выбраны, снова вызовите embark-act (C-.) дважды (C-. C-.) или в появившемся меню действий нажмите A.
    • Это запустит команду embark-act-all.
  5. Выберите действие (например, d для удаления, c для копирования), которое будет применено ко всем выделенным элементам одновременно.

3.2 Контексты

  • Эта возможность работает в разных контекстах:
    • минибуфер : во время работы с любыми командами завершения (например, find-file, switch-to-buffer).
      • Позволяет выбрать несколько файлов или буферов для массовой операции.
    • обычныq буфер : например, чтобы выделить несколько ссылок, символов или участков текста, разбросанных по файлу.
    • буфер Embark Collect : там интерфейс напоминает Dired, и вы можете отмечать элементы пробелом.

3.3 Дополнительные возможности

  • Снять всё выделение.
    • Выполните embark-act-all (например, C-. C-.) и в качестве действия выберите embark-select (пробел).
    • Это снимет выделение со всех выбранных элементов.
  • Выделить все текущие кандидаты
    • Находясь в минибуфере, когда ничего не выделено, выполните embark-act-all и выберите действие embark-select.
    • Это выделит все отфильтрованные в данный момент кандидаты.
  • Визуальная обратная подсказка
    • Когда что-то выделено, в mode-line обычно отображается количество выбранных элементов.
Дмитрий Сергеевич Кулябов
Authors
Профессор кафедры теории вероятностей и кибербезопасности
Работаю профессором на кафедре теории вероятностей и кибербезопасности Российского университета дружбы народов им. Патриса Лумумбы. Научные интересы относятся к области теоретической физики и математического моделирования.