vim Zeilenumbruch mit Einzug


20

Vim / gvim bricht lange Zeilen wie folgt um:

000000000000000000000000000000000000|
00000000000000                      |
    11111111111111111111111111111111|
111111111111111111                  |
    22222222222222222222222222222222|
222222222222222222                  |
        3333333333333333333333333333|
3333333333333333333333              |

Gibt es eine Möglichkeit, Vim dazu zu bringen, diese Zeilen wie folgt umzubrechen:

000000000000000000000000000000000000|
 00000000000000                     |
    11111111111111111111111111111111|
     111111111111111111             |
    22222222222222222222222222222222|
     222222222222222222             |
        3333333333333333333333333333|
         3333333333333333333333     |

Ich möchte, dass die umbrochene Linie ein wenig hinter dem Einzug beginnt, an dem diese Linie begonnen hat. (Nur um klar zu sein, ich spreche von Zeilenumbruch, nicht von Textbreite.)

Ich möchte, dass der Einzug der Zeile beim Zeilenumbruch berücksichtigt wird, damit die Codestruktur nicht durch umgebrochene Zeilen verborgen wird.

Antworten:


17

UPDATE: Diese Funktionalität ist in Version 7.4.338 verfügbar, Sie möchten jedoch Version 7.4.354 oder höher .


Anscheinend erfordert dies einen Patch für Vim . Es gibt einen Patch von Vaclav Smilauer aus dem Jahr 2007. Ich habe den Patch aktualisiert , um mit Vim 7.2.148 von Fedora 11 zu arbeiten. Aber es scheint die Aufgabe zu erfüllen.


1
Da Fedora Updates für Vim veröffentlicht, aktualisiere ich den Patch. Die neuesten Informationen finden Sie unter retracile.net/wiki/VimBreakIndent .
Rückzug

Bonuspunkte für jemanden, der erklären kann, wie dies mit MacVim funktioniert.
Donut

Wo ist der Patch? Diese Seite verlinkt nicht auf eine, die ich sehen kann
puk

@puk: Entschuldigung, ein großes Software-Upgrade hat einige Link-Positionen geändert. Ich habe die jetzt behoben.
Rückzug

1
Ab heute (25. Juni 2014) ist der Breakindent-Patch offiziell Teil von Vim 7.4 - er wird durch die Patches 338 und
345

14

In Ihrer .vimrc:

set wrap               " soft-wrap lines

" requires +linebreak compile-time option (not in the 'tiny' and 'small' builds); check your :version
set showbreak=----->   " prefix for soft-wrapped lines (no actual line break character)
"set linebreak          " soft-wrap lines only at certain characters (see :help breakat)

" If you like line numbers, you may want this instead:
"set number
"set showbreak=------>\  " line up soft-wrap prefix with the line numbers
"set cpoptions+=n        " start soft-wrap lines (and any prefix) in the line-number area

Oder geben Sie einfach eine :set showbreak=----->beliebige Sitzung ein.

Als Referenz mein Forschungspfad (Vim 6.2): :help 'wrap'-> :help 'linebreak'-> ( :help 'showbreak'-> :help 'cpoptions', :help 'breakat')


Sehr cool, aber nicht wirklich das, was ich gemeint habe. Du hast es ein bisschen wörtlicher genommen, als ich beabsichtigt hatte, also meine Schuld. Ich werde sehen, ob ich das klären kann.
Rückzug

1

Zur Lösung Ihrer Frage können Sie zwei Parameter festlegen vimrc:

Um die Zeilen mit dem gleichen Einzug zu brechen: set breakindent

Und ein Leerzeichen zum Einrücken von Zeilen in Zeilenumbrüchen: let &showbreak=' '

Es wird so funktionieren:

111111111111111|
 11111111111111|
 11111         |
222222222222222|
 222222222222  |
333333333333333|
 33333         |

0

Nicht die perfekte Antwort, nach der Sie suchen, aber hier ist, was ich tue, um Vims Mangel an angemessener Einrückung zu umgehen.

Zuerst laden Nathanael Kanes indent Führung (optional) , da es zeigt , besser , was Einrückungsebene Sie sind, bis zu dem Punkt , wo Sie tabwidths einstellen können nur zwei Räume sein!

Zweitens ordnen Sie eine Tastenkombination zu, um den Zeilenumbruch umzuschalten. Ich habe mir für 'wrap' ('w' ist zum Speichern) wie so auf 'r' gesetzt

:noremap <leader>r :set nowrap! <CR>

Dann habe ich immer einen Zeilenumbruch, da es ästhetischer ist, und ich schalte es schnell ein, wenn ich die Zeile bearbeiten muss.


0

Die übelriechende "Problemumgehung", die ich derzeit verwende, besteht darin, im Präfix einen festen, aber großen Einzug zu machen. Es sieht gut aus, solange diese feste Einrückung größer ist als die Einrückung der umbrochenen Linie, was die meiste Zeit der Fall ist.

" 'showbreak'   : string to put before wrapped screen lines
set sbr=\ \ \ \ \ \ \ \ \ \ \ \ \ \|\ 
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.