Org-Mode: ¿Cómo crear una combinación de teclas "marcado de modo org"?

11

Sé que puedo utilizar *bold*, /italic/, _underline_, =verbatim=, ~code~, y +strike-through+para aplicar marcas de texto en org-mode. Pero, ¿cómo creo enlaces de teclas para aplicar estos cambios a una región de texto? Por ejemplo, si quiero poner algo de texto en negrita, ¿hay una manera más fácil que

  1. navegando al frente del texto
  2. prefijándolo con un *
  3. navegando hasta el final del texto
  4. anexando un *?

Parece que no puedo encontrar ningún comando que "en negrita" una extensión de texto, como org-make-region-bold. ¿Hay tal comando?

modulitos
fuente

Respuestas:

12
  1. Marque su región
  2. Haga clic C-c C-x C-f *para negrita , C-c C-x C-f /para cursiva , etc.

org-énfasis es una función Lisp compilada interactiva en `org.el '.

(org-énfasis y CHAR opcional)

Insertar o cambiar un énfasis, es decir, una fuente como negrita o cursiva. Si hay una región activa, cambie esa región a un nuevo énfasis. Si no hay región, simplemente inserte los caracteres del marcador y coloque el cursor entre ellos. CHAR debería ser el personaje marcador. Si es un espacio, significa eliminar el énfasis de la región seleccionada. Si no se proporciona CHAR (por ejemplo, en una llamada interactiva), se le solicitará.

rasmus
fuente
8

Puede utilizar 1 para facilitar la inserción de caracteres de marcado . Agregue el siguiente código a su archivo 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)

Con esto en su lugar, todo lo que necesita hacer para envolver una región con caracteres recargo se pulse el carácter correspondiente ( *, /, =, _, ~, o +) una vez.

Como beneficio adicional, Emacs insertará automáticamente pares coincidentes de caracteres de marcado en el punto si no hay una región. Por ejemplo, al presionar *se insertará **y dejará un punto entre los dos caracteres para que pueda continuar escribiendo sin tener que mover el punto.


1 Este modo está incorporado; no es necesario instalar ningún paquete de terceros para usarlo.

itsjeyd
fuente
1
¡Gracias! Honestamente, esta es la respuesta más limpia y directa. La dulce sorpresa es que electric-pair-modetambién aplica el par a una región seleccionada. Siempre pensé que los pares eléctricos eran solo para insertar pares.
Ephsmith
2
El problema con este enfoque es que *y /se usan comúnmente en documentos típicos del modo Org, por ejemplo, *comienza un encabezado. Del mismo modo, si está escribiendo una barra en texto de formato largo, por ejemplo, hay una barra adicional que debe eliminar cada vez.
PlagueHammer
5

Puede usar el wrap-regionpaquete (también disponible en Melpa) para envolver una región con cualquier personaje de su elección. Esto, por supuesto, se puede configurar por modo principal.

(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

El expand-regionpaquete complementa muy bien este paquete (también disponible en Melpa).

Uso

  • Seleccione la palabra o frase con la combinación de teclas que eligió er/expand-region.
  • Presiona *para enfatizar esa región como negrita (in org-mode).
Kaushal Modi
fuente