Ich habe mir gerade diesen Beitrag angesehen, in dem beschrieben wird, wie ganze Wörter in vim eingeschlossen werden. Die akzeptierte Lösung war folgende:
:set formatoptions=l
:set lbr
Welches nimmt diesen Text (Registerkarten werden als \ t angezeigt):
*Inside of window *Outside of window
|---------------------------------------|
|\t\tthis is a like of text that will wr|ap here
|\t\tcan you see the wrap |
| |
|---------------------------------------|
Dies führt zu einem Verhalten wie diesem (Registerkarten werden als \ t angezeigt):
*Inside of window *Outside of window
|---------------------------------------|
|\t\tthis is a like of text that will |
|wrap here |
|\t\tcan you see the wrap |
| |
|---------------------------------------|
Ich möchte diese Funktion jedoch neu definieren. Ich möchte, dass die umbrochene Zeile die gleiche Anzahl von Registerkarten enthält, die die obige Zeile plus eins enthält. Dh:
*Inside of window *Outside of window
|---------------------------------------|
|\t\tthis is a like of text that will |
|\t\t\twrap here |
|\t\tcan you see the wrap |
| |
|---------------------------------------|
Irgendwelche Ideen?
Antworten:
Der Breakindent-Patch hat das, wonach Sie suchen. Ich habe es erfolgreich mithilfe der Anweisungen in diesem Thread angewendet:
Patch Vim mit dem Breakindent-Patch unter OS X mit Homebrew
Insbesondere die Homebrew-Formel von Echristopherson.
Ich weiß, dass dieser Thread alt ist, aber er ist bei Google beliebt und ich bin mehrmals darauf gestoßen, als ich versucht habe, eine Lösung zu finden.
BEARBEITEN: Dieser Patch ist jetzt in vim als Patch 7.4.338 enthalten. Siehe: https://retracile.net/blog/2014/07/18/18.00
Unter Yosemite (Mac OS X) habe ich den Befehl snowbound mit hombrew verwendet:
quelle
brew install macvim --with-features=huge --override-system-vim --HEAD
Dies hat nicht funktioniert, als die Frage ursprünglich gestellt wurde, aber ab dem 25. Juni 2014 wird dies funktionieren. (Angenommen, Sie aktualisieren Ihr vim auf eine neuere Version als dieses Datum.)
Fügen Sie Ihrer .vimrc hinzu:
Und das ist es!
- -
Einige Leute (ich eingeschlossen) teilen eine einzelne .vimrc auf mehreren Computern. In diesem Fall ist es wichtig, dass diese Leitung robust ist (um störende Fehlermeldungen zu vermeiden). Das ist etwas besser:
Auf diese Weise erhalten Sie keine Fehlermeldung, wenn Sie eine frühere Version von vim verwenden.
quelle
if has("patch-7.4.354")
Das Beste, was Sie bekommen werden, ist die
showbreak
Option, die eine feste Zeichenfolge vor jede umbrochene Zeile setzt (ich verwendeset showbreak=...
).quelle
:help 'showbreak'
, nein, du kannst nicht -showbreak
ist nur eine Zeichenfolge.Ich stimme der Antwort zu, dass "Showbreak" die beste Option ist. Mit Showbreak können Sie normalerweise keine nicht druckbaren Zeichen (z. B. Leerzeichen oder Tabulatoren) in die Showbreak-Zeichenfolge einfügen. Wie normalerweise verwendet, erhalten Sie nur einen Indikator am linken Rand, dh keinen echten Einzug. Dies ist nicht großartig, da das Hauptziel von OP meiner Meinung nach darin besteht, umschlossenen Linien einen Einzug zu geben, damit sie nicht den linken Randbereich überladen und wie eigene Linien aussehen.
Eine Möglichkeit, einen (hässlichen) Einzug mit showbreak hinzuzufügen, besteht darin, einfach viele Zeichen zu verwenden, z. B. ": set showbreak => --------------->". Dies führt zu etwas, das so aussieht:
Eine bessere Alternative könnte darin bestehen, nicht unterbrechende Leerzeichen zu verwenden (vorausgesetzt, Ihre Instanz von Vim ist Unicode-fähig), von denen jedes mit der Schlüsselfolge von Strg-V, 160 in die Showbreak-Zeichenfolge eingegeben werden kann. Auf diese Weise können Sie eine Showbreak-Zeichenfolge eingeben, die auf der linken Seite leer ist und als echter Einzug erscheint. ZB ": setze showbreak = ..... >>" wobei jedes '.' im Befehl befindet sich tatsächlich ein nicht unterbrechendes Leerzeichen, das durch Drücken von Strg-V, 160 eingegeben wird. Auf diese Weise erhalten Sie eine Umhüllung, die wie folgt gut eingerückt ist:
Sie haben immer noch keine Möglichkeit, die Einrückungsstufe entsprechend dem Einzug der vorherigen Zeile zu variieren, aber zumindest erhalten Sie einen sauberen Einzug der umbrochenen Zeilen ohne viel visuelle Unordnung am linken Fensterrand. Es kann immer noch zu Verwirrung kommen, wenn der Einzug einer umbrochenen Zeile kleiner ist als der des Beginns einer tatsächlichen Zeile. Dies kann jedoch vermieden werden, indem der Showbreak "Einzug" ziemlich groß gemacht wird (dh größer als jeder Einzug, der üblicherweise in Ihrem Code vorkommt ), aber immer noch klein genug, um genügend Platz für lesbares Umbrechen des Textes zu bieten. Für viele Zwecke würde ein Showbreak-Einzug von 40 oder 50 Leerzeichen dies ziemlich gut tun.
quelle
:set showbreak=\ \ \ \
. Funktioniert jedoch immer noch nicht für Registerkarten.