Org-Mode: Как создать привязку «разметка режима org»?

11

Я знаю , что я могу использовать *bold*, /italic/, _underline_, =verbatim=, ~code~, и , +strike-through+чтобы применить разметки текста в org-mode. Но как мне создать привязки клавиш для применения этих изменений к области текста? Например, если я хочу сделать текст жирным, есть ли более простой способ, чем

  1. переход к началу текста
  2. добавив к нему префикс *
  3. навигация до конца текста
  4. добавление *?

Кажется, я не могу найти ни одной команды, которая "выделяет жирный шрифт", например org-make-region-bold. Есть ли такая команда?

modulitos
источник

Ответы:

12
  1. Отметьте свой регион
  2. Нажмите C-c C-x C-f *для полужирных , C-c C-x C-f /для наклонного и т.д.

org-emphasisize - это интерактивная скомпилированная функция Lisp в org.el.

(орг-подчеркивание и необязательный символ)

Вставьте или измените выделение, например, шрифт, как жирный или курсив. Если есть активный регион, измените этот регион на новый акцент. Если региона нет, просто вставьте символы маркера и поместите курсор между ними. CHAR должен быть символом маркера. Если это пробел, значит убрать выделение выделенного региона. Если CHAR не указан (например, при интерактивном вызове), он будет запрошен.

Расмус
источник
8

Вы можете использовать 1 для облегчения вставки символов разметки в . Добавьте следующий код в ваш init-файл:electric-pair-modeorg-mode

(electric-pair-mode 1)

(defvar org-electric-pairs '((?\* . ?\*) (?/ . ?/) (?= . ?=)
                             (?\_ . ?\_) (?~ . ?~) (?+ . ?+)) "Electric pairs for org-mode.")

(defun org-add-electric-pairs ()
  (setq-local electric-pair-pairs (append electric-pair-pairs org-electric-pairs))
  (setq-local electric-pair-text-pairs electric-pair-pairs))

(add-hook 'org-mode-hook 'org-add-electric-pairs)

При этом на месте, все , что вам нужно сделать , чтобы обернуть область с размеченными символами нажмите соответствующий символ ( *, /, =, _, ~, или +) один раз.

В качестве дополнительного преимущества Emacs будет автоматически вставлять совпадающие пары символов разметки в точку, если области нет. Например, нажатие *вставит **и оставит точку между двумя символами, чтобы вы могли продолжать печатать, не перемещая точку.


1 Этот режим является встроенным; для его использования не требуется устанавливать какие-либо сторонние пакеты.

itsjeyd
источник
1
Спасибо! Честно говоря, это самый чистый и простой ответ. Сладкий сюрприз в том, electric-pair-modeчто пара также применяется к выбранному региону. Я всегда думал, что электрические пары предназначены только для вставки пар.
Ephsmith
2
Проблема с этим подходом является то , что *и /обычно используется в типовых документах в режиме Org например , *начинается с заголовком. Точно так же, если вы вводите косую черту в длинном тексте, например, есть дополнительная косая черта, которую вы должны удалять каждый раз.
PlagueHammer
5

Вы можете использовать wrap-regionпакет (также доступен на Melpa), чтобы обернуть регион любым персонажем по вашему выбору. Это, конечно, может быть настроено для основного режима.

(require 'wrap-region)

(add-hook 'org-mode-hook #'wrap-region-mode)

(wrap-region-add-wrapper "=" "=" nil 'org-mode) ; select region, hit = then region -> =region= in org-mode
(wrap-region-add-wrapper "*" "*" nil 'org-mode) ; select region, hit * then region -> *region* in org-mode
(wrap-region-add-wrapper "/" "/" nil 'org-mode) ; select region, hit / then region -> /region/ in org-mode
(wrap-region-add-wrapper "_" "_" nil 'org-mode) ; select region, hit _ then region -> _region_ in org-mode
(wrap-region-add-wrapper "+" "+" nil 'org-mode) ; select region, hit + then region -> +region+ in org-mode

expand-regionПакет дополняет этот пакет очень хорошо (также доступны в Melpa).

Применение

  • Вы выбираете слово или фразу, используя привязку клавиш, которую выбрали er/expand-region.
  • Нажмите, *чтобы выделить этот регион как жирный (в org-mode).
Каушал Моди
источник
0

Пользователи Зла могут использовать второстепенный режим злого окружения, чтобы иметь дело с различными видами разметки. Вы можете добавить разметку к визуальному выделению с помощью S(по умолчанию) или к текстовым объектам в обычном режиме с помощью ys.

Вы также можете изменить или удалить некоторые маркеры. Но чтобы изменить или удалить маркеры, которые по умолчанию не известны злому окружению, вам нужно добавить их в Зло как текстовые объекты .

ааа
источник