Modo organizacional: como criar uma ligação de tecla "marcação no modo organizacional"?

11

Eu sei que eu posso usar *bold*, /italic/, _underline_, =verbatim=, ~code~, e +strike-through+para aplicar a marcação para texto em org-mode. Mas como crio associações de teclas para aplicar essas alterações a uma região do texto? Por exemplo, se eu quiser deixar um texto em negrito, existe uma maneira mais fácil do que

  1. navegando para a frente do texto
  2. prefixando-o com um *
  3. navegando até o final do texto
  4. anexando um *?

Não consigo encontrar nenhum comando que "coloque em negrito" um trecho de texto, como org-make-region-bold. Existe esse comando?

modulitos
fonte

Respostas:

12
  1. Marque sua região
  2. Clique C-c C-x C-f *para negrito , C-c C-x C-f /para itálico etc.

org-enfat é uma função Lisp interativa compilada no `org.el '.

(ênfase organizacional e CHAR opcional)

Inserir ou alterar uma ênfase, ou seja, uma fonte como negrito ou itálico. Se houver uma região ativa, altere essa região para uma nova ênfase. Se não houver região, basta inserir os caracteres do marcador e posicionar o cursor entre eles. CHAR deve ser o caractere marcador. Se for um espaço, significa remover a ênfase da região selecionada. Se CHAR não for fornecido (por exemplo, em uma chamada interativa), será solicitado.

rasmus
fonte
8

Você pode usar 1 para facilitar a inserção de caracteres de marcação . Adicione o seguinte código ao seu arquivo 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)

Com isso no lugar, tudo que você precisa fazer para envolver uma região com personagens mark-up é pressionar o personagem correspondente ( *, /, =, _, ~, ou +) uma vez.

Como um benefício adicional, o Emacs inserirá automaticamente pares correspondentes de caracteres de marcação no ponto, se não houver região. Por exemplo, pressionar *irá inserir **e deixar um ponto entre os dois caracteres, para que você possa continuar digitando sem precisar mover o ponto.


1 Este modo é incorporado; não é necessário instalar nenhum pacote de terceiros para usá-lo.

itsjeyd
fonte
11
Obrigado! Honestamente, esta é a resposta mais limpa e direta. A doce surpresa é que electric-pair-modetambém se aplica o par a uma região selecionada. Sempre achei que os pares elétricos eram para inserir apenas pares.
ephsmith
2
O problema com essa abordagem é que *e /são comumente usados ​​em documentos típicos do modo Org, por exemplo, *inicia um cabeçalho. Da mesma forma, se você estiver digitando uma barra em texto longo, por exemplo, há uma barra extra que você precisa excluir sempre.
PlagueHammer
5

Você pode usar o wrap-regionpacote (também disponível no Melpa) para envolver uma região com qualquer caractere de sua escolha. Obviamente, isso pode ser configurado 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

O expand-regionpacote complementa muito bem este pacote (também disponível em Melpa).

Uso

  • Você seleciona a palavra ou frase usando a encadernação de teclas escolhida er/expand-region.
  • Clique *para enfatizar essa região como negrito (pol org-mode).
Kaushal Modi
fonte