(re) nummerierte Listen in Emacs (Muse)

7

Angenommen, ich habe eine Textliste in Emacs wie folgt:

%Vor%

Gibt es eine Möglichkeit, diesen Elementen in Emacs Nummern zuzuweisen, indem Sie die Region auswählen? Die Endergebnisse sollten wie folgt aussehen:

%Vor%

Danke.

    
Dervin Thunk 09.04.2010, 13:45
quelle

6 Antworten

3
%Vor%     
Jürgen Hötzel 09.04.2010, 15:38
quelle
10

Die Art und Weise, wie ich dies tue, was nicht optimal ist, ist die Verwendung von regex search and replace. Dies erfordert natürlich, dass Sie in der Lage sind, eine Regex zu definieren, die mit dem Anfang der Zeilen übereinstimmt, auf denen Sie Zahlen haben möchten. In diesem Beispiel würde ich einen Suchregex wie folgt verwenden:

%Vor%

Beachten Sie die Fangklammern, wir werden diesen ersten Buchstaben bald brauchen. Und ersetzen Sie Regex wie folgt:

%Vor%

wo:

\# ist eine spezielle Form, die durch Emacs durch die richtige Zahl ersetzt wird (obwohl die Warnung unten zu sehen ist);

. schreibt einen Stopp; und

schreibt ein Leerzeichen und die erfasste Gruppe.

ACHTUNG: Emacs nummerieren deine Gegenstände 0, 1, 2, ... . Bis jemand uns sagt, wie man bei 1 beginnt, füge ich immer ein dummy 0. Element vor der Bearbeitung ein und lösche es dann.

    
High Performance Mark 09.04.2010 13:56
quelle
6

Sie können das Emacs Keyboard Macro verwenden Zähler .

  • Setzen Sie den Cursor eine Zeile über Ihre Liste.

  • Starten Sie ein Makro: F3

  • Fügen Sie den Zählerwert ein: C-x C-k C-i . Eine 0 erscheint

  • Fügen Sie den DOT und ein Leerzeichen ein: .

  • Bewegen Sie den Cursor in die nächste Zeile

  • Stoppen Sie das Makro: F4

  • Wählen Sie Ihre Liste

  • M-x apply-macro-to-region-lines

  • Sie können die 0, die Sie oben hinzugefügt haben, löschen und genießen:)

HINWEIS: Dadurch wird eine nummerierte Liste erstellt. Es wird keine Buchstaben verwenden.

    
Roberto Aloi 09.04.2010 14:39
quelle
5

Ein viel einfacherer Weg besteht darin, die erweiterten Rechteckbearbeitungsbefehle der CUA Bibliothek zu verwenden. CUA ist in Emacs enthalten (mindestens 23.1, ich denke, es ist auch in früheren Versionen), also gibt es keinen neuen Code, den man bekommen kann.

Sie können cua-set-rectangle-mark (standardmäßig an C-Return gebunden) verwenden, um ein Rechteck zu starten, und dann cua-sequence-rectangle verwenden, um steigende Werte einzufügen. Es gibt Ihnen auch Kontrolle über das Format und Startwert, so dass es eine Menge Flexibilität gibt.

Nebenbei ist CUA in erster Linie so konzipiert, dass Emacs mehr wie Standard-Texteditoren arbeitet (mit C-c für Kopie, C-v für Einfügen usw.), aber auch einige nicht verwandte Niceties, wie Rechteckbearbeitung. Frag mich nicht warum :). Wenn Sie die Rechteckbearbeitung verwenden möchten, ohne die CUA-Tastaturbelegung zu aktivieren (was ich tue), setzen Sie cua-enable-cua-keys auf nil , was über customize erfolgen kann.

    
haxney 17.04.2010 19:17
quelle
1

Hier ist ein elisp-Code, um es zu tun; wäre einfach anzupassen, wenn Sie basteln möchten.

Dies wird die aktuelle Region nummerieren (es sei denn, es ist bereits nummeriert), und auch die letzte Zeile bindet an die M-n-Tasten. Sie können bei Bedarf eine Funktionstaste "[F6]" verwenden.

Geändert, um eine zu verwendende Formatzeichenfolge zu verwenden. Der Standardwert ist 1. Sie könnten jedoch etwas wie% d) tun, um eine Klammer anstelle von a zu erhalten. und so weiter.

%Vor%     
justinhj 09.04.2010 14:51
quelle
0

Keine direkte Antwort auf Ihre Frage, aber wenn Sie häufig Nummernlisten manipulieren, sollten Sie sich den Organisationsmodus ansehen. Insbesondere der Abschnitt auf einfachen Listen .

    
Ryan Thompson 16.04.2010 06:22
quelle

Tags und Links