Vim: Wie man Absätze automatisch nummeriert und wie man sich auf diese Nummerierung bezieht?

8

Nehmen wir an, ich habe diesen Text (Absätze, die durch leere Zeilen getrennt sind - Nummer 3 und 7, hier):

%Vor%

Frage 1: Wie kann ich diese Absätze automatisch nummerieren (ich hatte Erfolg, aber mit einem ungeschickten Makro), um dieses Ergebnis zu erhalten:

%Vor%

Frage 2: Ist es möglich, auf diese Absätze zu verweisen? Zum Beispiel ist es möglich, eine Textdatei als Antwort (von Prince Gulash und Herbert Sitz) in die frühere Frage , aber diesmal mit den Absatzzahlen und nicht mit den Zeilennummern?

Vielen Dank im Voraus

    
ThG 22.07.2011, 20:23
quelle

3 Antworten

1

Frage eins

Hier ist eine Funktion zum Aufzählen von Absätzen. Mach einfach :call EnumeratePara() irgendwo in deiner Datei. Die Variable indent kann beliebig angepasst werden. Lassen Sie mich wissen, wenn etwas korrigiert oder erklärt werden muss.

%Vor%

Frage zwei

Das ist kein sehr eleganter Ansatz, aber es scheint zu funktionieren. Zuallererst, hier ist eine Funktion, die jede Zeile in der Datei einer Absatznummer zuordnet:

%Vor%

So dass para_lines [i] den Absatz der Zeile i geben wird.

Jetzt können wir die vorhandene Funktion IndexByWord () verwenden und MapLinesToParagraph () verwenden, um die Zeilennummern in Absatznummern umzuwandeln, bevor wir sie zurückgeben:

%Vor%

Ich habe diese Funktionen nicht sehr gründlich getestet, aber sie scheinen in Ordnung zu sein, zumindest in Ihrem Beispieltext. Lass mich wissen, wie es dir geht!

    
Prince Goulash 23.07.2011, 00:08
quelle
2

Hier ist eine Möglichkeit, die Ref-Nummern mit einem Paar Funktionen auszuführen:

%Vor%

Dann tun Sie es einfach, indem Sie MakeRefMarkers () aufrufen. Bestehende Ref-Nummern werden nicht entfernt, wenn sie vorhanden sind. Dies würde einen weiteren Schritt erfordern. Und es fängt nicht den ersten Absatz ein, wenn es die erste Zeile in der Datei ist (d. H. Ohne vorangehende Leerzeile). Aber es behandelt Situationen, in denen mehr als eine leere Zeile zwischen Absätzen vorhanden ist.

    
Herbert Sitz 23.07.2011 00:24
quelle
1

Beide Probleme könnten viel leichter gelöst werden als von anderen vorgeschlagen.

Um das erste Problem der Nummerierung der Absätze zu lösen, sind die folgenden zwei Schritte sind reichlich.

  1. Absätze einrücken (Tabs verwenden, hier).

    %Vor%
  2. Fügen Sie die Absatznummerierung ein (siehe auch meine Antwort zu die Frage bei der Ersetzung mit dem Zähler ).

    %Vor%

Das zweite Problem beim Erstellen von Index erfordert einige Skripts, um zu sein gelöst von Vim bedeutet nur. Unten ist die Auflistung einer kleinen Funktion, WordParIndex() , die nach Absätzen ausgeführt werden soll, sind nummeriert gemäß der Beschreibung des ersten Problems.

%Vor%

Der Rückgabewert der Funktion WordParIndex() ist der Zielindex Wörterbuch. Um die Textdarstellung am Ende eines Puffers anzuhängen, führen Sie

aus %Vor%     
ib. 23.05.2017 12:34
quelle

Tags und Links