2010-04-21 6 views
6

Gibt es eine Möglichkeit, Text in Vim zu formatieren, der unterstrichene Überschriften berücksichtigt?Vim: Text umbrechen ("gq"), ohne die unterstrichenen Überschriften zu ändern

In Markdown gibt es zwei Arten der Darstellung Schriften:

#Level 1 heading 
##Level 2 heading 
###Level 3 heading 

und für Stufe 1 & 2 nur:

Level 1 heading 
=============== 

Level 2 heading 
--------------- 

Ich bin begeistert von der Unterstreichungen Stil, wie ich denke, es liest besser.

Wenn ich Abschlags in Vim komponieren mit, sagen wir, :set textwidth=72, würde Ich mag Lage sein, das gesamte Dokument mit gggqG neu zu formatieren, aber es behandelt diese unterstrichen Schriften wie Absätze und quetscht sie zusammen auf einer Linie. Also, wenn ich mit dem folgenden begonnen:

Lorem ipsum 
=========== 

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 

Nach gq auf der gesamten Passage läuft, würde ich mit etwas am Ende wie folgt:

Lorem ipsum =========== 

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod 
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim 
veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea 
commodo consequat. 

Gibt es eine Möglichkeit, dass ich Vim verhindern kann, von der Formatierung die unterstrichenen Überschriften?

Ich nehme an, dass es eine Lösung geben muss entweder formatexpr oder formatprg. Ich habe die Dokumentation für par studiert, und obwohl es sehr mächtig ist, sieht es so aus, als ob dies nicht eines seiner Merkmale ist. Ich frage mich also, ob es ein anderes externes Programm gibt, das mit formatprg verwendet werden könnte, das Markdown versteht, oder wenn dies stattdessen mit vimscript mit der formatexpr Einstellung erreicht werden kann.

Antwort

6

Eine Möglichkeit, dass sorta Werke die Unterstreichungszeichenfolgen an die comments Variable hinzuzufügen ist.

Wenn Ihre Unterstreichungs Strings eine feste Größe sind, können Sie nur diejenigen hinzu:

:set comments+=:---------------,:=============== 

Wenn sie variable Größe (mehr als eine) sind:

:set comments+=n:--,n:== 

Mit mehr-als- Man erlaubt einem Paragraphen, mit einem einzelnen - oder = zu beginnen und verhindert, dass nachfolgende Zeilen mit der Kommentarzeichenfolge vorangestellt werden.

Entfernen Sie die + oben, um Kommentare nur auf diese Zeichenfolgen zu setzen, anstatt sie hinzuzufügen.

In einigen Fällen wird die Formatierung unerwartet ausgeführt (z. B. Unterstreichungen in aufeinanderfolgenden Zeilen). Ich bin mir sicher, dass es einen passenderen Weg gibt, dies zu tun, aber hoffentlich wird es dir helfen.

:h comments 
:h format-comments 
:h formatoptions 
:h fo-table 
+0

Das fühlt sich irgendwie hackisch an, aber solange das 'q' Flag in der' formatoptions' Einstellung enthalten ist, funktioniert es gut. Meine Unterstreichungszeichen entsprechen normalerweise der Länge des Textes in der obigen Zeile. Daher habe ich die Einstellung für die variable Größe verwendet. Danke für die Hilfe. Zusätzlich zu den Hilfe-Referenzen in der Antwort fand ich das hilfreich: [': help 30.6'] (http://vimdoc.sourceforge.net/htmldoc/usr_30.html#30.6) – nelstrom

0

Zumindest können Sie einige Makro dafür einrichten.

z. irgendwie auf dem ersten Absatz Postion der Text mit der Suche nach dem ersten schlagzeilen Unterstrichen dann nach unten bewegen 2 Zeilen, dann visuallí den Bereich zum nächsten Unterstrich wählen minus Zeile 3, dann formatieren:

qa/^===========$/jjv/^===========$/-3<CR>gqq 

Jetzt können Sie verwenden Ihr a Makro.

HTH