Konfigurieren Sie, welche Spalte `gq` umschließt?


9

Wenn Sie gqeinen Bewegungsbefehl verwenden, wird der durch den Bewegungsbefehl beschriebene Text standardmäßig in 79 Spalten umgebrochen. (Ich bin relativ neu in vi/ vimdaher kenne ich die richtige Terminologie nicht.) Wie kann ich diese Spaltenanzahl so konfigurieren, dass sie stattdessen eine andere Anzahl von Spalten enthält?

Angenommen, ich habe diesen Text:

This is text for illustration.

Ich möchte in der Lage sein, die Wrap-Spalte auf 29 zu konfigurieren, sodass, wenn sich mein Cursor in der Zeile befindet und ich ihn ausführe, gqiper transformiert wird in:

This is text for
illustration.

Ich verwende gVim unter Ubuntu GNOME 17.04, wenn das einen Unterschied macht.


BEARBEITEN: Ich suche nach einer Möglichkeit, bestimmte Textabschnitte manuell in die angegebene Zeilenlänge zu umbrechen, ohne andere zu beeinflussen, da es in einigen Fällen in Ordnung ist, das Limit zu überschreiten. So erweitern Sie das vorherige Beispiel, wenn mein Dokument folgendermaßen aussieht:

This is text for illustration.

This is some other text for illustration.

Und ich laufe gqipmit meinem Cursor in der ersten Zeile, ich möchte bekommen:

This is text for
illustration.

This is some other text for illustration.

Wenn ich dann anfange, in eine neue Zeile darunter zu tippen, möchte ich, dass diese Zeile vom Limit ebenfalls nicht betroffen ist.

Mein Anwendungsfall ist das Schreiben von LaTeX-Dokumenten: Ich möchte bei Bedarf Prosaabschnitte in eine bestimmte Anzahl von Spalten einschließen können, aber in bestimmten Fällen, in denen ich lange Gleichungen oder Tabellen schreibe, möchte ich, dass diese Zeilen Bleib länger als das Limit.

Antworten:


5

Sie können dies tun , indem Sie textwidthund das Entfernen tvon formatoptions.

set textwidth=29
set formatoptions-=t

Sie müssen auch die qOption aktiviert haben, formatoptionsum sie verwenden zu können gq. Es scheint immer für mich aktiv zu sein, aber Sie möchten vielleicht ein hinzufügen set formatoptions+=q, um auf der sicheren Seite zu sein.

Sollte kein Problem mit Ihrem aktuellen Anwendungsfall sein, aber die cOption schließt Kommentare automatisch um. Wenn Sie dies nicht möchten, tun Sie dies set formatoptions-=c.

Weitere Informationen finden Sie unter:

:help formatoptions " Not much info.
:help fo-table      " All the options in detail.

0

Es gibt zwei Möglichkeiten, dies zu tun: Festlegen 'textwidth'der Breite Ihres Textes in Zeichen oder Spalten; Einstellung 'wrapmargin'auf die Breite des rechten Randes in Zeichen oder Spalten. So wickeln Sie Ihren Text beispielsweise in eine Breite von 29 Zeichen oder Spalten ein:

set textwidth=29

Sehen

:help 'textwidth`
:help 'wrapmargin'
:help 10.7

Vielen Dank für Ihre Antwort, aber das ist nicht genau das, wonach ich gesucht habe. Ich möchte in der Lage sein, einige Textabschnitte manuell fest zu verpacken, ohne andere zu beeinflussen. Bei beiden Optionen wird der von mir eingegebene neue Text automatisch fest umbrochen. Ich werde die Frage aktualisieren, um dies besser zu erklären.
jdw1996

Vim hat keine eingebaute Möglichkeit, dies zu tun. Der gqBefehl sieht nicht das Festlegen der Umbruchbreite pro Aufruf vor. es folgt textwidthund textwidthgilt für den gesamten Puffer, nicht nur für bestimmte Zeilen. Wenn Sie die Abschnitte, die Sie umbrechen möchten, manuell umbrechen können, können Sie eine Funktion schreiben, die: den aktuellen Wert von speichert textwidth; eingestellt textwidthauf 29; gqauf den ausgewählten Zeilen ausführen ; Stellen Sie den Wert von wieder her textwidth. Weisen Sie diese Funktion dann zu formatexpr. Alternativ können Sie ein externes Programm verwenden, um beispielsweise fmtausgewählte Zeilen zu formatieren.
Garyjohn

OK, ich verstehe. Ich werde eine solche Funktion schreiben. Vielen Dank!
jdw1996
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.