Supposons que j'ai une liste de texte dans Emacs comme ceci:
1. a 2. b 3. c j. ... n. d
6 Réponses :
La façon dont je fais cela, ce qui peut ne pas être optimal, est d'utiliser la recherche de regex et de remplacer. Bien entendu, cela nécessite que vous puissiez définir une regex pour correspondre au début des lignes que vous souhaitez chiffrer. Prendre votre exemple, j'utiliserais une recherche de regregy comme ceci:
\#. \1
Si vous utilisez \, (1+ \ #). Code> pour le remplacement qui va commencer par un. Vous pouvez utiliser des expressions LISP arbitraires dans des remplacements maintenant, de sorte que l'on dit simplement remplacer par 1 plus le numéro de correspondance.
Merci à @singletoned, je savais que quelqu'un sur tellement trier ce problème pour moi.
Vous pouvez utiliser Le compteur macro du clavier EMACS . P>
Mettez le curseur une ligne au-dessus de votre liste. P> li>
Démarrer une macro: Insérez la valeur de compteur: Insérez le point et un espace: Déplacez le curseur sur la ligne suivante P> li>
Arrêtez la macro: Sélectionnez votre liste P> LI>
Vous pouvez supprimer le 0 que vous avez ajouté sur le dessus et profiter :) p> li>
ul>
F3 code> p> li>
c-x c-k c-i code>. Un 0 apparaîtra p> li>
. code> p> li>
F4 code> p> li>
m-x applique-macro-to-région-lignes code> p> li>
impressionnant. Vous pouvez également définir le compteur à l'aide de C-X C-K C-C CODE> ou
KMACRO-SET-COUT-COUT-COUVERT CODE>.
Voici un peu de code ELISP pour le faire; Serait facile de personnaliser si vous aimez Tinkering.
Ceci numérotera la région actuelle (sauf si elle est déjà numérotée), ainsi que la dernière ligne se lie aux touches M-N. Vous pouvez utiliser une clé de fonction "[F6]" au besoin. P>
modifié pour prendre une chaîne de format à utiliser. La valeur par défaut est 1. Mais vous pouvez faire quelque chose comme% d) pour obtenir un support au lieu d'un. et ainsi de suite. p>
(defun number-region (start end) (interactive "r") (let* ((count 1) (indent-region-function (lambda (start end) (save-excursion (setq end (copy-marker end)) (goto-char start) (while (< (point) end) (or (and (bolp) (eolp)) (insert (format "%d. " count)) (setq count (1+ count))) (forward-line 1)) (move-marker end nil))))) (indent-region start end)))
Pas une réponse directe à votre question, mais si vous trouvez vous-même manipuler des listes numérotées fréquemment, vous voudrez peut-être consulter mode . En particulier, le section sur Listes simples . P>
Oui, ORG-Mode spécifique, mais exactement ce que je cherchais. M-up code>
M-Down code> Pour commander la liste.
Un moyen beaucoup plus simple consiste à utiliser le CUA Commandes d'édition de rectangle avancée de la bibliothèque. La CUA est incluse dans EMACS (au moins 23,1, je pense que c'est aussi dans les versions antérieures), il n'ya donc aucun nouveau code pour obtenir. P>
Vous pouvez utiliser En écart, la CUA est principalement conçue pour que les EMACS fonctionnent davantage comme des éditeurs de texte standard (avec C-C pour copier, C-V pour la pâte, etc.), mais il comprend également des soirées non liées, telles que l'édition de rectangle. Ne me demandez pas pourquoi :). Si vous souhaitez utiliser l'édition du rectangle sans permettre à la CUA Keybindingings (qui est ce que je fais), définissez cua-set-rectangle-mark code> (lié à c-retour par défaut) pour démarrer un rectangle, puis utiliser
Cua-séquence-rectangle-rectangle code> à insérer une augmentation des valeurs. Il vous donne également un contrôle sur le format et la valeur de départ. Il y a donc beaucoup de flexibilité. P>
CUA-Acable-CUA-KEYS code> à
nil code>, qui peut être fait, ce qui peut être fait Via personnaliser. P>