Bedeutung von "Absatz" für TeX-Eingabe ändern?


8

Ich schreibe LaTeX-Code, der viele Abschnitte wie diesen enthält

\begin{definition}
blah blah blah ...
...
\end{definition}    

Im normalen Text gq]mag ich es sehr , alles schön neu zu verpacken. In einem Blockabschnitt wie dem oben genannten wird auch der Befehl end umschlossen, den ich lieber in einer separaten Zeile behalten möchte.

Gibt es eine Möglichkeit, vim mitzuteilen, dass eine Zeile, die beginnt, \endeinen Absatz beendet? Oder gibt es einen anderen Formatierungsbefehl, den ich verwenden kann (ich habe ihn <F8>zugeordnet gq], es macht mir nichts aus, ihn neu zu definieren?

Antworten:


6

Eine Möglichkeit hierfür ist das benutzerdefinierte Textobjektie ( innerhalb der Umgebung ), das an verschiedenen Stellen verfügbar ist: z. B. im Plugin vimtex oder mit vim-textobj-latex (und es gibt andere). Mit dieser Funktionalität wird der Befehl rewrap zu:

gqie

oder

gwie

(um die Cursorposition beizubehalten).

Wenn Sie nur Text von der aktuellen Textposition (ich sehe, dass dies Ihr Anwendungsfall ist) bis zum Absagende neu formatieren möchten , können Sie wahrscheinlich mit dem folgenden Konstrukt auskommen (keine Plugins erforderlich):

gq/\(^\s*$\|\\end\)

Dies wird entweder in eine leere Zeile oder in eine Zeile mit dem \endSchlüsselwort formatiert , je nachdem, was zuerst eintritt. Sie können also diese Zuordnung verwenden:

:nnoremap <F8> gq/\(\\end\\|^\s*$\)<CR>

gqiemacht das, was ich will, wenn in einem begin ... end-Block im Haupttextkörper versucht wird, alles bis \ end {document} zu verpacken - gibt es eine Möglichkeit, es anzuweisen, bei der nächsten leeren Zeile anzuhalten?
Bristol

Nun, außerhalb einer Umgebung - vielleicht die Standardeinstellung gqap?
VanLaser

In der aktualisierten Antwort finden Sie eine mögliche F8Neuzuordnung.
VanLaser

Ich nehme an, ich habe irgendwo einen Tippfehler, da Folgendes nicht funktioniert : :map <F8> gq/\(^$\|^[%]$\|^\\end\)<CR>. Kann mir jemand sagen, was ich falsch mache? Ich versuche, eine vollständig leere Zeile ( ^$), eine Zeile mit nur einem% -Kommentarzeichen ( ^[%]$) oder eine Zeile ab \end( ^\\end) abzugleichen.
Bristol

Ich denke, Sie müssen \\|als Trennzeichen verwenden, anstatt \|beim Mapping.
VanLaser
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.