Zeilenumbruch in Vim (Erhaltung der Einrückung)
Ich war gerade auf der Suche an dieser Beitrag, die beschreibt, wie wickeln, ganze Wörter in vim. Die akzeptierte Lösung war diese:
:set formatoptions=l
:set lbr
Nimmt diesen text (tabs angezeigt werden als \t):
*Inside of window *Outside of window
|---------------------------------------|
|\t\tthis is a like of text that will wr|ap here
|\t\tcan you see the wrap |
| |
|---------------------------------------|
Dieser führt ein Verhalten wie diese (Registerkarten angezeigt als \t):
*Inside of window *Outside of window
|---------------------------------------|
|\t\tthis is a like of text that will |
|wrap here |
|\t\tcan you see the wrap |
| |
|---------------------------------------|
Ich würde aber gerne neu definieren diese Funktion. Ich möchte die umschlossene Linie haben die gleiche Anzahl von Registerkarten vor, dass die Linie oben ist plus eins. Ie:
*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?
- +1 für die Mühe, genommen, um die Frage so klar wie möglich.
- Wollen Sie die text-zu-soft-wrap an den Rand des Fensters, oder hart umbrochen werden, wenn die Linie erreicht eine bestimmte Länge? Ich denke, Sie wollen, schwer-Verpackung (wo ein Zeilenumbruch wird eingefügt, in die Sie Ihren text nach dem Wort "wird"), aber es ist schwer zu sagen, aus Ihrem Beispiele.
- Ich bin hauptsächlich daran interessiert, softwrapping aber ein hardwrapping Lösung wäre auch akzeptabel.
- Die von Ihnen gewünschte Funktionalität ist derzeit nicht gebaut, um Vim. Es gibt einen patch, der nahe kommt, jedoch: groups.google.com/group/vim_dev/web/vim-patches (es ist #15, "Korrekt Einzug umbrochenen Zeilen").
- Related: VimCasts hatte eine nette episode, die auf der Verwendung von externen unix-Dienstprogramme, dieses problem zu behandeln: vimcasts.org/e/18
- dein link ist kaputt
- Ich könnte mich irren, aber ich denke, die OP ist zu Fragen, Zeilenumbruch, keine word-Formatierungen. Wenn ich mit par auf, zum Beispiel, mein php-code, wird es brechen mein lange Funktionen in zwei.
- Schauen Sie sich die Antworten auf diese Fragen für die info, die auf eine bestimmte Vim
breakindent
patch: stackoverflow.com/questions/759577/... - mögliche Duplikate von Smart Wickeln Sie Sie in Vim
- Ich denke, das ist ein Duplikat von stackoverflow.com/questions/1204149/smart-wrap-in-vim?rq=1
- Aus superuser: Versionen von vim - >= 7.4.354 nun auch diese Funktion.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den breakindent patch hat, was Sie suchen. Ich habe Sie erfolgreich angewendet, indem Sie die Anweisungen in diesem thread gefunden:
Patch Vim mit der breakindent patch auf OS X mit Homebrew
Insbesondere echristopherson Homebrew Formel.
Ich weiß, dieser thread ist alt, aber es ist beliebt bei google und ich stieß ihn mehrere Male, wenn Sie versuchen, eine Lösung zu finden.
EDIT: Dieser patch ist nun enthalten, mit vim als patch 7.4.338. Siehe: https://retracile.net/blog/2014/07/18/18.00
Auf Yosemite (Mac OS X), ich verwendet snowbound ' s Befehl mit hombrew:
brew install macvim --with-features=huge --override-system-vim --HEAD
Funktionierte dies nicht, wenn die Frage war ursprünglich gefragt, aber als der Juni 25, 2014, dies funktionieren wird. (Vorausgesetzt, Sie aktualisieren Sie Ihre vim-version, die neuer als das Datum)
Hinzufügen, um Ihre .vimrc:
... Und das ist es!
--
Einige Leute (mich eingeschlossen) teilen sich eine einzige .vimrc auf mehreren Computern. In diesem Fall ist es wichtig, diese Linie robust sein (zur Vermeidung von lästigen Fehlermeldungen). Dies ist ein wenig besser:
Diese Weise, wenn Sie auf eine frühere version von vim, die Sie nicht erhalten eine Fehlermeldung.
if has("patch-7.4.354")
Die besten du gehst zu bekommen, ist die
showbreak
option, die eine Feste Zeichenfolge vor jeder umbrochenen Zeile (ich benutzeset showbreak=...
).:help 'showbreak'
, Nein, Sie können nicht –showbreak
ist nur eine Zeichenfolge.Ich bin einverstanden mit der Antwort, dass sagt 'showbreak' ist die beste option. Showbreak in der Regel nicht der Sie von nicht druckbaren Zeichen (z.B. Leerzeichen oder Tabulatoren) in der showbreak string, so wie in der Regel verwendet, es wird nur geben Sie eine Anzeige am linken Rand, d.h., kein echtes Einzug. Das ist nicht so toll, da Hauptziel der OP ist, denke ich, zu geben umbrochenen Zeilen einen Einzug, halten Sie Sie von unübersichtlich linken Randbereich und auf der Suche wie die Linien Ihrer eigenen.
Also eine Möglichkeit zum hinzufügen einer (hässlichen) Einzug mit showbreak ist, benutzen Sie einfach eine Menge von Zeichen .e.g, ":set showbreak=>--------------->". Dies resultiert in etwas, das aussieht wie dieses:
Eine bessere alternative könnte es sein, dass die Verwendung von geschützten Leerzeichen (vorausgesetzt, Ihr die Instanz der Vim ist unicode-aktiviert), von denen jeder können Sie direkt in das showbreak string mit der Tastenkombination Strg-v,160. So können Sie eine showbreak Zeichenfolge, die leer auf der linken Seite und wirken wie ein wahres Einzug. E. g., ":set showbreak=. . . . . . . . . . >>", wo jedes". " im Befehl ist eigentlich ein geschütztes Leerzeichen eingegebenen Zeichen durch drücken von Strg-V,160. So können Sie am Ende mit einem wrap, das ist schön eingerückt, wie dieses:
Du hast noch nicht die Fähigkeit zum variieren der Ebene der Einzug nach Einzug der vorherigen Zeile, aber mindestens Sie bekommen saubere Einrücken von umbrochenen Zeilen ohne viele visuelle Unordnung am linken Rand des Fensters. Es könnte noch sein, Verwirrung, wenn Einzug einer umschlossenen Linie ist weniger als der Beginn einer eigentlichen Linie, aber dies könnte vielleicht vermieden werden, indem die showbreak "Einzug" sehr groß (D. H., größer als jede Gedankenstrich Häufig in Ihrem code), aber immer noch klein genug, dass es bietet genug Platz für leserliche umbrechen von text. Für viele Verwendungen, denke ich, ein showbreak Einzug von 40 oder 50 Räume würde das ziemlich gut.
:set showbreak=\ \ \ \
. Funktioniert immer noch nicht für Tabletten, aber.