2013-08-16 4 views
8

Ich benutze vim verbergen Funktion, um meine Latex-Dateien in einer etwas lesbareren Form anzuzeigen.Kombinieren vim's falten und verbergen Feature

Außerdem benutze ich das vim-latex Plugin, das Falten für die mathematischen Umgebungen erzeugt, die dann das Etikett und den Anfang des Inhalts der Umgebung zeigen.

Beispiel: Die Umgebung Mathematik in reinem Latex-Code wie folgt aussieht:

\begin{align} 
    \xi = \cos \alpha 
    \label{eqn:test} 
\end{align} 

der conceal-Funktion des vim verwenden, ist es angezeigt, wie

\begin{align} 
    ξ = \cos α 
    \label{eqn:test} 
\end{align} 

Wenn vim jetzt die Falte schafft es, Anzeigen als

+-- 4 lines: align (eqn:test): \xi = \cos \alpha 

Meine Frage ist jetzt: Ist es möglich, vim dazu zu bringen, das Verborgene auf die Beschreibung der Falten anzuwenden, so dass es wie unten aussieht?

+-- 4 lines: align (eqn:test): ξ = \cos α 
+1

+1 für die Anzeige verbergen, das ist völlig neu für mich! – Jonatan

+0

Noch nie gehört, vor dieser Frage zu verbergen! Vielen Dank! – imslavko

+1

@ Jonatan jedes Mal, wenn wir ': h etwas' sehen wir verbergen Syntax und verbergen Hervorhebung. Weil vim help ft die Syntax verschleiert hat. Z.B. ': h etwas' und dann 'V' dann' jjjjjj ... ', bis du die versteckten Sachen siehst. (zB Links) vim help buffer hat 'cocu = nc' und' cole = 2'. – Kent

Antwort

2

Im Allgemeinen ist die foldtext und verbergen konnte kombiniert werden. Dies muss jedoch von Ihnen selbst implementiert werden, indem Sie der versteckten Logik folgen.

Die Option foldtext definiert den Text, der beim Schließen eines Falzes angezeigt werden soll. Der Wert der Option könnte eine vim-Funktion oder ein Ausdruck sein. so konnten wir ziemlich viel Änderung am Originaltext vornehmen.

Verbergen. normalerweise: Wenn das X-Muster übereinstimmt, zeige Y anstelle von X an. So könnten wir eine Funktion schreiben, die Faltlinie lesen, die verschachtelten Syntaxmuster prüfen, wenn die Linie mit einer übereinstimmt, falls True, dann diese übereinstimmenden Teile entfernen und anzeigen das Zeichen. Wir setzen diese Funktion als Wert von foldtext Option. Natürlich nur für bestimmte Dateitypen.

Zum Hervorheben können diese beiden Gruppen für den Falttext verwendet werden.

Folded  line used for closed folds 
FoldColumn 'foldcolumn' 

Es ist was ich mir vorstellen kann. Wenn jemand einen besseren/einfacheren Weg hätte, es zu tun, bin ich froh zu lernen. zum Beispiel könnte eine eingebaute Funktion, die ich nicht kenne, in dieser Situation helfen.

+0

Danke für die Info. Im Grunde müsste ich einen Filter für die Falttext-Funktion der Latex-Suite schreiben und diesen als neuen Falttext verwenden. Gibt es eine Möglichkeit, den Syntaxvergleich von vim für die von einer Funktion zurückgegebene Zeichenfolge zu verwenden, oder müsste ich das gesamte Matching selbst implementieren? –

+0

@SimonL. wie ich in der Antwort geschrieben habe. AFAIK Ich glaube nicht, dass Vim das Ding out of box liefert. – Kent